Posted at

fastlane match で既存の証明書とプロファイルを使用する

More than 1 year has passed since last update.


  • 既存のプロジェクトに fastlane で CD 環境を構築したい

  • 証明書とプロファイルの管理は match を使いたい

  • 既存の証明書とプロファイルを使いたいけど公式ドキュメントには新規作成しか載っていない

ということで既存の証明書とプロファイルを match で管理する方法をまとめました

諸々の環境構築は既にされている前提です


手順

証明書だけ既存のものを使いたい場合はプロファイルに関する手順をスキップ


1. 必要なファイルを用意する


  • キーチェーンアクセスを起動して管理したい証明書(.cer)と秘密鍵(.p12)をそれぞれエクスポートする


    • ファイル名は証明書 ID にする

    • 証明書 ID は Developer Console から該当証明書の Download ボタンにカーソルを当てた際に表示される URL の certificateId=xxxx の xxxx の部分



  • 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)





以上


参考