Closed4

Cloud Managed CertificatesとGithub Actionsのメモ

Chikato TakenouchiChikato Takenouchi

そもそもCloud-Managed Certificatesは配布用証明書をAppleが管理してくれる仕組みのこと
開発用証明書は開発者自身のKeychainで管理する

大枠こちらの記事と同じだが、IPAを作成するときに署名なしで作成しているところを変更したかった
https://zenn.dev/welchi/articles/flutter-ios-ci-cd-xcode-cloud

署名なしで作成するとEntitlementsが不足してプッシュ通知などが使えなくなってしまう

Chikato TakenouchiChikato Takenouchi

CI上で開発者用証明書を入れるために手元で作成した証明書をbase64にエンコードして、Github ActionsのSecretsに埋め込んだ
これをやると年一回の更新が必要になるが、回避する方法が思い浮かばず、、

Github Actionsのフロー

上記省略

steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup App Store Connect API Private Key
        run: |
          mkdir -p ./private_keys
          echo -n "${{ secrets.APPLE_API_KEY }}" | base64 --decode --output ./private_keys/AuthKey_${{ secrets.APPLE_KEY_ID }}.p8
          echo "Authentication key path: $(pwd)/private_keys/AuthKey_${{ secrets.APPLE_KEY_ID }}.p8"     

      - name: Import Code Signing Certificates
        uses: apple-actions/import-codesign-certs@v3
        with:
          p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE }}
          p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
Chikato TakenouchiChikato Takenouchi

あとはxcodebuildを実行する

-allowProvisioningUpdatesがないとProfileが見つからないエラー吐くので注意

xcodebuild \
  -project ../hoge.xcodeproj \
  -scheme hoge \
  -configuration Release \
  -derivedDataPath ./build \
  clean archive \
  -archivePath ./build/hoge.xcarchive \
  CODE_SIGN_STYLE=Automatic \
  CODE_SIGNING_REQUIRED=YES \
  CODE_SIGNING_ALLOWED=YES \
  -authenticationKeyIssuerID "${APPLE_ISSUE_ID}" \
  -authenticationKeyID "${APPLE_KEY_ID}" \
  -authenticationKeyPath "${AUTH_KEY_PATH}" \
  -allowProvisioningUpdates
xcodebuild \
  -exportArchive \
  -archivePath ./build/hoge.xcarchive \
  -exportPath ./build \
  -exportOptionsPlist ./options_release.plist \
  -allowProvisioningUpdates \
  -authenticationKeyIssuerID "${APPLE_ISSUE_ID}" \
  -authenticationKeyID "${APPLE_KEY_ID}" \
  -authenticationKeyPath "${AUTH_KEY_PATH}" \
  CODE_SIGN_STYLE=Automatic \
  CODE_SIGNING_REQUIRED=YES \
  CODE_SIGNING_ALLOWED=YES
このスクラップは5ヶ月前にクローズされました