14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

株式会社DiverseAdvent Calendar 2021

Day 22

社内の複数のiOSアプリの証明書をどう管理するのか

Last updated at Posted at 2021-12-22

はじめに

この記事は株式会社Diverse Advent Calendar2021 22日目の記事です。

直近、社内で扱っている複数のiOSアプリの証明書の管理方法を整えたのでその内容を共有しようと思います。

弊社ではプロダクトごとにチームが別れており、それぞれのチームのエンジニアが手動で証明書の更新などの対応をしていました。

そのため証明書の管理が属人化してしまい、管理者が特定の人に偏っていました。
また新しくジョインしたメンバーは誰がどのように証明書を管理しているのか分かりづらい状況でもありました。

この課題を解決するために導入したのが fastlane match です。

※この記事ではfastlaneの詳しい使い方については触れません。
詳細については公式ドキュメントと以下の記事をご覧ください。
公式ドキュメント
fastlane match を使用して iOS の証明書管理を行う
[iOS]大規模プロダクトにfastlane matchを導入した話

fastlane matchとは

簡単に説明するとfastlane matchは証明書の作成と削除がコマンドのみで行うことができるツールです。
作成した証明書は以下のストレージに保存され、開発者はここからfastlane matchを使って証明書を取得します。
・Git repo
・Google Cloud
・Amazon S3

社内の複数のアプリの証明書をどう管理するのか

###1. App Store Connectに共有アカウントを作成する

fastlane matchで証明書を作成する際に使うアカウントを作成します。
ここで使用するアカウントは社内の誰にも依存しないアカウントを使用するのが望ましいです。

※作成するアカウント権限はApp Manager以上の権限が必要です。

###2. GitHubに証明書管理用のリポジトリを作成する
社内のiOSアプリの証明書を1つのリポジトリで管理することにしました。
ios-certificatesのような名前でプライベートリポジトリを作成します。

###3. 各アプリごとにfastlane matchを導入する

社内の各iOSアプリのリポジトリをクローンしてそれぞれのプロジェクトでfastlane matchを導入します。
※ fastlane matchだけを導入することも可能ですが、先にfastlaneを導入し、作成されたfastlaneディレクトリでmatchの導入をすることでfastlaneに関連するファイルが集約されるのでわかりやすいかなと思います。

fastlane init

cd /fastlane

fastlane match init

Matchfileは以下のようになります。

// 2で作成したGitHubのリポジトリのURL
git_url("git@github.com:xxx/ios-certificates.git") 

storage_mode("git")

type("development")

app_identifier(["アプリのBundleID"])

// 1で作成したアカウントのAppleID
username("apple developerのアカウント")

app_identifierは各プロジェクトごとに違いますが、それ以外は同じです。

###4. 各アプリごとにfastlane matchを実行する
Matchfileの作成を終えたらfastlane matchを実行して証明書の作成を行います。
弊社では開発用証明書はAutomatically manage signingを使っているので
adhoc, appstore用の証明書だけをmatchで作成しました。

※ 作成時に設定するパスワードは他の人がmatchで証明書を取得する際に必要なので忘れないようにしてください。
※ 1passwordなどのセキュアに社内のメンバーに共有できるツールで管理するのが良いと思います。

// 配布用証明書の作成
fastlane match adhoc

// 申請用証明書の作成
fastlane match appstore

上記を実行すると指定したGitHubのリポジトリに作成した証明書とプロビジョニングプロファイルが保存されます。
スクリーンショット 2021-12-22 19.33.14.png

証明書の更新

更新は削除と作成を組み合わせて行います。

###1. 期限切れの証明書を削除

fastlane match nuke distribution

上記のコマンドで期限切れの証明書を削除します。

###2. 各プロジェクトごとに証明書,プロビジョニングプロファイルを作成

nukeで削除した証明書を参照しているプロビジョニングプロファイルも再度作り直す必要があるので各プロジェクトで以下の対応を行います。

// 配布用証明書の作成
fastlane match adhoc

// 申請用証明書の作成
fastlane match appstore

デバイスの追加

新しいデバイス追加した際は --force_for_new_devices オプションをつけることで更新が可能です。

fastlane match adhoc --force_for_new_devices

おわりに

fastlane matchを使うことで煩わしい証明書の管理をとても楽にすることができます。
fastlneを導入したことでコマンドを叩くだけで作成、更新、削除ができるので、READMEなどに手順を記載しておけば開発に関わるエンジニアなら誰でも楽に証明書の管理ができるようになったと思います。

またCIを組む際にもこのfastlane matchはとても便利なので積極的に使っていきたいツールですね!!

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?