Integrasi GitHub Actions
Copy prompt setup berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Integrasikan Capgo Live Updates dengan GitHub Actions untuk deploy update aplikasi secara otomatis setiap kali Anda push code. Panduan ini membahas cara setup automated build, testing, dan workflow deployment menggunakan platform CI/CD GitHub yang powerful.
Prerequisites
Bagian berjudul “Prasyarat”Sebelum setup integrasi GitHub Actions, pastikan Anda sudah memiliki:
- Repositori GitHub berisi source code aplikasi Anda
- Akun Capgo dengan aplikasi yang sudah terkonfigurasi
- Node.js dan npm/yarn yang terkonfigurasi di proyek Anda
- GitHub Actions sudah diaktifkan untuk repositori Anda
Menyiapkan Secret GitHub
Bagian berjudul “Setting Up GitHub Secrets”Langkah 1: Konfigurasikan Repository Secrets
Bagian berjudul “Step 1: Configure Repository Secrets”Siapkan secret yang diperlukan di repositori GitHub Anda:
- Buka repositori GitHub Anda
- Buka Pengaturan → Secret dan variabel → Actions
- Klik Secret repositori baru dan tambahkan berikut ini:
| Nama Secret | Nilai |
|---|---|
CAPGO_TOKEN | Token Capgo API Anda |
Deployment Produksi Sederhana
Bagian berjudul “Deployment Produksi Sederhana”Mulai dengan konfigurasi dasar ini untuk deploy ke produksi setiap kali ada push ke branch main:
# 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 }}"Konfigurasi Multi-Channel Lanjutan
Bagian berjudul “Konfigurasi Multi-Channel Lanjutan”Deployment Feature Branch
Bagian berjudul “Deployment Feature Branch”Deploy feature branch ke channel sementara untuk testing:
# 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 add $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAMEMenggunakan Enkripsi
Bagian berjudul “Menggunakan Enkripsi”Jika Anda menggunakan fitur enkripsi Capgo, Anda perlu menyimpan private key dengan aman di lingkungan CI/CD Anda.
Setelah mengatur encryption key secara lokal, tambahkan private key Anda ke GitHub secrets:
# Display your private key content (copy this output)cat .capgo_key_v2Tambahkan konten ini sebagai CAPGO_PRIVATE_KEY di GitHub repository secrets Anda, lalu gunakan di workflow:
# 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 productionKonfigurasi Multi-Channel
Bagian berjudul “Konfigurasi Multi-Channel”Untuk informasi lengkap mengenai pengaturan dan pengelolaan berbagai channel deployment, lihat dokumentasi Channels.
Workflow lengkap dengan development, pull request, dan deployment ke 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 add $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 productionBersihkan Feature Channels
Bagian berjudul “Cleanup Feature Channels”Hapus feature channel secara otomatis saat branch dihapus:
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 }} || trueKeamanan dan Best Practices
Bagian berjudul “Keamanan dan Best Practices”Aturan Perlindungan Environment
Bagian berjudul “Environment Protection Rules”Atur environment protection rules di GitHub:
- Buka Pengaturan → Environments di repositori Anda
- Buat environment:
development,staging,production - Untuk environment production, tambahkan:
- Reviewer wajib: Tambahkan anggota tim yang harus menyetujui deployment
- Timer tunggu: Tambahkan delay sebelum deployment (opsional)
- Branch deployment: Batasi ke
mainbranch saja
Manajemen Secret yang Aman
Bagian berjudul “Secure Secrets Management”Gunakan secret khusus environment:
# 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 productionMonitoring dan Notifikasi
Bagian berjudul “Monitoring dan Notifikasi”Integrasi Slack
Bagian berjudul “Integrasi Slack”Tambahkan notifikasi Slack ke workflow Anda:
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 }}Integrasi Discord
Bagian berjudul “Integrasi Discord”Kirim notifikasi ke 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 }}Notifikasi Email
Bagian berjudul “Notifikasi Email”Konfigurasi notifikasi email:
- 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 }}Pemecahan Masalah
Bagian berjudul “Troubleshooting”Debug Workflow
Bagian berjudul “Debug Workflow”Tambahkan langkah debugging untuk menelusuri masalah:
- 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 }}Masalah Umum dan Solusi
Bagian berjudul “Masalah Umum dan Solusi”Workflow gagal dengan pesan “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 }}Build artifacts tidak ditemukan:
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10Masalah koneksi jaringan:
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"Workflow yang Dapat Digunakan Kembali
Bagian berjudul “Reusable Workflows”Buat reusable workflow agar konsisten di semua proyek:
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 }}Gunakan reusable workflow:
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 }}Next Steps
Bagian berjudul “Langkah Selanjutnya”- Pelajari tentang Channel untuk mengelola berbagai environment deployment
- Jelajahi Penyimpanan Kustom untuk skenario deployment tingkat lanjut
- Siapkan Enkripsi untuk deployment yang aman
- Konfigurasi Perilaku Update untuk menyesuaikan cara update diterapkan
Dengan integrasi GitHub Actions, Anda dapat memanfaatkan platform CI/CD GitHub yang canggih untuk membuat workflow deployment yang kompleks dengan fitur keamanan, monitoring, dan kolaborasi bawaan untuk Capgo Live Updates Anda.
Lanjutkan dari Integrasi GitHub Actions
Bagian berjudul “Lanjutkan dengan Integrasi GitHub Actions”Jika Anda menggunakan Integrasi GitHub Actions untuk merencanakan otomatisasi CI/CD, hubungkan dengan CI/CD Capgo untuk alur kerja produk di Capgo CI/CD, Capgo Native Build untuk alur kerja produk di Capgo Native Builds, Integrasi Capgo untuk alur kerja produk di Integrasi Capgo, Integrasi CI/CD untuk detail implementasi di Integrasi CI/CD, dan Integrasi GitLab CI/CD untuk detail implementasi pada Integrasi GitLab CI/CD.