I’m implementing cell CI/CD utilizing github actions for iOS testflight deployment of my ionic cell app. Some steps have been profitable, however on the step for exporting ipa, I get an error like beneath.
Run #create export choices
#create export choices
EXPORT_PLIST_PATH=$RUNNER_TEMP/ExportOptions.plist
echo -n "$EXPORT_PLIST" | base64 --decode --output $EXPORT_PLIST_PATH
xcodebuild -exportArchive -archivePath Actions.xcarchive -exportOptionsPlist $EXPORT_PLIST_PATH -exportPath $RUNNER_TEMP/export
shell: /bin/bash -e {0}
env:
JAVA_HOME: /Customers/runner/hostedtoolcache/Java_Adopt_jdk/17.0.12-7/arm64/Contents/Residence
JAVA_HOME_17_ARM64: /Customers/runner/hostedtoolcache/Java_Adopt_jdk/17.0.12-7/arm64/Contents/Residence
EXPORT_PLIST: ***
2024-08-26 09:34:10.363 xcodebuild[5528:29339] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path "/var/folders/4d/0gnh84wj53j7wyk695q0tc_80000gn/T/App_2024-08-26_09-34-10.362.xcdistributionlogs".
error: exportArchive: No signing certificates "iOS Distribution" discovered
** EXPORT FAILED **
Error Area=IDECodesignResolverErrorDomain Code=1 "No signing certificates "iOS Distribution" discovered" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedRecoverySuggestion=No "iOS Distribution" signing certificates matching workforce ID "34CM2JS34W" with a non-public key was discovered., IDEProvisioningError_UserInfoKey_IDEProvisioningErrorSpecifier=iOS Distribution, NSLocalizedDescription=No signing certificates "iOS Distribution" discovered, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorPlatform=com.apple.platform.iphoneos, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorAction=5, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorTeam=}
error: exportArchive: No signing certificates "iOS Distribution" discovered
Error Area=IDECodesignResolverErrorDomain Code=1 "No signing certificates "iOS Distribution" discovered" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedRecoverySuggestion=No "iOS Distribution" signing certificates matching workforce ID "34CM2JS34W" with a non-public key was discovered., IDEProvisioningError_UserInfoKey_IDEProvisioningErrorSpecifier=iOS Distribution, NSLocalizedDescription=No signing certificates "iOS Distribution" discovered, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorPlatform=com.apple.platform.iphoneos, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorAction=5, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorTeam=}
error: exportArchive: No signing certificates "iOS Distribution" discovered
Error Area=IDECodesignResolverErrorDomain Code=1 "No signing certificates "iOS Distribution" discovered" UserInfo={IDEDistributionIssueSeverity=3, NSLocalizedRecoverySuggestion=No "iOS Distribution" signing certificates matching workforce ID "34CM2JS34W" with a non-public key was discovered., IDEProvisioningError_UserInfoKey_IDEProvisioningErrorSpecifier=iOS Distribution, NSLocalizedDescription=No signing certificates "iOS Distribution" discovered, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorPlatform=com.apple.platform.iphoneos, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorAction=5, IDEProvisioningError_UserInfoKey_IDEProvisioningErrorTeam=}
error: exportArchive: No signing certificates "iOS Distribution" discovered
enter picture description right here
- I downloaded provisioning profile from apple account profiles (for 34CM2JS34W workforce with identify “Inside profile”
- I encoded the downloaded provisioning profile to base64 string and added it to the github secret with identify “BUILD_PROVISION_PROFILE_BASE64”.
- I downloaded certification file
.p12
from xcode settings account and did the identical factor to it as I did for provisioning profile. - The key identify I set for certification is “BUILD_CERTIFICATE”
There’s my github motion .yml file.
identify: BucketIO app Construct and Deploy
on:
push:
branches:
- mobile-staging
jobs:
build-ios:
runs-on: macos-latest
steps:
- identify: Checkout repository
makes use of: actions/checkout@v4
- identify: Set up the Apple certificates and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets and techniques.BUILD_CERTIFICATE }}
P12_PASSWORD: ${{ secrets and techniques.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets and techniques.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets and techniques.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificates and provisioning profile from secrets and techniques
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
# create non permanent keychain
safety create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
safety set-keychain-settings -lut 21600 $KEYCHAIN_PATH
safety unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificates to keychain
safety import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
safety set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
safety list-keychain -d person -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning Profiles
- identify: Arrange JDK 17
makes use of: actions/setup-java@v4
with:
java-version: '17'
distribution: 'undertake'
- identify: Set up Node.js
makes use of: actions/setup-node@v4
with:
node-version: '20'
- identify: Set up Dependencies
working-directory: BucketIO.Ionic
run: npm cache clear --force && npm set up
- identify: Set up Ionic CLI globally
working-directory: BucketIO.Ionic
run: npm set up -g @ionic/cli
- identify: Set up CocoaPods
run: sudo gem set up cocoapods
- identify: Set up iOS Dependencies
working-directory: BucketIO.Ionic/ios/App
run: pod set up
- identify: Construct BucketIO for iOS
working-directory: BucketIO.Ionic
run: |
ionic construct
npx cap sync ios
- identify: Construct app
working-directory: BucketIO.Ionic/ios/App
run: xcodebuild -workspace "App.xcworkspace" -scheme "App" clear archive -archivePath "Actions" -configuration "Launch Manufacturing"
- identify: export ipa
working-directory: BucketIO.Ionic/ios/App
env:
EXPORT_PLIST: ${{ secrets and techniques.IOS_EXPORT_PRODUCTION }}
run: |
#create export choices
EXPORT_PLIST_PATH=$RUNNER_TEMP/ExportOptions.plist
echo -n "$EXPORT_PLIST" | base64 --decode --output $EXPORT_PLIST_PATH
xcodebuild -exportArchive -archivePath Actions.xcarchive -exportOptionsPlist $EXPORT_PLIST_PATH -exportPath $RUNNER_TEMP/export
- identify: Rename the file, take away whitespace
working-directory: BucketIO.Ionic/ios/App
run: |
echo Export listing contents
ls /Customers/cobemacmini/ios-runner/_work/_temp/export/
mv "/Customers/cobemacmini/ios-runner/_work/_temp/export/App.ipa" "/Customers/cobemacmini/ios-runner/_work/_temp/export/App.ipa"
ls /Customers/cobemacmini/ios-runner/_work/_temp/export/
- identify: Decode auth. api key file and reserve it
working-directory: BucketIO.Ionic/ios/App
env:
API_KEY_BASE64: ${{ secrets and techniques.APPSTORE_API_PRIVATE_KEY }}
run: |
ls ~/private_keys
echo -n "$API_KEY_BASE64" | base64 --decode --output ~/private_keys/AuthKey_${{ secrets and techniques.APPSTORE_API_KEY_ID }}.p8
echo "After saving: "
ls ~/private_keys
- identify: "Add file to check flight utilizing CLI"
working-directory: BucketIO.Ionic/ios/App
run: |
echo "Staring add. "
ls ~/private_keys
xcrun altool --validate-app -f /Customers/cobemacmini/ios-runner/_work/_temp/export/App.ipa -t ios --apiKey ${{ secrets and techniques.APPSTORE_API_KEY_ID }} —-apiIssuer ${{ secrets and techniques.APPSTORE_ISSUER_ID }}
xcrun altool --upload-app -f /Customers/cobemacmini/ios-runner/_work/_temp/export/App.ipa -t ios --apiKey "${{ secrets and techniques.APPSTORE_API_KEY_ID }}" —-apiIssuer "${{ secrets and techniques.APPSTORE_ISSUER_ID }}"