angular – iOS testflight CI/CD implementation goes failed with certification failed

0
27
angular – iOS testflight CI/CD implementation goes failed with certification failed


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 }}"

LEAVE A REPLY

Please enter your comment!
Please enter your name here