コンテンツへスキップ

iOSビルド

Capgoの専用Macインフラストラクチャを使用して、iOSアプリをビルドしてTestFlightおよびApp Storeに送信します。

⚠️ 最初にiOS認証情報を設定してください

必須: ビルドする前に、iOS認証情報を保存する必要があります。

iOS認証情報を設定 →

iOSビルドは、オンデマンドでプロビジョニングされた専用Macマシン(Scaleway Mac minis M4)で実行されます:

  • ハードウェア: macOS 15を搭載したApple Silicon Mac minis
  • ビルドツール: Fastlaneを使用したXcode(カスタムCapgo設定)
  • 分離: 各ビルドは個別のmacOSユーザーアカウントとして実行
  • 有効期間: マシンは24時間リースされ、自動的にクリーンアップされます
  • セキュリティ: すべてのファイルとユーザーアカウントは、マシン解放後に削除されます

iOSでビルドする前に、以下が必要です:

  • XcodeがインストールされたMacコンピュータ(初期証明書設定用)
  • 有効なApple Developerアカウント(年間$99)
  • npx cap open iosでアプリが正常にビルドされる

ビルドに応じて、以下のいずれかの証明書タイプが必要です:

ビルドタイプ必要な証明書プロビジョニングプロファイル
DevelopmentApple Development開発用プロファイル
Ad HocApple DistributionAd Hocプロファイル
App StoreApple DistributionApp Storeプロファイル

iOS証明書とプロビジョニングプロファイルの取得方法

Section titled “iOS証明書とプロビジョニングプロファイルの取得方法”

クイック概要:

  1. 証明書署名要求(CSR)の作成

    • Macでキーチェーンアクセスを開く
    • キーチェーンアクセス → 証明書アシスタント → 認証局に証明書を要求に移動
    • メールアドレスと名前を入力し、「ディスクに保存」を選択
    • .certSigningRequestファイルを保存
  2. Apple Developer Portalで証明書を生成

    • Apple Developer証明書に移動
    • 「+」をクリックして新しい証明書を作成
    • 証明書タイプを選択(App Storeビルドの場合はiOS Distribution)
    • CSRファイルをアップロード
    • 証明書(.cerファイル)をダウンロード
  3. 証明書を.p12としてエクスポート

    • ダウンロードした.cerファイルをダブルクリックしてキーチェーンに追加
    • キーチェーンアクセスで、「自分の証明書」の下にある証明書を見つける
    • 右クリック → 「Apple Distribution…」をエクスポート
    • .p12形式で保存し、パスワードを設定(このパスワードを保存してください!)
  4. プロビジョニングプロファイルの作成

    • Apple Developerプロファイルに移動
    • 「+」をクリックして新しいプロファイルを作成
    • プロファイルタイプを選択(本番ビルドの場合はApp Store)
    • App IDを選択
    • 作成した証明書を選択
    • .mobileprovisionファイルをダウンロード

3. App Store Connect APIキー(推奨)

Section titled “3. App Store Connect APIキー(推奨)”

TestFlightへの自動送信のために、APIキーを作成します:

  1. App Store Connect → ユーザーとアクセス → キーに移動
  2. 「+」ボタンをクリックして新しいキーを作成
  3. 名前を付け(例: “Capgo CI”)、「Developer」ロールを選択
  4. .p8ファイルをダウンロード(1回しかダウンロードできません!)
  5. キーID発行者IDをメモ

ビルド前に以下の認証情報を設定してください:

Terminal window
# iOS署名(必須)
BUILD_CERTIFICATE_BASE64="<base64-encoded-p12-certificate>"
BUILD_PROVISION_PROFILE_BASE64="<base64-encoded-mobileprovision>"
P12_PASSWORD="<certificate-password>"
# App Store Connect API(送信用)
APPLE_KEY_ID="ABC1234567"
APPLE_ISSUER_ID="00000000-0000-0000-0000-000000000000"
APPLE_KEY_CONTENT="<base64-encoded-p8-key>"
# 追加設定
APP_STORE_CONNECT_TEAM_ID="1234567890"
APPLE_PROFILE_NAME="App Store com.example.app"

証明書(.p12):

Terminal window
base64 -i YourCertificate.p12 | pbcopy

プロビジョニングプロファイル(.mobileprovision):

Terminal window
base64 -i YourProfile.mobileprovision | pbcopy

App Store Connectキー(.p8):

Terminal window
base64 -i AuthKey_ABC1234567.p8 | pbcopy

Base64文字列がクリップボードにコピーされました - 環境変数またはCI/CDシークレットに貼り付けてください。

Terminal window
npx @capgo/cli@latest build com.example.app \
--platform ios \
--build-mode debug

