🚀bitrise.io for macOS app
macOSアプリのCIとしてbitrise.ioを使いはじめた。
❌ 署名エラー
初期状態でテストを実行すると、アプリケーションに署名するための証明書がbitrise.ioに登録されていないため、エラーとなる。
❌ error: No signing certificate "Mac Development" found: No "Mac Development" signing certificate matching team ID "XXXX" with a private key was found. (in target 'Tests')
✨証明書の設定
デバッグビルドで利用する Mac Developer証明書は、開発用のデバイスで動かすための証明書なので、CI上で利用できない。 そこで、Mac App Store以外でアプリケーションを配布するための Developer ID Application証明書を利用する。 (参考: Managing Your Developer Account Team)
具体的にやったことはhttps://github.com/mzp/EmojiIM/pull/5にまとめてある。
手順1: "Developer ID Application"で署名する。
automatic signingを無効にし、"Developer ID Application"証明書で署名するよう設定する。同じ設定をテスト用のターゲットに対しても行なう。
手順2: 秘密鍵をbitriseにアップロードする。
XcodeのAccountsタブから、"Developer ID Application"証明書をエクスポートする。
パスワードを設定する。
エクスポートされたp12ファイルをワークフローエディタからアップロードする。エクスポート時に指定したパスワードもここで指定する。
手順3: リリースビルドでテストする
リリースビルドに対してテストを行なうようScanfileで設定する。
workspace 'EmojiIM.xcworkspace' scheme 'EmojiIM' configuration 'Release'
手順4: Bitriseでfastlaneを使う
fastlane tools integration - Bitrise DevCenterにあるようfastlane stepをworkflowに追加する。
🏷 その他
"code object is not signed at all" errorエラーの回避
2回に1回くらい codesign
コマンドが"code object is not signed at all"というエラーで失敗する。 詳細は分からないがStack Overflowにあるように--deep
フラグを渡したら解決した。
デバッグ時にautomatic signingを使う
Build settingsの Code signing style
から指定すれば、デバッグ時にのみautomatic signingを使える。
💥様子
30回くらい失敗を連続させた。