CI/CDの設定はCapacitorアプリケーションに複雑で時間のかかる作業です。ここでは、必要な情報をご紹介します。
推奨設定: Capgoビルドを使用します。
Capacitorのビルドを使用することをお勧めします。 CapgoとCLIを使用してCapgoのネイティブビルドを実行します。 このFastlaneガイドは、既存のCapacitorアクションパイプラインを維持しているチーム向けに残されていますが、新しいAndroidビルドには__CAPGO_KEEP_1__と__CAPGO_KEEP_2__を使用することをお勧めします。これにより、Fastlane、Gradleランナー、キーストア、アップロードスクリプトを自分で維持する必要がなくなります。 This Fastlane guide is kept for teams maintaining existing GitHub Actions pipelines, but new Android builds should use the Capgo CLI so you do not have to maintain Fastlane, Gradle runners, keystores, and upload scripts yourself.
開始する前に、以下の設定が必要です。
__CAPGO_KEEP_0__アカウントに管理者権限が付与されていること
- A GitHub account with admin access
- Android署名キーとキーストアファイル
- Google Cloud ConsoleプロジェクトにPlay Store __CAPGO_KEEP_0__が有効になっていること
- API
- 適切な権限を持つサービスアカウント
- GitHub Actions ワークフローの理解
- Fastlane の構成の知識
- パイプラインの維持とデバッグに必要な時間
Capgo Build for CI/CD by Capgo
__CAPGO_KEEP_1__ によって CI/CD に __CAPGO_KEEP_0__ Build Capgo Build __CAPGO_KEEP_0__ Build は、既存の CI/CD パイプラインから次のようになります:
- __CAPGO_KEEP_0__ Build は、パイプラインと一緒に機能します: Capgo Build を GitHub Actions、GitLab CI、Jenkins、またはローカル スクリプトからトリガーして、Web ビルド後に
npx cap sync. - __CAPGO_KEEP_0__ Build から署名: Android キーストア、キー アリセ、パスワード、Play Console サービス アカウント JSON を CI シークレットに保持します
- No native runner upkeep: Capgo Build provides maintained Android build environments, so you do not have to manage SDK images, Gradle cache issues, or Fastlane lanes.
- Artifacts and submission: Capgo CLI でダウンロードした署名済みアーティファクトを QA に提出するか、リリースビルドを Capgo CLI で提出します。
Pricing
- Capgo plans start at $12/month
- : Capgo のプランは $12/月から始まります。
- : OTA の更新と約 15 のネイティブビルドが含まれます。
: Capgo のプランでは、追加のビルド分数は 1 分あたりクレジットで請求されます。
: Capgo Build を CI/CD にセットアップするには
: マニュアルセットアップガイド
GitHub Actions Pricing