これにより、登録されたデバイスにインストールできる開発ビルドが作成されます。

Terminal window
npx @capgo/cli@latest build com.example.app \
--platform ios \
--build-mode release

App Store Connect API認証情報が設定されている場合、App Storeビルドを作成し、自動的にTestFlightに送信します。

name: Build iOS App
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Install dependencies
run: npm ci
- name: Build web assets
run: npm run build
- name: Sync Capacitor
run: npx cap sync ios
- name: Build iOS app
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
BUILD_CERTIFICATE_BASE64: ${{ secrets.IOS_CERTIFICATE }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.IOS_PROVISION_PROFILE }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
APP_STORE_CONNECT_TEAM_ID: ${{ secrets.TEAM_ID }}
run: |
npx @capgo/cli@latest build ${{ secrets.APP_ID }} \
--platform ios \
--build-mode release
  1. マシンプロビジョニング (1-2分)

    • Scaleway Mac miniがプロビジョニングまたは割り当てられます
    • XcodeがプリインストールされたmacOS 15
    • ブートストラップスクリプトが実行(初回使用の場合)
  2. ユーザー分離 (~10秒)

    • 一意のmacOSユーザーが作成: job-<jobId>
    • 専用ホームディレクトリ: /Users/job-<jobId>
    • 分離されたワークスペースが作成
  3. プロジェクトのセットアップ (~30秒)

    • R2からプロジェクトzipをダウンロード
    • ワークスペースに展開
    • 環境変数として認証情報を注入
  4. Fastlaneビルド (3-8分)

    • 署名証明書を含むキーチェーンが作成
    • プロビジョニングプロファイルがインストール
    • Xcodeビルドコマンドが実行
    • IPAファイルが生成
  5. App Storeへの送信 (1-2分、設定されている場合)

    • IPAをApp Store Connectにアップロード
    • TestFlightに送信
    • Apple側で処理が開始
  6. クリーンアップ (即座)

    • ユーザーアカウントが終了して削除
    • ワークスペースファイルが削除
    • 一時ファイルがクリア
  7. マシンの解放 (24時間後)

    • Macマシンが破棄
    • すべてのデータが完全に削除

iOSビルド環境には以下が含まれます:

  • macOS: 15(最新の安定版)
  • Xcode: 最新の安定版
  • Fastlane: 最新の安定版
  • CocoaPods: 最新の安定版
  • Node.js: 18.x (LTS)
  • Ruby: bundlerを使用したシステムruby

一般的なiOSビルド時間:

ビルドタイプ初回ビルド2回目以降のビルド*
デバッグ5-7分4-6分
リリース7-10分5-8分

*24時間以内に同じマシンが再利用される場合、2回目以降のビルドは高速になる可能性があります。

「Code signing failed」

  • 証明書が正しい配布タイプであることを確認
  • プロビジョニングプロファイルがApp IDと一致することを確認
  • P12_PASSWORDが正しいことを確認

「Provisioning profile doesn’t include signing certificate」

  • 証明書を含むプロビジョニングプロファイルを再生成
  • プロファイルを再ダウンロードして再エンコード

「App Store Connect authentication failed」

  • APPLE_KEY_ID、APPLE_ISSUER_ID、APPLE_KEY_CONTENTを確認
  • APIキーが失効していないことを確認
  • キーが「Developer」ロール以上であることを確認

「Build timeout after 10 minutes」

  • アプリに大きなネイティブ依存関係があるか確認
  • Podfileの最適化を検討
  • ビルドが一貫してタイムアウトする場合はサポートに連絡

すべてのビルドログがリアルタイムでストリーミングされます。これらの主要なフェーズを確認してください:

✔ Machine assigned: m-abc123
→ Creating user: job-abc123
→ Installing CocoaPods dependencies...
→ Building iOS app...
→ Code signing with certificate...
→ Uploading to App Store Connect...
✔ Build succeeded

ビルドが失敗した場合、特定のFastlane/Xcodeエラーメッセージがログに明確に表示されます。

クラウドビルドを使用する前に、必ずiOSビルドがローカルで機能することを確認してください:

Terminal window
npx cap open ios
# Xcodeでビルド

証明書やキーをリポジトリにコミットしないでください。常に以下を使用してください:

  • CI/CDシークレット(GitHub、GitLab)
  • 環境変数
  • 安全なシークレット管理

ビルドを高速化するために、package.jsonPodfile.lockがバージョン管理にコミットされていることを確認してください。

コストを最適化するためにビルド時間を監視してください:

Terminal window
# CLIは最後にビルド時間を表示します
Build succeeded in 6m 42s (13.4 billing minutes at rate)