fastlane
match

fastlane matchの簡易使い方

fastlane matchの使い方

ドキュメントとかはここを読むといいです。
https://docs.fastlane.tools/actions/match/

概要

matchは「Easily sync your certificates and profiles across your team using git」と説明されている通り。
チームでProvisioning Profile等の管理を簡単にするためのツールです。

  1. 管理者が証明書とProvisioning Profileを作る(そしてgitに証明書等が上がる)
  2. ほかの人はreadonlyでコマンドを一回たたけばgit上の証明書とProvisioning Profileがインストールされる

という手順になります

CIなんかでもいちいち証明書の更新しなくちゃーとかいうのがなくなるので楽になります。
っていうか今は個人アカウントでもdevelopの証明書使えるのでこっちの用途が強いかも

使い方

初期設定

ドキュメントにあるように
以下のコマンドたたいてgit_urlをいれればおしまいです。

fastlane match init

証明書とprovisioning profilesの作成

以下のコマンドをたたくと証明書作成が始まります。
基本的にはユーザー名入れてログインして…
とかコンソール通りにやっていけばいいのですが、途中で【Passphrass for Git repo】とパスワードを聞かれる場所があります。
ここは、gitのパスワードとかではなく新しく作る証明書のパスワードになってます。
また、これはチームに共有する必要があるので注意してください。

このパスワードは環境変数「MATCH_PASSWORD」で先に設定しておくこともできます。

fastlane match development

※developは各必要なmethod_typeに置き換えてください。adhocとかenterpriseとかapp-storeとか

さてこれで証明書とprovisioningprofileが作成できました。
ちなみに新しく増やしたりしたい場合は同じコマンドで追加していけばOKです。

このコマンドたたいた時点で古いprovisioningは作り直してくれそうなこと書いてありました。(未確認です)

ちなみにこんな形でコマンド内で効かれる内容を引数で指定してあげることもできます。

export MATCH_PASSWORD="itunesのパスワード"

fastlane match development --git_full_name gitのユーザー名 --username itunesのユーザー名 --app_identifier ${AppId} --git_url 管理用のgitのurl 

チームに共有とインストール

後はチームに共有したりCi回すときに以下のコマンドたたいたりするだけです。

readonlyオプションを入れるとgitへのアクセスだけになるのでDeveloperProgramへのログインが必要なくなります。
(=パスワードを知る必要がなくなる)

証明書のパスワードは必要なのでちゃんと共有しましょうね。

# Git リポジトリ設定
fastlane match init
fastlane match development --readonly

gymと組み合わせて

match使ってからgym使うと証明書のインストールとかの手順がスキップされるのでとても楽ができます。
Xcode9からはこれが必要になりました。

新しいapp idを作るとき

新しいapp idでprovisioning profileを作りたいときはproduceと合わせます。

fastlane produce -a ${app_identifier} --skip_itc

このようにすることで新しいapp_identifierが作られるのでそのあとに再度matchをするとよさそうです。
(ちなみにエラー文にちゃんとのっています。)

注意

このmatchで作られたprovisioning profileやcerファイルはなんかよくわからないけど加工がしてあって手動でインストールしても動きません。
読込失敗するはずです。
これに関してはドキュメントに詳しい記述が追記されているのでそちらを参照してください。

手動でインストールする用のprovisioning profileがほしい場合以下のコマンドで取得できます。

fastlane sigh download_all [--team_id チーム名] -o . -u itunesユーザー名 [--skip_install]