Integrazione GitHub Actions
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integra Capgo Live Updates con GitHub Actions per distribuire automaticamente gli aggiornamenti della tua app ogni volta che fai il push di code. Questa guida spiega come configurare build automatizzate, test e workflow di deployment usando la potente piattaforma CI/CD di GitHub.
Prerequisiti
Sezione intitolata “Prerequisiti”Prima di configurare l'integrazione con GitHub Actions, assicurati di avere:
- Un repository GitHub con il codice sorgente della tua app code
- Un account Capgo con un'app configurata
- Node.js e npm/yarn configurati nel tuo progetto
- GitHub Actions abilitato per il tuo repository
Configurazione dei segreti GitHub
Sezione intitolata “Configurazione dei Secret GitHub”Passaggio 1: Configura i secret del repository
Sezione: “Passaggio 1: Configura i Repository Secrets”Configura i secret necessari nel tuo repository GitHub:
- Vai al tuo repository GitHub
- Vai su Impostazioni → Secret e variabili → Azioni
- Clicca su Nuovo secret del repository e aggiungi quanto segue:
| Nome del Secret | Valore |
|---|---|
CAPGO_TOKEN | Il tuo token Capgo API |
Deployment semplice in produzione
Sezione intitolata “Deploy semplice in produzione”Inizia con questa configurazione di base che esegue il deploy in produzione a ogni push sul 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 }}"Configurazione multi-channel avanzata
Sezione intitolata “Configurazione Multi-Channel Avanzata”Deployment su feature branch
Sezione intitolata “Deployment di Feature Branch”Distribuisci i feature branch su canali temporanei per i test:
# 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 “Utilizzo della Crittografia”Se stai usando La funzionalità di crittografia di Capgo, dovrai salvare la tua chiave privata in modo sicuro nel tuo ambiente CI/CD.
Dopo aver configurato le chiavi di crittografia localmente, aggiungi la tua chiave privata ai secret di GitHub:
# Display your private key content (copy this output)cat .capgo_key_v2Aggiungi questo contenuto come CAPGO_PRIVATE_KEY nei secret del tuo repository GitHub, quindi usala nei 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-channel
Sezione intitolata “Configurazione Multi-Channel”Per informazioni dettagliate sulla configurazione e gestione di più canali di deployment, consulta la documentazione sui Channels.
Workflow completo tra sviluppo, pull request e deployment in 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 dei canali feature
Sezione: “Pulizia dei Feature Channel”Elimina automaticamente i feature channel quando i branch vengono cancellati:
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 best practice
Sezione: “Sicurezza e Best Practice”Regole di protezione degli ambienti
Sezione: “Regole di protezione degli ambienti”Configura le regole di protezione degli ambienti in GitHub:
- Vai su Impostazioni → Environments nel tuo repository
- Crea gli ambienti:
development,staging,production - Per l'ambiente di produzione, aggiungi:
- Reviewer richiesti: Aggiungi i membri del team che devono approvare i deployment
- Timer di attesa: Aggiungi un ritardo prima del deployment (opzionale)
- Branch di deployment: Limita a
mainsolo il branch
Gestione sicura dei secrets
Sezione intitolata “Secure Secrets Management”Usa secret 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”Invia notifiche su 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
Sezione intitolata “Notifiche via Email”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 }}Risoluzione problemi
Sezione intitolata “Troubleshooting”Debug del Workflow
Sezione intitolata “Debug del 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
Sezione intitolata “Problemi comuni e soluzioni”Il workflow fallisce con “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 }}Artefatti 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 -10Problemi di connettività di 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"Workflow riutilizzabili
Sezione intitolata “Reusable Workflows”Crea workflow riutilizzabili per garantire coerenza tra i 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 }}Usa il workflow 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 }}Prossimi passi
Sezione intitolata “Prossimi passi”- Scopri di più su Canali per gestire diversi ambienti di deployment
- Esplora Storage personalizzato per scenari di deployment avanzati
- Configurazione Crittografia per deployment sicuri
- Configura Comportamento degli aggiornamenti per personalizzare l'applicazione degli update
Con l'integrazione GitHub Actions, puoi sfruttare la potente piattaforma CI/CD di GitHub per creare workflow di deployment avanzati con funzioni integrate di sicurezza, monitoraggio e collaborazione per i tuoi Capgo Live Updates.
Continua con l'integrazione GitHub Actions
Sezione intitolata “Continua con l'integrazione GitHub Actions”Se stai usando Integrazione GitHub Actions per pianificare l'automazione CI/CD e connetterla a CI/CD di Capgo per il workflow del prodotto in Capgo CI/CD, Capgo Native Build per il workflow di prodotto in Capgo Native Builds, Integrazioni Capgo per il workflow di prodotto in Integrazioni Capgo, Integrazione CI/CD per i dettagli implementativi in CI/CD Integration, e Integrazione GitLab CI/CD per i dettagli sull'implementazione nell'integrazione GitLab CI/CD.