web-dev-qa-db-ja.com

Githubアクションmacosキーチェーンアクセス

IOS CIをgithubアクションに移動しようとしていますが、いくつかのビルドの問題が発生しています。これらの問題(ファストレーンは、ジムの実行時にハングするだけです)は、マッチの使用時に発生するようです。

キーチェーン関連だと思わせるログはこちら

WARN [2019-09-26 13:46:14.52]: Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing
Check if you supplied the correct `keychain_password` for keychain: `/Users/runner/Library/Keychains/login.keychain-db`
security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.

ドキュメントでは、Sudoはパスワードなしであるため、キーチェーンについても同じであると想定しています。私は間違っているようですが、そのドキュメントには何も見つかりません。どんな助けでも大歓迎です。

[〜#〜]編集[〜#〜]

以下のLyndsey Fergusonのコメントは、ほとんどが解決策です。それらはcreate_keychainを使用してから一致させるアプローチです。キーチェーンとパスワードを指定するだけで、import_certificateを回避できました。

編集2

これを回避するために私がファストレーンで行っていることは次のとおりです

create_keychain(
        name: "actiontest_keychain",
        password: "meow",
        default_keychain: true,
        unlock: true,
        timeout: 3600,
        lock_when_sleeps: false
    )

    match(
        type: "appstore",
        readonly: is_ci,
        keychain_name: "actiontest_keychain",
        keychain_password: "meow"
    )
5
TJ Gillis

これは受け入れられる答えですが、証明書と秘密鍵がキーチェーンにどのように取り込まれるかを理解したいと思います。

これを試して:

- name: Set up keychain
    run: fastlane run create_keychain name:name_of_keychain password:chosen_password 

これでキーチェーンが作成され、使用したい場合は、chosen_passwordしかし、あなたはそれを持っています。おそらくGITHUB_X env var?

1

新しいキーチェーンを作成して、それをデフォルトとして設定することができます。

- name: Set up keychain
    run: |
      security create-keychain -p <password> build.keychain
      security default-keychain -s build.keychain
      security unlock-keychain -p <password> build.keychain
      security set-key-partition-list -S Apple-tool:,Apple: -s -k actions build.keychain
1
Yakuhzi

キーチェーンを使用してJavaを操作しようとしているため、Fastlaneを使用できません。Javaをビルドしてコード署名するGitHub Actionsの14の新しい jpackage ツール_アプリケーションネイティブバンドルなので、Yakuhziの答えを見て興奮しました。それはほとんど私にとってはうまくいきましたが、いくつかのエラーを整理する必要がありましたが、エラーメッセージがなかったので非常に困難でした:私の- workflowjpackageコマンド でハングアップしましたが、ビルドMac仮想マシンは仮想フレームバッファーでキーチェーンのロックを解除するように見えないように指示されたと想定しています。

これは私のために働いたバリエーションです。最初の3つのステップは問題ありませんでした(私は passing 私の署名証明書とその復号化パスフレーズを Github Action secrets から抽出された環境変数としてスクリプトに追加し、同じパスフレーズを使用して作成します)ビルドキーチェーン):

security create-keychain -p "$IDENTITY_PASSPHRASE" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$IDENTITY_PASSPHRASE" build.keychain

しかし、この時点で4行目を実行しようとすると、次のエラーで失敗します。

security: SecItemCopyMatching: The specified item could not be found in the keychain.

結局、私はsecurity set-key-partition-listのドキュメントを調べた後、最初の問題は-k引数にキーチェーンパスワードが必要であり、彼の場合はactionsであったに違いないことに気付きました!次のステップは、4行目を次のように修正することでした。

security set-key-partition-list -S Apple-tool:,Apple: -s -k "$IDENTITY_PASSPHRASE" build.keychain

それでもエラーが発生するので、ドキュメントをもう少し調べて、ログインキーチェーンに署名IDがないスペアのMac miniでコマンドを試しました。最終的に、コマンドがまだキーチェーンに存在しない署名キーに対してアクションを実行しようとしていることがわかりました。そのため、その行の前に署名キーをインポートする手順を移動し、それが機能し始めました。これが機能した後の完全なセクションは次のとおりです。 GitHubのスクリプト 全体を確認できます。

security create-keychain -p "$IDENTITY_PASSPHRASE" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$IDENTITY_PASSPHRASE" build.keychain

echo "$IDENTITY_P12_B64" > DS_ID_App.p12.txt
openssl base64 -d -in DS_ID_App.p12.txt -out DS_ID_App.p12
security import DS_ID_App.p12 -A -P "$IDENTITY_PASSPHRASE"

security set-key-partition-list -S Apple-tool:,Apple: -s -k "$IDENTITY_PASSPHRASE" build.keychain
1
James Elliott