GitHubアクションは、リポジトリの種類に基づいて無料分数を提供します:
- パブリックリポジトリ: 1 か月あたり 2,000 分
- プライベートリポジトリ: 1 か月あたり 2,000 分 (Linux ランナー)
プライベートプロジェクトの場合、コストは約 $0.008/分です。通常のビルド時間は 3-5 分です。
手動セットアップ手順
- Android Keystoreを作成する
- Google Play Service Accountを設定する
- Fastlaneを設定する
- GitHubシークレットを設定する
- GitHubアクションのワークフローを作成する
1. Android Keystoreを作成する
Android アプリを署名して公開する前に、キーストアファイルを作成する必要があります。これは一度限りの設定です。
keytool でキーストアを生成する
ターミナルで次のコマンドを実行してください:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
次の値を入力するよう求められます:
- キーストアパスワード: 強力なパスワードを選択してください (これを必要とします)
KEYSTORE_STORE_PASSWORD) - キー パスワード: 強力なパスワードを選択してください (これを必要とします)
KEYSTORE_KEY_PASSWORD) - 名前、組織など: ここに情報を入力してください
重要な注意事項
-
これらの値を安全に保存してください:
- キーストアファイルの場所 (例、
my-release-key.keystore) - キーストアの別名 (例、
my-key-alias) - これが必要ですKEYSTORE_KEY_ALIAS - キーストアのパスワード - これが必要です
KEYSTORE_STORE_PASSWORD - キーストアのパスワード - これが必要です
KEYSTORE_KEY_PASSWORD
- キーストアファイルの場所 (例、
-
キーストアファイルをバックアップしてください: アプリを公開した場合に失うと、アプリをアップデートできません
-
秘密にしましょう: キーストアファイルをgitにコミットしないでください
-
安全な場所に保管してください: 複数のバックアップを安全な場所に保管してください
代替: 既存のキーストアを使用する
あなたがアプリをすでに公開している場合、最初に使用した同じキーストアを使用する必要があります。見つけることができます:
- ローカルマシンで最初にアプリをビルドした場所
- Play Console → 設定 → アプリ署名 (Google Play App Signing を使用している場合)
2. Google Play Service Account の設定
To allow GitHub Actions to upload builds to Google Play, you need a service account.
ステップ 2.1: Google Cloud Project の作成
- Google Cloud Console に移動 新しいプロジェクトを作成または既存のプロジェクトを選択
- プロジェクト ID をメモしておく
- ステップ 2.2: Google Play Developer Console の有効化
Step 2.2: Enable Google Play Developer API
- In Google Cloud Console, go to サービス & サービス → ライブラリ
- 「Google Play Android Developer API」を検索してください
- クリック 有効
ステップ 2.3: サービス アカウントを作成
- 以下の手順に進みます IAM & Admin → サービス アカウント
- クリック サービス アカウントを作成
- 詳細を入力してください:
- Name:
github-actions-uploader - Description: “Service account for GitHub Actions to upload builds”
- Name:
- 「__CAPGO_KEEP_0__」のサービスアカウントを使用して、GitHub Actionsでビルドをアップロードするためのサービスアカウントです。 Click
- 作成し続ける 今は役割の割り当てをスキップする (Continue 、)
Done
- ステップ 2.4: サービスアカウント キーを作成する
- 新しく作成したサービスアカウントにクリック Go to "Keys" タブ
- クリック キーを追加 → 新しいキーを作成
- 選択 JSON形式 クリック
- 作成 JSONファイルがダウンロードされます -
- このファイルを安全に保存してください これが必要になりますこれが必要になります
Step 2.5: Google Play Console へのアクセス許可を付与
- Go to Google Play Console
- Go to セットアップ → API access
- __CAPGO_KEEP_0__ アクセス 下でサービス アカウント , アクセス許可を付与
- サービス アカウントのために アプリの権限 タブにアプリを追加してください
- タブ アカウントの権限 タブに権限を付与してください
- アプリの情報を表示および大量のレポートをダウンロードする (読み取り専用)
- ドラフトアプリを作成、編集、削除する
- テストトラックにアプリをリリースする
- 生産トラック、除外、他にトラックにアプリをリリースする
- クリック ユーザーを招待
- クリック 招待を送信
ステップ 2.6: JSON キーを検証する
ダウンロードした JSON ファイルは次のようになります。
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "github-actions-uploader@your-project-id.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "..."
}
この JSON を GitHub シークレット設定のステップで base64 に変換します。
3. Fastlane を設定する
プロジェクトのルートディレクトリにフォルダを作成し、次の内容を含むファイルを追加します。 fastlane 4. __CAPGO_KEEP_0__ シークレットを設定する Fastfile キーストアとサービス アカウントの JSON を取得したら、安全に __CAPGO_KEEP_0__ に保存する必要があります。
default_platform(:android)
KEYSTORE_KEY_ALIAS = ENV["KEYSTORE_KEY_ALIAS"]
KEYSTORE_KEY_PASSWORD = ENV["KEYSTORE_KEY_PASSWORD"]
KEYSTORE_STORE_PASSWORD = ENV["KEYSTORE_STORE_PASSWORD"]
platform :android do
desc "Deploy a beta version to the Google Play"
private_lane :verify_changelog_exists do |version_code: |
changelog_path = "android/metadata/en-US/changelogs/#{version_code}.txt"
UI.user_error!("Missing changelog file at #{changelog_path}") unless File.exist?(changelog_path)
UI.message("Changelog exists for version code #{version_code}")
end
private_lane :verify_upload_to_staging do |version_name: |
UI.message "Skipping staging verification step"
end
lane :beta do
keystore_path = "#{Dir.tmpdir}/build_keystore.keystore"
File.write(keystore_path, Base64.decode64(ENV['ANDROID_KEYSTORE_FILE']))
json_key_data = Base64.decode64(ENV['PLAY_CONFIG_JSON'])
# Get previous build number and increment
previous_build_number = google_play_track_version_codes(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
track: "internal",
json_key_data: json_key_data,
)[0]
current_build_number = previous_build_number + 1
sh("export NEW_BUILD_NUMBER=#{current_build_number}")
# Build the app
gradle(
task: "clean bundleRelease",
project_dir: 'android/',
print_command: false,
properties: {
"android.injected.signing.store.file" => "#{keystore_path}",
"android.injected.signing.store.password" => "#{KEYSTORE_STORE_PASSWORD}",
"android.injected.signing.key.alias" => "#{KEYSTORE_KEY_ALIAS}",
"android.injected.signing.key.password" => "#{KEYSTORE_KEY_PASSWORD}",
'versionCode' => current_build_number
})
# Upload to Play Store
upload_to_play_store(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
json_key_data: json_key_data,
track: 'internal',
release_status: 'completed',
skip_upload_metadata: true,
skip_upload_changelogs: true,
skip_upload_images: true,
skip_upload_screenshots: true,
)
end
end
ステップ 4.1: GitHub シークレットにアクセスする
リポジトリを GitHub にアクセスします
Step 4.1: Access GitHub Secrets
- Step 4.1: GitHub シークレットにアクセスする
- クリック 設定 → シークレットと変数 → アクション
- クリック 新しいリポジトリシークレット
ステップ 4.2: 必要なシークレットを追加する
各シークレットを 1 つずつ追加してください:
PLAY_CONFIG_JSON
- ステップ 2.4 でダウンロードしたサービスアカウントの JSON ファイルを取得してください
- base64 に変換してください:
macOS/Linux の場合:
base64 service_account_key.json | pbcopy
Windows (PowerShell) で
[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
- 新しいシークレットを作成し
PLAY_CONFIG_JSONにbase64形式の文字列を貼り付け
ANDROID_KEYSTORE_FILE
- キーストアをbase64形式に変換:
macOS/Linux で
base64 my-release-key.keystore | pbcopy
Windows (PowerShell) で
[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
- 新しいシークレットを作成し
ANDROID_KEYSTORE_FILEにbase64形式の文字列を貼り付け
KEYSTORE_KEY_ALIAS
キーストアのキー アリースを使用したときに作成したキーストアのキー アリースを入力 my-key-alias)
KEYSTORE_KEY_PASSWORD
新しいシークレットを作成して、キーストアを作成するときに設定したパスワードを指定してください
KEYSTORE_STORE_PASSWORD
新しいシークレットを作成して、キーストアを作成するときに設定したパスワードを指定してください
開発者用パッケージ名
新しいシークレットを作成して、自分のアプリのパッケージ名を指定してください(例:) com.example.app)
パッケージ名は android/app/build.gradle の applicationId
ステップ 4.3: シークレットをすべて確認する
6 つのシークレットが正しく設定されていることを確認してください:
- ✅ PLAY_CONFIG_JSON
- ✅ ANDROID_KEYSTORE_FILE
- ✅ KEYSTORE_KEY_ALIAS
- ✅ キーストアキー パスワード
- ✅ キーストアストア パスワード
- ✅ 開発者パッケージ名
5. GitHub Actions ワークフローを作成
作成 .github/workflows/build-upload-android.yml:
name: Build and Deploy Android App
on:
push:
tags:
- '*'
jobs:
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build app
run: npm run build
- name: Sync Capacitor
run: npx cap sync
- name: Setup Java
uses: actions/setup-node@v5
with:
distribution: 'zulu'
java-version: '17'
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Run Fastlane
uses: maierj/fastlane-action@v3.1.0
env:
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
DEVELOPER_PACKAGE_NAME: ${{ secrets.DEVELOPER_PACKAGE_NAME }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
with:
lane: android beta
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: android-release
path: ./android/app/build/outputs/bundle/release/app-release.aab
retention-days: 10
機能の仕組み
- Gitタグを作成してワークフローをトリガー
- GitHub Actionsはアプリをビルド
- FastlaneはGoogle Playのベータチャンネルにアップロード
- アプリは自動的に更新
ビルド時間とコスト
- ビルド時間: 3-5分
- プライベートリポジトリのコスト: ~$0.04あたり1回のビルド
- オープンソースプロジェクトは無料
関連記事
CI/CD設定ガイド
- 自動Capacitor iOSビルドとGitHubアクション - iOS CI/CD設定の完了
- 自動ビルドとリリースとGitHubアクション - CI/CDパイプラインのフルチュートリアル
- GitHubアクションで開発と本番ビルドを管理 - 環境管理
代替CI/CDプラットフォーム
- GitLab CIでビルド - Android用GitLab代替
- CodeMagicでビルド - CodeMagicの設定ガイド
ライブ更新とデプロイ
- Capgo ライブ更新ドキュメント - アプリにOTA更新を追加
- CI/CD統合とCapgo - パイプラインにライブ更新を統合
リソース
Keep going from Automatic Capacitor Android build with GitHub actions
Capgoを使用している場合 Capgoの自動Capacitor AndroidビルドとGitHubアクション CI/CDの自動化を計画するには、CapgoのCI/CDと接続する必要があります Capgo CI/CD for the product workflow in Capgo CI/CD, Capgo Native Builds for the product workflow in Capgo Native Builds, Capgo Integrations for the product workflow in Capgo Integrations, CI/CD統合の実装詳細 Capgoのアクション統合 GitHub Actions Integration Capgoの実装詳細についてはGitHub Actions Integration.