Integrasi GitHub Actions
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Integrasikan Capgo Live Updates dengan GitHub Actions untuk otomatis mendeploy pembaruan aplikasi Anda setiap kali Anda push perubahan code. Panduan ini membahas pengaturan build otomatis, pengujian, dan alur kerja deployment menggunakan platform CI/CD GitHub yang powerful.
Prerequisites
Bagian berjudul “Prasyarat”Sebelum mengatur integrasi GitHub Actions, pastikan Anda memiliki:
- Repositori GitHub dengan source code aplikasi Anda
- Akun Capgo dengan aplikasi yang sudah dikonfigurasi
- Node.js dan npm/yarn yang sudah dikonfigurasi di proyek Anda
- GitHub Actions diaktifkan untuk repositori Anda
Mengatur GitHub Secrets
Bagian berjudul “Mengatur GitHub Secrets”Langkah 1: Konfigurasi Secrets Repositori
Bagian berjudul “Langkah 1: Konfigurasi Secrets Repositori”Atur secret yang diperlukan di repositori GitHub Anda:
- Buka repositori GitHub Anda
- Buka Pengaturan → Secrets dan variables → Aksi
- Klik Secret repositori baru dan tambahkan berikut:
| Nama Secret | Nilai |
|---|---|
CAPGO_TOKEN | Token Capgo API Anda |
Deployment Produksi Sederhana
Bagian berjudul “Deployment Produksi Sederhana”Mulai dengan konfigurasi dasar ini yang melakukan deployment 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 “Feature Branch Deployments”Deploy feature branch ke channel sementara untuk pengujian:
# 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 menyiapkan kunci enkripsi secara lokal, tambahkan private key Anda ke secrets GitHub:
# Display your private key content (copy this output)cat .capgo_key_v2Tambahkan konten ini sebagai CAPGO_PRIVATE_KEY di secrets GitHub repository Anda, lalu gunakan di 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 productionKonfigurasi Multi-Channel
Bagian berjudul “Konfigurasi Multi-Channel”Untuk informasi lengkap tentang menyiapkan dan mengelola beberapa channel deployment, lihat dokumentasi Channels.
Workflow lengkap dengan development, pull requests, dan deployment produksi:
# 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 Channel Fitur
Bagian berjudul “Pembersihan Channel Fitur”Bersihkan channel fitur 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 Praktik Terbaik
Bagian berjudul “Keamanan dan Praktik Terbaik”Aturan Perlindungan Environment
Bagian berjudul “Aturan Perlindungan Environment”Atur aturan perlindungan environment di GitHub:
- Buka Pengaturan → Environments di repository Anda
- Buat environment:
development,staging,production - Untuk environment produksi, tambahkan:
- Reviewer wajib: Tambahkan anggota tim yang harus menyetujui deployment
- Timer tunggu: Tambahkan jeda sebelum deployment (opsional)
- Cabang deployment: Batasi ke
mainbranch saja
Manajemen Secrets 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 memecahkan 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 “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 konektivitas 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 Dipakai Ulang
Bagian berjudul “Reusable Workflows”Buat reusable workflows untuk konsistensi antar 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 }}Langkah Berikutnya
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 dari Integrasi GitHub Actions”Jika Anda menggunakan Integrasi GitHub Actions untuk merencanakan otomatisasi CI/CD, hubungkan dengan CI/CD Capgo untuk workflow produk di Capgo CI/CD, Capgo Native Build untuk workflow 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 di Integrasi GitLab CI/CD.