環境
PKG ファイルを作成、署名、公証するための Github Actions ジョブを作成しています。
Apple Id アカウント(ワークフローにはユーザー名とパスワードが必要) と、秘密鍵 (暗号化された) を持つDeveloper Id Installer証明書を使用しています。どちらもシークレット (base64) として保存され、ワークフローで .p12 ファイルに変換されてから、キーチェーンに追加されます。
このジョブは、プライベート リポジトリ内のより大きなワークフローの一部であり、最初にソフトウェアから ( Pyinstallerを使用して) ファイルを生成し、次に PKG を AWS S3 バケットにエクスポートします。
実装
jobs:
[...]
pkg:
needs: [...]
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Download macos bin file
uses: actions/download-artifact@v2
with:
name: macos-bin-files
path: dist/
- name:
run: |
----- Create certificate files from secrets base64 -----
echo ${{ secrets.DEVELOPER_ID_INSTALLER_CER }} | base64 --decode > certificate_installer.cer
echo ${{ secrets.DEVELOPER_ID_INSTALLER_KEY }} | base64 --decode > certificate_installer.key
----- Create p12 file -----
openssl pkcs12 -export -name zup -in certificate_installer.cer -inkey certificate_installer.key -passin pass:${{ secrets.KEY_PASSWORD }} -out certificate_installer.p12 -passout pass:${{ secrets.P12_PASSWORD }}
----- Configure Keychain -----
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
security create-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "${{ secrets.KEYCHAIN_PASSWORD }}" $KEYCHAIN_PATH
----- Import certificates on Keychain -----
security import certificate_installer.p12 -P "${{ secrets.P12_PASSWORD }}" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
----- Generate PKG from files -----
use a macos installer script (ref: https://github.com/KosalaHerath/macos-installer-builder/tree/master/macOS-x64)
----- Sign PKG file -----
productsign --sign "${{ secrets.DEVELOPER_ID_INSTALLER_NAME }}" $INPUT_FILE_PATH $OUTPUT_FILE_PATH
- name: "Notarize Release Build PKG"
uses: devbotsxyz/xcode-notarize@v1
with:
product-path: $PATH_TO_PKG
appstore-connect-username: ${{ secrets.APPLE_ACCOUNT_USERNAME }}
appstore-connect-password: ${{ secrets.APPLE_ACCOUNT_PASSWORD }}
primary-bundle-id: 'BUNDLE_ID'
- name: "Staple Release Build"
uses: devbotsxyz/xcode-staple@v1
with:
product-path: $PATH_TO_PKG
[...]
問題
macOS ランナーに Apple 証明書をインストールするための Github Action の公式ドキュメントに従いましたが、この部分は期待どおりに機能しています。証明書をキーチェーンに追加し、それを使用してコマンドで PKG ファイルに署名できますproductsign
。
ただし、公証のために PKG を Apple に送信すると、次のエラーが返されます。
Error: Notarization status <invalid> - Package Invalid
Error: Notarization failed
私が試したこと
PKG は配布時に期待どおりに機能しているため (公証されていないため、管理者として開く必要があるだけです)、問題はパッケージの実装に関連していないようです。
さまざまなソースからのリンクに従って、コマンドラインで公証を実行しようとしました。
ただし、これらのコマンド ラインを使用しても (公証アクションを使用せずに)、PKG ファイルを公証できませんでした。
質問
パッケージの公証を試みる前に、ワークフローの何が問題になっていますか?
PS: Github Actions macos ランナーでこれを行う参照が見つかりませんでした...