Integrazione di GitHub Actions
Copiare un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integra le Capgo Aggiornamenti Live con GitHub Azioni per automatizzare gli aggiornamenti del tuo app ogni volta che puoi inviare code modifiche. Questa guida copre la configurazione di costruzioni automatizzate, test e workflow di distribuzione utilizzando il potente piattaforma CI/CD di GitHub.
Prerequisites
Sezione intitolata “Requisiti”Prima di configurare l'integrazione GitHub Actions, assicurati di avere:
- Un repository GitHub con le sorgenti del tuo'app code
- Un account Capgo con un'app configurata
- Node.js e npm/yarn configurati nel tuo progetto
- GitHub Actions abilitati per il tuo repository
Configurazione dei segreti GitHub
Sezione intitolata “Configurazione dei segreti GitHub”Passo 1: Configurazione dei segreti del repository
Sezione intitolata “Passo 1: Configura i segreti del repository”Impostare i segreti necessari nel proprio repository GitHub.
- Naviga al tuo repository GitHub
- Vai a Impostazioni → Segreti e variabili → Azioni
- Clicca Nuovo segreto repository e aggiungi il seguente:
| Nome segreto | Valore |
|---|---|
CAPGO_TOKEN | Il tuo token Capgo API |
Deployamento di Produzione semplice
Sezione intitolata “Deployamento di Produzione semplice”Inizia con questa configurazione base che distribuisce in produzione con ogni push al branch principale:
# 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 }}"Configurazione avanzata di Multi-Canale
Sezione intitolata “Configurazione avanzata di Multi-Canale”Deployamenti di Branch di Feature
Sezione intitolata “Deployamenti di Branch di Feature”Deploya rami di feature in canali temporanei per le prove:
# 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_NAMEUtilizzo della crittografia
Sezione intitolata “L'uso della crittografia”Se stai utilizzando Capgo's funzionalità di crittografia, dovrai memorizzare la tua chiave privata in modo sicuro nel tuo ambiente CI/CD.
Dopo l'installazione delle chiavi di crittografia localmente, aggiungi la tua chiave privata ai segreti di GitHub:
# Display your private key content (copy this output)cat .capgo_key_v2Aggiungi questo contenuto come CAPGO_PRIVATE_KEY in segreto del tuo repository GitHub, quindi utilizzalo nelle 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 productionConfigurazione Multi-Canale
Sottosezione intitolata “Configurazione Multi-Canale”Per informazioni complete sulla configurazione e gestione di più canali di distribuzione, vedere il documentazione sui canali.
Flusso completo con sviluppo, richieste di pull e distribuzioni di produzione:
# 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 productionPulizia Feature Canali
Sezione intitolata “Canali di pulizia delle funzionalità”Pulisci automaticamente i canali di feature quando vengono eliminate le branch:
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 }} || trueSicurezza e Migliori Pratiche
Sottosezione intitolata “Security and Best Practices”Regole di protezione dell'ambiente
Sottosezione intitolata “Regole di protezione dell'ambiente”Configura le regole di protezione dell'ambiente in GitHub:
- Vai a Impostazioni → Environments nel tuo repository
- Crea ambienti:
development,staging,production - Per l'ambiente di produzione, aggiungi:
- Richiedenti approvazione: Aggiungi membri del team che devono approvare i rilasci
- Timer di attesa: Aggiungi un ritardo prima del rilascio (facoltativo)
- Rami di rilascio: Limita a
mainramo solo
Gestione segreti sicura
Sezione intitolata “Gestione segreti sicura”Usa segreti specifici per l'ambiente:
# 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 productionMonitoraggio e Notifiche
Sezione intitolata “Monitoraggio e Notifiche”Integrazione Slack
Sezione intitolata “Integrazione Slack”Aggiungi notifiche Slack al tuo workflow:
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 }}Integrazione Discord
Sezione intitolata “Integrazione Discord”Inviare notifiche a 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 }}Notifiche via Email
Section titled “Email Notifications”Configura le notifiche via 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 }}Ci sono problemi?
Sezione intitolata “Risolvere i problemi”Copia nel portapenna
Section titled “Debug Workflow”Aggiungi passaggi di debug per risolvere i problemi:
- 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 }}Problemi Comuni e Soluzioni
Section titled “Common Issues and Solutions”Il flusso di lavoro fallisce con “CAPGO_TOKEN non trovato”.
- 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 }}Articoli di build non trovati:
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10Illeggibilità della rete:
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"Flussi di lavoro riutilizzabili
Flussi di lavoro riutilizzabiliCrea flussi di lavoro riciclabili per una consistenza across progetti:
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 }}Utilizza il flusso di lavoro riutilizzabile:
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
Sezione intitolata “Passaggi successivi”- Scopri Canali gestire diversi ambienti di distribuzione
- Explore Archiviazione Personalizzata per scenari di distribuzione avanzati
- Configura Encryption per distribuzioni sicure
- Criptazione per distribuzioni sicure To personalizzare l'applicazione degli aggiornamenti
Con l'integrazione di GitHub Actions, puoi sfruttare le potenti funzionalità della piattaforma CI/CD di GitHub per creare workflow di distribuzione sofisticati con funzionalità di sicurezza, monitoraggio e collaborazione integrate per le tue Capgo Live Updates.
Continua dall'integrazione di GitHub Actions
Titolo della sezione “Continua dall'integrazione di GitHub Actions”Se stai utilizzando Integrazione di GitHub Actions per pianificare l'automazione CI/CD, collega Capgo CI/CD per il workflow del prodotto in Capgo CI/CD, Capgo Native Builds per il workflow del prodotto in Capgo Native Builds, Capgo Integrations per il workflow del prodotto in Capgo Integrations Integrazione CI/CD per i dettagli di implementazione nell'integrazione CI/CD, e Ship __CAPGO_KEEP_0__ app per i dettagli di implementazione nella integrazione di GitLab CI/CD.