Skip to content

GitHub アクション統合

Capgo Live UpdatesとGitHub Actionsを組み合わせて、codeの変更をプッシュしたときに自動的にアプリの更新をデプロイすることができます。このガイドでは、GitHubの強力なCI/CDプラットフォームを使用した自動ビルド、テスト、デプロイワークフローの設定について説明します。

GitHub Actions統合を設定する前に、以下のことを確認してください。

  • GitHubリポジトリにアプリのソースcodeが含まれている
  • Capgoアカウントにアプリが設定されている
  • Node.jsとnpm/yarnがプロジェクトに設定されている
  • GitHub Actionsがリポジトリに有効になっている

GitHubシークレットの設定

GitHubシークレットの設定

Step 1: リポジトリのシークレットを設定する

Step 1: リポジトリのシークレットを設定する

GitHub リポジトリに必要なシークレットを設定する

  1. GitHub リポジトリに移動する
  2. Go to 設定シークレットと変数Actions
  3. クリック 新しいリポジトリシークレット と次のものを追加してください
シークレット名
CAPGO_TOKENあなたのCapgo APIトークン

単純なプロダクション展開

Simple Production Deployment

プロダクション展開の基本設定から始めましょう。毎回メインブランチにプッシュすると、自動的に展開されます。

# Simple GitHub Actions Workflow for Capgo Live Updates
name: 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 }}"

複合チャネル展開

Advanced Multi-Channel Configuration

機能ブランチ展開

Feature Branch Deployments

機能ブランチをテスト用の仮想チャネルに展開してみましょう。

# Feature branch deployment
name: 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

暗号化の使用

Using Encryption

If you’re using __CAPGO_KEEP_0__’s encryption feature Capgoの暗号化機能を使用している場合You’ll need to store your private key securely in your CI/CD environment.

CI/CD環境で秘密鍵を安全に保存する必要があります。 After setting up encryption keys locally, add your private key to __CAPGO_KEEP_0__ secrets: ローカルで暗号化キーを設定した後、GitHubシークレットに秘密鍵を追加してください。

Terminal window
# Display your private key content (copy this output)
cat .capgo_key_v2

Copy to clipboard CAPGO_PRIVATE_KEY in your GitHub repository secrets, then use it in workflows:

# 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 workflow
name: 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で環境保護ルールを設定する

  1. Go to 設定環境 リポジトリ内
  2. 環境を作成する development, staging, production
  3. プロダクション環境の場合、追加する:
    • 必要なレビュアー: デプロイを承認する必要があるチームメンバーを追加する
    • 待機時間: デプロイ前に待機時間を追加する(任意)
    • 展開分岐: 限定 main 分岐のみ

セキュアシークレットマネジメント

セクション「セキュアシークレットマネジメント」

環境固有のシークレットを使用:

# Use different secrets per environment
deploy-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通知を追加:

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 }}

ディスコードに通知を送信:

- 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"

再利用可能なワークフロー

再利用可能なワークフロー

プロジェクト間で一貫性を保つために、再利用可能なワークフローを作成します:

github/workflows/reusable-capgo-deploy.yml
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 }}

再利用可能なワークフローを使用します:

github/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 }}
  • __CAPGO_KEEP_0__/workflows/next-steps.yml 学び チャンネルを使用して、異なるデプロイ環境を管理します
  • Explore Custom Storage for advanced deployment scenarios
  • Set up Encryption for secure deployments
  • Configure Update Behavior to customize how updates are applied

With GitHub Actions integration, you can leverage GitHub’s powerful CI/CD platform to create sophisticated deployment workflows with built-in security, monitoring, and collaboration features for your Capgo Live Updates.

Keep going from GitHub Actions Integration

Section titled “Keep going from GitHub Actions Integration”

If you are using GitHub をCI/CD自動化に使用している場合、 Capgo for the product workflow in Capgo CI/CD, Capgo for the product workflow in Capgo Native Builds, Capgo for the product workflow in Capgo Integrations, CI/CD統合 CI/CD統合の実装詳細のために GitLab CI/CD統合 GitLab CI/CD Integrationの実装詳細についてはこちらを参照してください。