メインコンテンツにジャンプ
CI/CD

自動Capacitor Android ビルドのGitHubアクション

How to set up a CI/CD pipeline for your Android Capacitor app using fastlane and GitHub Actions in 5 minutes

著者

マーティン・ドナディュー

ライター

バレリア

レビュアー

ジョーダン

エディター

自動 Capacitor アンドロイド ビルドと GitHub アクション

CI/CDの設定は Capacitor アプリケーションに複雑で時間のかかることがあります。ここでは、必要なことを知っておくことがおすすめです。

今後は __CAPGO_KEEP_0__ ビルドと __CAPGO_KEEP_1__ __CAPGO_KEEP_2__ を使用することをお勧めします。 Capgo Capgo CLI このFastlaneガイドは、既存の Capacitor アクションパイプラインを維持しているチーム向けに残されていますが、新しいアンドロイドビルドの場合は、 __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.

Prerequisites

__CAPGO_KEEP_0__ アカウントに管理者権限を持つアカウントを作成する

  • GitHub
  • Google Play Storeにすでに適切な署名で公開されているアプリ
  • Android署名キーとキーストアファイル
  • Google Cloud ConsoleプロジェクトでPlay Store APIが有効
  • サービスアカウントで適切な権限
  • GitHub Actionsワークフローの理解
  • Fastlane構成の知識
  • パイプラインの維持とデバッグに必要な時間

Capgo CI/CD用ビルドに Capgo を使用

Fastlane、Gradleランナー、キーストア、アップロードスクリプトのメンテナンスをスキップ Capgo ビルド CI/CDパイプラインから既存の署名済みネイティブAndroidビルドを実行します。

  • CI/CDパイプラインからすでに存在する、署名済みネイティブAndroidビルドを実行します:: Capgo をトリガーして GitHub Actions、GitLab CI、Jenkins、またはローカルスクリプトから Capgo ビルドを実行します。 npx cap sync.
  • : CI シークレットから署名します。: __CAPGO_KEEP_0__ ビルドはAndroidのキーストア、キーアライアス、パスワード、プレイコンソールサービスアカウントJSONを管理する必要がなくなるので、CI シークレットに保管してください。
  • : __CAPGO_KEEP_0__ ビルドはAndroidビルド環境を提供するので、__CAPGO_KEEP_1__ イメージ、Gradle キャッシュの問題、またはFastlane ラインを管理する必要がなくなります。: QA のために署名済みアーティファクトをダウンロードしたり、Capgo SDK を通じてリリースビルドを提出することができます。
  • 価格: Download signed artifacts for QA or submit release builds through the Capgo CLI.

Pricing

  • Capgo プランは 1 か月あたり 12 ドルから
  • : __CAPGO_KEEP_0__ ビルドを CI/CD に設定してください。
  • : __CAPGO_KEEP_0__ __CAPGO_KEEP_1__

Capgo plans start at $12/month

マニュアルセットアップガイド

ここで行う必要があります:

GitHub アクションの価格

GitHub アクションの価格

GitHub アクションは、リポジトリのタイプに基づいて無料分数を提供します:

  • パブリックリポジトリ: 1 か月あたり 2,000 分
  • プライベートリポジトリ: 1 か月あたり 2,000 分 (Linux ランナー)

プライベートプロジェクトの場合、コストは約 1 分あたり 0.008 ドルです。通常のビルド時間は 3-5 分です。

マニュアルセットアップ手順

  1. Android Keystore の作成
  2. Google Play Service Account の設定
  3. Fastlane の設定
  4. 設定 GitHub シークレット
  5. Create GitHub Actions ワークフロー

1. Android Keystoreを作成する

Android アプリを署名して公開する前に、Keystore ファイルを作成する必要があります。これは、一時的な設定です。

keytoolでKeystoreを生成する

ターミナルでこのコマンドを実行してください:

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

入力が求められます:

  • Keystoreパスワード: 強力なパスワードを選択してください(これは後で必要になります) KEYSTORE_STORE_PASSWORD)
  • Keyパスワード: 強力なパスワードを選択してください(これは後で必要になります) KEYSTORE_KEY_PASSWORD)
  • 名前、組織など:

重要な注意事項

  • セキュリティ上の理由で、これらの値を安全に保存してください。:

    • Keystoreファイルの場所(例:) my-release-key.keystore)
    • キーアライアス(例:) my-key-alias) - これを必要とします KEYSTORE_KEY_ALIAS
    • Keystore pasuword - kore o tsukau tame ni haitte imasu KEYSTORE_STORE_PASSWORD
    • パスワード - このパスワードが必要です KEYSTORE_KEY_PASSWORD
  • キーストアファイルをバックアップしてください。: 公開アプリの更新ができなくなります

  • 秘密にしましょう。: GitHub からキーストアファイルをコミットしないようにしてください。

  • 安全に保管してください: 複数のバックアップを安全な場所に保管してください

既存のキーストアを使用する

既にアプリを公開している場合は、最初に使用したキーストアを使用する必要があります。キーストアは以下の場所で見つけることができます:

  • ローカルマシンで最初にアプリをビルドした場所
  • Play Console → 設定 → アプリ署名 (Google Play App Signing を使用している場合)

2. Google Play Service Account の設定

Google Play へのアップロードを許可する GitHub Actions を実行するには、サービス アカウントが必要です。

