GitHub Actions Integration
コピー用意
Integrate Capgo Live Updates with GitHub Actions to automatically deploy your app updates whenever you push code changes. This guide covers setting up automated builds, testing, and deployment workflows using GitHub’s powerful CI/CD platform.
前提条件
前提条件Before setting up GitHub Actions integration, ensure you have:
- A GitHub repository with your app’s source code
- A Capgo account with an app configured
- Node.js and npm/yarn configured in your project
- GitHub のアクションがリポジトリに有効
GitHub シークレットの設定
「GitHub シークレットの設定」のセクションステップ 1: リポジトリ シークレットの設定
「ステップ 1: リポジトリ シークレットの設定」のセクションGitHub リポジトリに必要なシークレットを設定する
- GitHub リポジトリにアクセスする
- ここに 設定 → シークレットと変数 → アクション
- クリック 新しいリポジトリのシークレット 次のものを追加してください
| シークレット名 | 値 |
|---|---|
CAPGO_TOKEN | Your Capgo API token |
主なブランチにプッシュされるたびにプロダクションに展開する基本的な構成から始めます:
# Simple GitHub Actions Workflow for Capgo Live Updatesname: Deploy to Capgo
on: push: branches: - main
jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install, test and build run: | npm ci npm run test npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --channel production env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"高度なマルチチャネル構成
Section titled “高度なマルチチャネル構成”機能ブランチ展開
Section titled “機能ブランチ展開”機能ブランチをテスト用の仮想チャネルに展開します:
# Feature branch deploymentname: Deploy Feature Branch to Capgo
on: push: branches: - 'feature/**'
jobs: deploy-feature: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- name: Deploy to feature channel run: | CHANNEL_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME暗号化の使用
Section titled “暗号化の使用”暗号化を使用している場合 Capgoの暗号化機能CI/CD環境で秘密鍵を安全に保存する必要があります。
後 暗号化キーをローカルに設定した後 locally, add your private key to GitHub secrets:
# Display your private key content (copy this output)cat .capgo_key_v2この内容を CAPGO_PRIVATE_KEY GitHubリポジトリのシークレットに追加して、ワークフローで使用します:
# Deploy with encryption- name: Deploy to Capgo with Encryption run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" --channel production「マルチ チャネル構成」のセクション
複数のデプロイ チャネルを設定して管理するための詳細な情報については、チャンネル ドキュメントを参照してください開発、プル リクエスト、プロダクション デプロイメントの完全なワークフロー: クリップボードにコピー.
ヒント
# Complete multi-environment workflowname: Deploy to Capgo
on: push: branches: [main, develop] pull_request: branches: [main, develop]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- uses: actions/upload-artifact@v6 with: name: dist path: dist/
deploy-development: if: github.ref == 'refs/heads/develop' needs: build runs-on: ubuntu-latest environment: development steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel development
deploy-pr: if: github.event_name == 'pull_request' needs: build runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- name: Deploy to PR channel run: | CHANNEL_NAME="pr-${{ github.event.number }}" npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME
- name: Comment PR uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `🚀 This PR has been deployed to Capgo channel: \`pr-${{ github.event.number }}\`\n\nTo test this update in your app, configure it to use this channel. [Learn how to configure channels →](/docs/live-updates/channels/#configuring-the-channel-in-your-app)` })
deploy-production: if: github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest environment: production steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel production機能チャンネルのクリーンアップ
セクション「機能チャンネルのクリーンアップ」ブランチが削除されたときに自動的に機能チャンネルをクリーンアップします:
name: Cleanup Feature Channels
on: delete:
jobs: cleanup: runs-on: ubuntu-latest if: github.event.ref_type == 'branch' && startsWith(github.event.ref, 'feature/') steps: - uses: actions/setup-node@v6 with: node-version: '24'
- name: Delete Capgo channel run: | CHANNEL_NAME=$(echo "${{ github.event.ref }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel delete $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || trueセキュリティとベストプラクティス
セクション「セキュリティとベストプラクティス」環境保護ルール
セクション「環境保護ルール」環境保護ルールを設定するには、GitHub:
- 以下の手順に従ってください 設定 → 環境 リポジトリ内
- 環境を作成する
development,staging,production - プロダクション環境の場合、以下の設定を追加します
- 必要なレビュアー: デプロイを承認する必要があるチームメンバーを追加する
- 待機時間: デプロイ前に待機時間を追加する (任意)
- デプロイブランチ: 限定する
mainbranch only
秘密の管理
「秘密の管理」のセクション環境固有の秘密を使用する:
# Use different secrets per environmentdeploy-production: environment: production steps: - name: Deploy to Production run: | npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_PROD_TOKEN }} \ --app ${{ secrets.CAPGO_PROD_APP_ID }} \ --channel production監視と通知
「監視と通知」のセクションSlack の統合
「Slack の統合」のセクションワークフローに Slack の通知を追加する:
name: Deploy with Notifications
jobs: deploy: runs-on: ubuntu-latest steps: # ... deployment steps
- name: Notify Slack on Success if: success() uses: 8398a7/action-slack@v3 with: status: success text: '✅ Capgo deployment successful!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack on Failure if: failure() uses: 8398a7/action-slack@v3 with: status: failure text: '❌ Capgo deployment failed!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}Discord統合
Discord統合セクションDiscordに通知を送信します:
- name: Discord notification if: always() uses: Ilshidur/action-discord@master with: args: | Capgo deployment ${{ job.status }}! App: ${{ secrets.CAPGO_APP_ID }} Channel: ${{ github.ref_name }} Commit: ${{ github.sha }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}メール通知
セクション「メール通知」メール通知を設定します:
- name: Send email notification if: failure() uses: dawidd6/action-send-mail@v3 with: server_address: smtp.gmail.com server_port: 465 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 'Capgo Deployment Failed - ${{ github.repository }}' to: team@yourcompany.com from: ci-cd@yourcompany.com body: | Deployment failed for ${{ github.repository }} Branch: ${{ github.ref_name }} Commit: ${{ github.sha }} Workflow: ${{ github.workflow }}トラブルシューティング
セクション「トラブルシューティング」ワークフローをデバッグ
セクション「ワークフローをデバッグ」問題解決のためのデバッグ手順を追加してください:
- name: Debug environment run: | echo "Node version: $(node --version)" echo "NPM version: $(npm --version)" echo "Working directory: $(pwd)" echo "Files in dist/: $(ls -la dist/ || echo 'No dist directory')" echo "Environment variables:" env | grep -E "(GITHUB_|CAPGO_)" | sort
- name: Test Capgo CLI run: | npx @capgo/cli --version npx @capgo/cli app debug --apikey ${{ secrets.CAPGO_TOKEN }} --app ${{ secrets.CAPGO_APP_ID }}一般的な問題と解決策
「一般的な問題と解決策」のセクションワークフローが「CAPGO_TOKEN not found」というエラーで失敗します:
- name: Verify secrets run: | if [ -z "${{ secrets.CAPGO_TOKEN }}" ]; then echo "ERROR: CAPGO_TOKEN secret is not set" exit 1 fi echo "CAPGO_TOKEN is set (length: ${#CAPGO_TOKEN})" env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}ビルドアーティファクトが見つかりません:
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10ネットワーク接続性の問題:
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"再利用可能なワークフロー
「再利用可能なワークフロー」のセクションプロジェクト間で一貫性を確保するための再利用可能なワークフローを作成:
name: Reusable Capgo Deploy
on: workflow_call: inputs: environment: required: true type: string channel: required: true type: string secrets: CAPGO_TOKEN: required: true CAPGO_APP_ID: required: true
jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps: - uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install and build run: | npm ci npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_TOKEN }} \ --app ${{ secrets.CAPGO_APP_ID }} \ --channel ${{ inputs.channel }}__CAPGO_KEEP_0__/workflows/deploy.yml
name: Deploy App
on: push: branches: [main, develop]
jobs: deploy-dev: if: github.ref == 'refs/heads/develop' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: development channel: development secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}
deploy-prod: if: github.ref == 'refs/heads/main' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: production channel: production secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}「次のステップ」のセクション
「- チャンネル を使用して、異なるデプロイ環境を管理する 詳細を確認する
- Explore カスタム ストレージ 高度なデプロイシナリオ向け
- 設定 暗号化 セキュアなデプロイ向け
- 構成 更新動作 更新の適用方法をカスタマイズする
「GitHub Actions」統合を使用すると、GitHubの強力なCI/CDプラットフォームを活用して、Capgo Live Updatesの高度なデプロイワークフローを作成できます。セキュリティ、監視、コラボレーションの機能が組み込まれています。
「GitHub Actions」統合から続けて
「GitHub Actions」統合から続けて「__CAPGO_KEEP_0__ Actions」統合を使用している場合 GitHub Actions Integration 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_KEEP_0__ GitLab CI/CD統合 __CAPGO_KEEP_0__