- 既存のプロジェクトに fastlane で CD 環境を構築したい
- 証明書とプロファイルの管理は match を使いたい
- 既存の証明書とプロファイルを使いたいけど公式ドキュメントには新規作成しか載っていない
ということで既存の証明書とプロファイルを match で管理する方法をまとめました
諸々の環境構築は既にされている前提です
手順
証明書だけ既存のものを使いたい場合はプロファイルに関する手順をスキップ
1. 必要なファイルを用意する
- キーチェーンアクセスを起動して管理したい証明書(.cer)と秘密鍵(.p12)をそれぞれエクスポートする
- ファイル名は証明書 ID にする
- 証明書 ID は Developer Console から該当証明書の
Download
ボタンにカーソルを当てた際に表示される URL のcertificateId=xxxx
の xxxx の部分
- 証明書 ID は Developer Console から該当証明書の
- Developer コンソールから管理したいプロファイルをダウンロードする
- プロファイルの用途に合わせてファイル名をつける
用途 | ファイル名 |
---|---|
Development | Development_{AppID}.mobileprovision |
App Store | AppStore_{AppID}.mobileprovision |
Ad Hoc | AdHoc_{AppID}.mobileprovision |
In House | InHouse_{AppID}.mobileprovision |
2. match のリポジトリをクローンする
ターミナルでRubyシェルを起動
> irb
matchコマンドを使えるようにする
irb(main):xxx:x> require 'match'
matchで証明書を管理するgitリポジトリのURLを設定
irb(main):xxx:0> git_url = 'match 用リポジトリの URL'
shallow_cloneしない
irb(main):xxx:0> shallow_clone = false
decrypt用パスワードの指定
irb(main):xxx:0> manual_password = 'パスワード' // match コマンドで使用するパスワード
リポジトリをクローン
irb(main):xxx:0> workspace = Match::GitHelper.clone(git_url, shallow_clone, manual_password: manual_password)
[xx:xx:xx]: Cloning remote git repo...
[xx:xx:xx]: 🔓 Successfully decrypted certificates repo
=> "クローン先のパスが表示される"
3. エクスポートした証明書とプロファイルを配置する
- 用途にあった場所に証明書とプロファイルを配置する
- フォルダが無い場合は下の構造を参照して作る
- 不要なフォルダはわざわざ作る必要は無い
- match リポジトリの構造
├── certs
│ ├── development // Development 用証明書のフォルダ
│ ├── distribution // Production 用証明書のフォルダ
│ └── enterprise // Production 用証明書のフォルダ (Enterprise Program)
├── profiles
│ ├── adhoc // Ad Hoc 用プロファイルのフォルダ
│ │ └── AdHoc_{AppID}.mobileprovision
│ ├── appstore // App Store 用プロファイルのフォルダ
│ │ └── AppStore_{AppID}.mobileprovision
│ ├── development // Development 用プロファイルのフォルダ
│ │ └── Development_{AppID}.mobileprovision
│ └── enterprise // In House 用プロファイルのフォルダ (Enterprise Program)
│ │ └── InHouse_{AppID}.mobileprovision
├── README.md
└── match_version.txt
4. 証明書とプロファイルを Push する
pushする
irb(main):xxx:0> Match::GitHelper.commit_changes(workspace, "任意のコメント", git_url)
以上