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

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

5分でAndroidCapacitorアプリのCI/CDパイプラインを設定する方法:fastlaneとGitHubアクションを使用する

記事のクレジット

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

執筆者

ヴァレリア

レビュアー

ジョーダン

編集者

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

CI/CDの設定はCapacitorアプリケーションに複雑で時間のかかる作業です。ここでは、必要な情報をご紹介します。

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

開始する前に、次の設定が必要です。

Capgoアカウントの管理者権限を持つアカウント

  • A GitHub account with admin access
  • Android署名キーとキーストアファイル
  • Google Cloud ConsoleプロジェクトでPlay StoreのCapgo機能を有効にした
  • APIアプリケーション
  • サービスアカウントの適切な権限
  • GitHub Actions ワークフローの理解
  • Fastlane の構成の知識
  • パイプラインの維持とデバッグに必要な時間

Capgo Build for CI/CD by Capgo

CI/CD の __CAPGO_KEEP_1__ から __CAPGO_KEEP_0__ Build を実行します。 Capgo Build __CAPGO_KEEP_0__ Build

  • 既存の CI/CD パイプラインからネイティブ Android ビルドを実行します。: Trigger Capgo Build from GitHub Actions, GitLab CI, Jenkins, or local scripts after your web build and npx cap sync.
  • : __CAPGO_KEEP_0__ Build を __CAPGO_KEEP_1__ Actions、GitLab CI、Jenkins、またはローカルスクリプトからトリガーします。CI シークレットから署名します。
  • ネイティブランナーのメンテナンスが必要ありません: Capgo ビルドは、管理されたAndroidビルド環境を提供するため、SDK イメージ、Gradleキャッシュの問題、またはFastlaneのレーンを管理する必要がありません。
  • アーティファクトと提出: QA用に署名されたアーティファクトをダウンロードしたり、Capgo CLI を通じてリリースビルドを提出することができます。

価格

  • Capgo プランは月額12ドルから始まります
  • __CAPGO_KEEP_0__ プランは月額12ドルから始まります
  • OTA更新と約15回のネイティブビルドが含まれます

Set up Capgo Build in CI/CD

__CAPGO_KEEP_0__ ビルドをCI/CDに設定する

手動設定ガイド

GitHub Actions Pricing

GitHub アクション

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

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

プライベート プロジェクトの場合、コストは約 $0.008/分です。通常のビルドは 3-5 分かかります。

手動セットアップ手順

  1. Android Keystore の作成
  2. Google Play Service Account の設定
  3. Fastlane の設定
  4. GitHub シークレットの設定
  5. 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にコミットしないでください

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

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

If you have already published your app, you must use the same keystore you used initially. You can find it:

  • Your local machine where you first built the app
  • Your Play Console → Setup → App signing (if using Google Play App Signing)

2. Set up Google Play Service Account

To allow GitHub Actions to upload builds to Google Play, you need a service account.

Step 2.1: Create Google Cloud Project

  1. Go to Google Cloud Console Create a new project or select an existing one
  2. Note the project ID
  3. Step 2.2: Enable Google Play Developer Service

Step 2.2: Enable Google Play Developer API

  1. 2. Set up Google Play Service Account APIs & ServicesLibrary
  2. 「Google Play Android Developer API」を検索してください
  3. クリック 有効

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

  1. ここに移動 IAM & Adminサービス アカウント
  2. クリック サービス アカウントを作成
  3. 詳細を入力してください
    • Name: github-actions-uploader
    • Description: “Service account for GitHub Actions to upload builds”
  4. Service account for __CAPGO_KEEP_0__ Actions to upload builds Click
  5. Create and Continue Skip role assignment for now (clickContinue , then)

Done

  1. Step 2.4: Service Account Keyの作成
  2. Click on the newly created service account Go to Keys タブ
  3. クリック キーを追加新しいキーを作成
  4. 選択 JSON形式 クリック
  5. 作成 JSONファイルがダウンロードされます -
  6. このファイルを安全に保存してください これが必要になります, you’ll need it later

Step 2.5: Google Play Consoleにアクセス許可を与える

  1. Go to Google Play Console
  2. Go to セットアップAPI access
  3. __CAPGO_KEEP_0__ アクセス許可 下のサービス アカウント , アクセス許可を与える
  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": "..."
}

この 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

  1. ステップ 4.1: GitHub シークレットにアクセスする
  2. クリック 設定シークレットと変数アクション
  3. クリック 新しいリポジトリシークレット

ステップ 4.2: 必要なシークレットを追加する

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

PLAY_CONFIG_JSON

  1. ステップ 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形式の文字列を貼り付けてください

ANDROID_KEYSTORE_FILE

  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形式の文字列を貼り付けてください

KEYSTORE_KEY_ALIAS

キーストアを生成したときに使用したキーアリセイサを入力してください my-key-alias)

KEYSTORE_KEY_PASSWORD

Capgoでキーストアを生成するときに設定したパスワードで新しいシークレットを作成してください

KEYSTORE_STORE_PASSWORD

Capgoでキーストアを生成するときに設定したパスワードで新しいシークレットを作成してください

開発者用パッケージ名

Capgoでキーストアを生成するときに設定したパスワードで新しいシークレットを作成してください com.example.app)

アプリのパッケージ名を入力してください (例:) android/app/build.gradle パッケージ名は applicationId

以下の

ステップ 4.3: シークレットをすべて確認する

  • 6 つのシークレットを設定してください:
  • ✅ PLAY_CONFIG_JSON
  • ✅ ANDROID_KEYSTORE_FILE
  • ✅ キーストアキー
  • ✅ キーストアストア
  • ✅ 開発者パッケージ名

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

Capgo Builderのしくみ

  1. 作成
  2. GitHub Actions builds your app
  3. Gitタグを作成してワークフローをトリガー
  4. __CAPGO_KEEP_0__ Actionsはアプリをビルド

FastlaneはGoogle Playのベータチャンネルにアップロード

  • アプリは自動的に更新されます。
  • プライベートリポジトリのコスト: ~$0.04あたり1回のビルド
  • オープンソースプロジェクトは無料

CI/CD設定ガイド

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

ライブ更新とデプロイ

リソース

Keep going from Automatic Capacitor Android build with GitHub actions

If you are using Automatic Capacitor Android build with GitHub actions to plan CI/CD automation, connect it with 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 Integration for the implementation detail in CI/CD Integration, and GitHub Actions Integration Capgoの実装詳細についてはGitHub Actions Integration.

Capgoの自動Capacitor Androidビルドから続けて__CAPGO_KEEP_1__アクションで進めます。

ウェブ層のバグが実行中の場合、Capgo を使用して修正を配信するのではなく、数日間待ってアプリストアの承認を待つのではなく、ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路に残ります。

マーティンから人間のサポートを受けます。

今すぐ始めましょう

最新のブログ記事

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