fastlane match とは
fastlaneアクションの1つで、iOS用の証明書を管理・共有するための仕組みです。
Easily sync your certificates and profiles across your team
A new approach to iOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues.
なぜ証明書を共有する仕組みが必要なのか
Xcodeで実機向けビルドを行うには、証明書(Certificate)とProvisioning Profileが登録されている必要があります。
各開発者の環境やCIでのビルドを行う場合に、それぞれの環境で証明書とProvisioning Profileが必要になり、
環境が増えたり証明書の更新が発生した場合に、手動で配布し直すのはとても手間がかかる作業です。
証明書を新しく作成する
1. matchの初期化
fastlane match init
2. 証明書を作成する
新しくアプリを作る(Apple Dev CenterにApp IDが登録されていない)場合、下記を実行してアプリを登録します。既にApp IDが登録されている場合はスキップしてください。
fastlane produce -u ${apple_id} -a ${app_identifier} --skip_itc
以下コマンドで、証明書を作成します。リポジトリでGitを指定した場合に、途中Passphrase for Git Repo:
と尋ねられる箇所は、証明書の暗号化/復号化の際に使用するパスフレーズを指定します。
fastlane match development
証明書を更新する
更新に関しては、fastlane match init
で作成・管理された証明書が前提となります。
また、fastlane matchでは証明書を一つしか扱うことができず、証明書の更新を行うには、現在の証明書を削除してから新しい証明書を作成する必要があります。
1. 既存の証明書を削除する
fastlane match nuke
コマンドを使用します。削除対象としてdevelopment
or distribution
を指定します。
nuke
コマンドを実行すると、対象となる証明書及びProfileと、実行確認が表示されます。
fastlane match nuke development
...
+-----------------+------------+-------------+------------+
| Certificates that are going to be revoked |
+-----------------+------------+-------------+------------+
| Name | ID | Type | Expires |
+-----------------+------------+-------------+------------+
| iOS Development | XXXXXXXXXX | Development | 2020-07-10 |
+-----------------+------------+-------------+------------+
+--------------+------------+--------+-------------+------------+
| Provisioning Profiles that are going to be revoked |
+--------------+------------+--------+-------------+------------+
| Name | ID | Status | Type | Expires |
+--------------+------------+--------+-------------+------------+
| match | XXXXXXXXXX | Active | iOS | 2020-07-10 |
| Development | | | Development | |
| xxx.xxx.Xxx | | | | |
+--------------+------------+--------+-------------+------------+
...
2. 新しい証明書を作成する
fastlane match
コマンドで証明書を作成します。
fastlane match development
NOTE: 証明書を削除するにあたって、以下の点に注意しておきましょう
- AppStoreを経由しているアプリは、現在の証明書が削除されても使用できる
- AppStoreを経由していないアプリ(enterprise)は、使用できなくなる
- その他、以下リンク先の記載項目について確認しておく
共有された証明書を取得する
共有された証明書を取得するには、下記のコマンドを使用します。
readonly
オプションを付けることにより、新たに証明書・プロファイルが作成されなくなり、開発者ポータルへのアクセスを行うことなく証明書の取得が可能になります。
fastlane match development --readonly
Fastfile
に以下のようなレーンを追加しておくことで、fastlane
コマンドから証明書を取得することが可能です。
lane :cert do
match(type: "development", readonly: true)
end