想定ケース
- 諸事情により Apple Developer Portal へのアクセス権限がない
- 手元に秘密鍵、証明書、プロビジョニングのファイルはある、もしくは Keychain に取り込み済み
- ファイルで直接やりとりするのではなく、 fastlane match で管理したい
作業手順
前提
- fastlane 2.193.1
- fastlane match 導入済みで、Storage の整備や Passphrase についても設定済み
- 秘密鍵、証明書については有効なものを Keychain に取り込み済み
- プロビジョニングについては有効なものがファイルとして手元にある
秘密鍵、証明書、プロビジョニングの用意
秘密鍵と証明書を Keychain からファイルに書き出します。
この際、開発者間でやりとりする場合のように、 Keychain 上で秘密鍵と証明書を2つ選択して1つの p12 ファイルとして書き出すのではなく、秘密鍵と証明書それぞれ1つずつ選択した状態でファイルに書き出していきます。
ファイルの拡張子については、以下のように選択。
対象 | 拡張子形式 |
---|---|
秘密鍵 | .p12 |
証明書 | .cer |
秘密鍵の書き出し時にはパスワードを設定しないようにします。
書き出し時のファイル名については、 fastlane match の Storage 内でもそのまま利用されるため、気にする場合は team id
を利用してください。
同様に、プロビジョニングプロファイルのファイルについても、必要あれば app identifier
を利用したファイル名に変更しておきます。
match import で Storage に取り込み
$ fastlane match import --skip_certificate_matching true
で、 import 作業を開始します。
--skip_certificate_matching true
については、 証明書の有効性チェックやプロビジョニングの紐付けの確認のための Apple Developer Portalへのアクセスをスキップする( Apple Developer Portal にログインしない)ためのオプションとなっています。
$ fastlane match import --skip_certificate_matching true
[✔] 🚀
[09:41:00]: Successfully loaded '${path to Matchfile}' 📄
+--------------+------------------------------------------+
| Detected Values from './fastlane/Matchfile' |
+--------------+------------------------------------------+
| git_url | ${fastlane match storage repository url} |
| storage_mode | git |
| type | appstore |
+--------------+------------------------------------------+
[09:41:00]: Certificate (.cer) path:
[09:41:00]: Private key (.p12) path:
[09:41:00]: Provisioning profile (.mobileprovision or .provisionprofile) path or leave empty to skip this file:
import 作業を開始すると、 Matchfile
の読み取りが行われます。
Matchfile
に未記載 or 上書きしたい設定については、 fastlane match import
コマンド実行時のオプション指定も可能です。
この際、 type
について意図したものが設定されていることを確認してください。
(主な利用ケースでは、 Distribution 用途で adhoc
や appstore
が多いかと思います。)
未設定の場合はデフォルト値の develop
が利用されてしまいます。
その後
- 証明書( Certificate )
- 秘密鍵( Private key )
- プロビジョニング( Provisioning profile)
の順で、ファイルのパスを聞かれるため、用意したファイルのフルパスを入力します。
問題なければ作業はこれで完了です。
参照する場合
Apple Developer Portal へのアクセス権限がない前提なので、 fastlane match で参照する際には、 --readonly true
とします。
参考
irb を利用する方法もあります。