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

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

5分で、fastlaneとGitHub Actionsを使用してAndroid Capacitor アプリのCI/CDパイプラインを設定する方法

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

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

コンテンツマーケター

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

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

__CAPGO_KEEP_0__ ビルドの使用を推奨します。 Capgo ビルドとCapgo CLIを使用します。 ネイティブCapacitorビルドのために使用します。 このFastlaneガイドは、既存のGitHubアクションパイプラインを維持しているチーム向けに残されていますが、新しいAndroidビルドの場合は、Capgo CLIを使用するようにしてください。Fastlane、Gradleランナーの、キーストア、アップロードスクリプトなどの維持を自分で行う必要がなくなります。

前提条件

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

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

Capgo ビルドは Capgo によってCI/CDされる

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

  • パイプラインと一緒に機能する: Capgo ビルドを GitHub アクション、GitLab CI、Jenkins、またはローカルスクリプトから Capgo ビルドの後ウェブビルドの後トリガーする npx cap sync.
  • CIシークレットから署名する: Androidのキーストア、キーアリセイ、パスワード、PlayコンソールサービスアカウントのJSONをCIシークレットに保持する
  • ネイティブランナーのメンテナンス: Capgo ビルドは、管理されたAndroidビルド環境を提供するため、SDK イメージ、Gradleキャッシュの問題、またはFastlaneのレーンを管理する必要がありません。
  • アーティファクトと提出: Capgo CLI から署名済みアーティファクトをダウンロードしてQAに提出するか、リリースビルドを提出してください。

価格

  • Capgo プランは月額12ドルから始まります。
  • OTA更新と約15のネイティブビルドを含みます。
  • 追加のビルド分数は、クレジット単位で分単位で請求されます。

CI/CDでCapgo ビルドを設定する

手動セットアップガイド

ここで何が必要かを確認してください。

GitHub アクションの価格

価格 GitHub アクション

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

  • __CAPGO_KEEP_0__ アクションの料金は、以下のとおりです。
  • パブリック リポジトリ: 1 か月あたり 2,000 分

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

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

  1. 手動セットアップ手順
  2. Android キーストアを作成する
  3. Google Play サービス アカウントを設定する
  4. Configure GitHub secrets
  5. GitHub シークレットを構成する

__CAPGO_KEEP_0__ アクション ワークフローを作成する

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にコミットしないでください

  • 安全な場所に複数のバックアップを保存してください代替: 既存のキーストアを使用する

Capgo

既にアプリを公開している場合は、最初に使用した同じキーストアを使用する必要があります。

  • キーストアを探すことができます:
  • ローカルマシンで最初にアプリをビルドした場所

Play Console → 設定 → アプリ署名 (Google Play App Signing を使用している場合)

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

Google Play へのアップロードを許可するため、__CAPGO_KEEP_0__ アクションにサービスアカウントが必要です。

  1. ステップ 2.1: Google Cloud プロジェクトの作成 Google Cloud Console へ
  2. 新しいプロジェクトを作成または既存のプロジェクトを選択
  3. プロジェクト ID をメモしておきます

ステップ 2.2: Google Play Developer API の有効化

  1. Google Cloud Console へ移動し APIs & Servicesライブラリ
  2. 「Google Play Android Developer API」を検索してください
  3. クリック 有効化

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

  1. ここに移動 IAM & Adminサービス アカウント
  2. クリック サービス アカウントを作成する
  3. 詳細を入力してください:
    • Name: github-actions-uploader
    • 説明: “GitHub アクション用のサービス アカウントで、ビルドをアップロードする”
  4. クリック 作成して続行
  5. 今のところロールの割り当てをスキップ (クリック 続行, すると 完了)

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

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

ステップ 2.5: Play Console でアクセス権を付与する

  1. を参照してください Google Play Console
  2. を参照してください 設定API アクセス権
  3. の下 サービス アカウント, アクセス権を付与 サービス アカウントのために
  4. コンソール上で アプリの権限 タブ、自分のアプリを追加
  5. On the アカウントの権限 タブ、以下の権限を付与:
    • アプリの情報を表示および大量のレポートをダウンロード (読み取り専用)
    • ドラフトアプリを作成、編集、削除
    • テストトラックにアプリをリリース
    • 生産、除外、他トラックにアプリをリリース
  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 をセットアップする

プロジェクトのルートディレクトリにフォルダを作成し、次の内容を追加します。 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 にアクセスして、GitHub からプロジェクトのリポジトリに移動します。

Step 4.1: Access GitHub Secrets

  1. Go to your repository on GitHub
  2. Click 設定シークレットと変数アクション
  3. Click 新しいリポジトリシークレット

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

各シークレットを 1 つずつ追加してください:

PLAY_CONFIG_JSON

  1. サービスアカウントの JSON ファイルをダウンロードしたステップ 2.4
  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形式の文字列を貼り付けてください

__CAPGO_KEEP_0__

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

__CAPGO_KEEP_1__

キーストアのキー アリースに新しいシークレットを作成してください (例: my-key-alias)

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

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

__CAPGO_KEEP_0__

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

__CAPGO_KEEP_0__

新しいシークレットを作成してください。アプリのパッケージ名(例えば、 com.example.app)

パッケージ名は、 android/app/build.gradleapplicationId

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

6 つのシークレットを設定することを確認してください。

  • ✅ PLAY_CONFIG_JSON
  • ✅ ANDROID_KEYSTORE_FILE
  • ✅ __CAPGO_KEEP_0__
  • ✅ キーストアキー暗号化用パスワード
  • ✅ キーストアストア用パスワード
  • ✅ 開発者用パッケージ名

5. Create 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 per build
  • オープンソースプロジェクトは無料

CI/CDセットアップガイド

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

リアルタイム更新とデプロイ

リソース

Keep going from Automatic Capacitor Android build with GitHub actions

あなたが使用している場合 自動的なCapacitor Android ビルドとGitHub アクション CI/CD オートメーションを計画するには、__CAPGO_KEEP_0__ CI/CD と接続する Capgo CI/CD Capgo CI/CD の製品ワークフロー Capgo Native Builds Capgo Native Builds の製品ワークフロー Capgo Integrations Capgo Integrations の製品ワークフロー CI/CD インテグレーション CI/CD インテグレーションの実装詳細 GitHub Actions Integration 実装詳細については GitHub Actions Integration に参照してください。

ライブ更新の Capacitor アプリ

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

はじめに

最新のブログ記事

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