ステップ 2.1: Google Cloud Project の作成

  1. 行きます Go to
  2. Google Cloud Console
  3. 注目するプロジェクトID

Step 2.2: Enable Google Play Developer API

  1. Google Cloud Console にアクセスし、 APIs & Services → ライブラリ
  2. Google Play Android Developer API
  3. クリック 有効

ステップ 2.3: サービス アカウントの作成

  1. 行く サービス アカウント → サービスアカウント
  2. クリック サービス アカウントを作成
  3. 詳細を入力してください
    • 名前 github-actions-uploader
    • GitHub アクションでビルドをアップロードするためのサービス アカウント
  4. クリック 作成して続行
  5. 役割の割り当てを今回はスキップ (クリック) 続行, すると 完了)

ステップ 2.4: サービス アカウント キーを作成

  1. 新しいサービス アカウントをクリックしてください
  2. 行く キー タブ
  3. クリック キーを追加 → 新しいキーを作成
  4. 選択 JSON形式 フォーマット
  5. クリック 作成
  6. JSONファイルがダウンロードされます。 安全に保存してくださいの後、必要になります

Step 2.5: Play Consoleでアクセス権を付与する

  1. Capgoのページについて Google Play Consoleに移動
  2. Capgoのページについて Setup → APIへのアクセス
  3. Under 、クリックしてくださいSetup アクセス許可を付与する サービスアカウントのために
  4. 「 アプリの権限 」タブに移動し、アプリの
  5. 「 アカウントの権限 」タブに移動し、これらの権限を付与する:
    • アプリの情報を参照し、大量のレポートをダウンロードする (読み取り専用)
    • ドラフトアプリを作成、編集、削除する
    • テストトラックにアプリをリリースする
    • 生産トラック、除外、他にトラックにアプリをリリースする
  6. クリック ユーザーを招待
  7. クリック 招待を送信

ステップ 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": "..."
}

GitHub シークレット設定のステップで、このファイルを base64 に変換します。

3. Fastlane を設定する

Create a fastlane 4. __CAPGO_KEEP_0__ シークレットを設定する Fastfile Step 2.6: JSON Keyを検証する

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

You’ll convert this to base64 in the GitHub secrets setup step.

GitHub

Step 4.1: GitHubのシークレットにアクセス

  1. GitHub
  2. クリック 設定 → シークレットと変数 → アクション
  3. クリック 新しいリポジトリシークレット

Step 4.2: 必要なシークレットを追加

__CAPGO_KEEP_0__のシークレットをそれぞれ1つずつ追加してください

PLAY_CONFIG_JSON

  1. Step 2.4でダウンロードしたサービスアカウント JSON ファイルを取ります。
  2. base64に変換してください。

macOS/Linuxの場合:

base64 service_account_key.json | pbcopy

Windows (PowerShell)の場合:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
  1. 新しいシークレットを作成し、名前に PLAY_CONFIG_JSON base64の文字列をペーストしてください。

AndroidKeyStoreファイル

  1. キーストアをbase64に変換してください。

macOS/Linuxの場合:

base64 my-release-key.keystore | pbcopy

Windows (PowerShell)の場合:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
  1. 新しいシークレットを作成し、名前に ANDROID_KEYSTORE_FILE base64の文字列をペーストしてください。

キーストアキー・アリース

キーストアキー名を生成する際に使用したキーアリセイを入力してください。 my-key-alias)

キーストアキー暗号化用パスワード

キーストアキー名を生成する際に使用したパスワードを入力してください。

キーストアストアパスワード

キーストア名を生成する際に使用したパスワードを入力してください。

Capacitor

アプリのパッケージ名を入力してください。 com.example.app)

アプリのパッケージ名は android/app/build.gradle under applicationId

Step 4.3: 全てのシークレットを確認する

Capacitor Android ビルド GitHub アクションを自動化するには、次の 6 つのシークレットを設定する必要があります。

  • ✅ Android 設定 JSON
  • ✅ Android キーストア ファイル
  • ✅ キーストア キー アリース
  • ✅ キーストア キー パスワード
  • ✅ キーストア ストア パスワード
  • ✅ 開発者 パッケージ名

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

機能の仕組み

  1. Git タグを作成してワークフローをトリガーする
  2. GitHub Actions はアプリをビルドします
  3. Fastlane は Google Play のベータ チャンネルにアップロードします
  4. あなたのアプリは自動的に更新されます。

ビルド時間とコスト

  • ビルド時間: 3-5 分
  • プライベートリポジトリのビルドコスト: ~$0.04
  • オープンソースプロジェクトは無料

CI/CD設定ガイド

- CI/CD プラットフォームの代替

- ライブアップデート & デプロイ

- リソース

Automatic Capacitor Android ビルドから GitHub アクションで続く

__CAPGO_KEEP_0__ を使用している場合 Automatic Capacitor Android ビルドから GitHub アクション CI/CD オートメーションを計画するには、__CAPGO_KEEP_0__ CI/CD Capgo CI/CD Capgo CI/CD Capgo Native ビルド Capgo Native ビルド Capgo 連携 Capacitorの製品ワークフローでCapgo統合 CI/CD統合 CI/CD統合の実装詳細については GitHub アクション統合 Capacitorの実装詳細についてはGitHubアクションの統合です。

Live updates for Capacitor apps

ウェブ層のバグが生じた場合、修正をアプリストアの承認待ちの日数を待たずに Capgo から配信することで、ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で進む。

ブログ最新記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。