Kotlin Multiplatformプロジェクト向けiOSデリバリーパイプラインの設定
iOS 配信パイプラインの設定
このチュートリアルでは、iOSターゲットを持つKotlin Multiplatformプロジェクト向けにTeamCity Cloudをセットアップする方法を学びます。 ホストされたmacOSエージェント上でiOSアプリをビルドおよびテストするCIパイプラインを作成し、Apple署名資格情報を設定し、ビルドをTestFlightにアップロードし、GitHubリポジトリへのプッシュごとに新しいビルドを開始するプロセスを自動化します。
Kotlin Multiplatform IDEプラグインを使用すると、プロジェクトのTeamCity Cloudへの接続からiOSアプリケーションの公開まで、セットアップ全体をIDEから直接進めることができます。
このワークフローにより、TeamCity Cloudは以下の機能を提供します:
- ホストされたmacOSエージェントを提供するため、自分でMacを用意する必要がありません。
- 必要なパイプライン構成を自動的に生成します。
- ビルドに署名し、TestFlightに公開します。
- 月間のビルド時間とストレージの許容量が含まれる無料のスターティングティアを提供します。
TeamCityパイプラインの作成
IDEからCIセットアップを開始する
プロジェクトの変更をコミットしてプッシュします。CIがまだ構成されていない場合、Kotlin Multiplatform IDEプラグインはCIセットアップの開始を促すツールチップを表示します。
Configure CI をクリックします。
プラグインは、ホストされたmacOSエージェント上でiOSアプリをビルドおよびテストするために必要なファイルを生成します。これらのファイルはローカルプロジェクトに追加されますが、まだコミットされません。TeamCityプラグインがインストールされていない場合、IDEはインストールを促します。 Install TeamCity plugin をクリックし、セットアップフローに戻ります。

TeamCityプラグインは、JetBrains Marketplaceから直接インストールすることもできます。
IDEに Pipeline is ready と表示されたら、初期のパイプライン構成は完了です。 Continue をクリックし、プロンプトが表示されたら、IDEが生成されたファイルをGitに追加することを許可します。これらのファイルは、リポジトリにコミットするまでローカルに残ります。
TeamCity Cloudワークスペースの作成または接続
TeamCityでホストされたmacOSエージェント上でビルドを実行するには、Cloudワークスペースが必要です。
TeamCity Cloudの利用規約を確認し、同意します。
Create free account をクリックして、TeamCity Cloudアカウントを作成します。
TeamCity CloudはJetBrainsによってホストされており、無料のスターティングティアを提供しています。 無料ティアには月間のビルド時間とストレージの許容量が含まれており、コストをかけずにこのパイプラインを開始してテストするのに十分です。 CI/CDのニーズが高まった場合は、いつでもプランをアップグレードできます。
ブラウザで Authorize JetBrains をクリックして、統合を承認します。
TeamCityがワークスペースを作成または接続し、ビルド環境を準備します。これには通常30秒もかかりません。
iOSアプリのビルド
ワークスペースの準備ができると、IDEは自動的に TeamCity タブを開き、最初のビルドを開始します。
この最初の実行では、TeamCityはローカルにある未コミットのプロジェクトファイルを使用します。ホストされたmacOSエージェント上でiOSアプリケーションをビルドし、構成されたテストを実行します。これにより、生成されたファイルをリポジトリにコミットする前に、パイプラインが期待通りに動作することを確認できます。

自動ビルドが成功したら、Publish to TestFlight をクリックして署名とデプロイを構成します。
Apple署名とTestFlightの構成
TestFlightにビルドをアップロードするには、TeamCityにApp Store ConnectとAppleコード署名の資格情報が必要です。
App Store Connect APIキーの作成
- App Store Connectにサインインします。
- ユーザとアクセス に移動し、キー を選択します。
- アプリをアップロードするために必要な権限を持つAPIキーを作成します。
- 非公開鍵(
.p8ファイル)をダウンロードします。 - キーに対して表示される Issuer ID と キーID をメモします。
.p8 ファイルは一度しかダウンロードできないため、安全に保管してください。
Apple Distribution証明書の書き出し
- Xcodeで Settings | Accounts に移動するか、Apple Developer Portalを開き、Apple Distribution証明書を作成または探します。
- Macで キーチェーンアクセス を開き、自分の証明書 の下にある証明書を見つけます。
- 証明書を右クリックし、書き出す を選択して
.p12ファイルとして保存します。 - 書き出し用パスワードを設定し、安全に保管してください。後で必要になります。
Macを利用できない場合は、WindowsまたはLinux上のOpenSSLを使用して、証明書署名要求(CSR)を生成し、作成された証明書を
.p12ファイルに変換することができます。
IDEでApple資格情報を追加する
IDEに戻り、Add Apple signing credentials フォームを入力します。 TeamCityはこれらの値を安全なデプロイ資格情報として保存します。これらはプロジェクトのソースファイルには追加されません。
|-------------------|----------------------------------------------------------------------------------------------------------------------------------| | Issuer ID | App Store Connect API統合を識別します。 | | Key ID | 作成したAPIキーを識別します。 | | Private Key | App Store Connectからダウンロードした .p8 ファイル。 | | Team ID | Apple Developerのチーム識別子。 | | Bundle ID | アプリの固有の識別子(例: com.company.app)。アプリターゲットで設定され、App Store Connectにリストされているもの。 | | Certificate | 非公開鍵を含む .p12 配布用証明書。 | | .p12 password | 証明書を書き出す際に指定したパスワード。 |
最初のビルドをTestFlightにアップロードする
資格情報を追加すると、パイプラインに署名とデプロイのステップが含まれるようになります。
- Deploy to TestFlight をクリックします。 TeamCityがパイプラインを再実行し、署名済みのiOSビルドを作成してApp Store Connectにアップロードします。
- App Store ConnectまたはTestFlightを開き、ビルドが表示されることを確認します。
ビルドと公開の自動化
リポジトリの接続
このプロセスを自動化するには、GitHubリポジトリをTeamCityに接続し、プッシュのたびに新しいビルドがトリガーされるようにします。
- 最初のデプロイパイプラインが正常に終了したら、IDEで Connect repository をクリックします。 TeamCityがブラウザで開き、リポジトリが承認されたことを確認します。リポジトリとブランチが自動的に検出され、パイプラインにアタッチされます。
- IDEに戻り、生成されたパイプライン構成ファイルをコミットしてプッシュします。
これで、構成されたブランチに変更をプッシュするたびに、TeamCityがパイプラインをトリガーするようになります。
パイプラインの確認
これでiOSデリバリーパイプラインの準備が整いました!構成されたブランチへのプッシュごとに、TeamCityは以下を実行します:
- ホストされたmacOSエージェント上でビルドを開始する。
- Kotlin Multiplatformプロジェクトをビルドする。
- 構成されたテストを実行する。
- iOSアプリケーションに署名する。
- 新しいビルドをTestFlightにアップロードする。

Done をクリックしてセットアップフローを閉じます。
これからは、コードをプッシュするだけで、残りの処理はTeamCityが行います。
次のステップ
- セットアップをさらにカスタマイズするために、TeamCity Cloudパイプラインについて詳しく読む:プロジェクトの追加、ビルドエージェントの要件設定など。
- マルチプラットフォームアプリの公開方法を学ぶ。
- Kotlin Multiplatformアプリケーションの継続的インテグレーションのためにGitHub Actionsを構成する。
