Integrazione con GitLab CI/CD
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integrate Capgo Live Updates with GitLab CI/CD to automatically deploy your app updates whenever you push code changes. This guide covers setting up automated builds, testing, and deployment workflows.
Requisiti
Sezione intitolata “Requisiti”Prima di configurare l'integrazione di GitLab CI/CD, assicurati di avere:
- Un account GitLab con un repository di progetto
- Un account Capgo con un'app configurata
- Node.js e npm/yarn configurati nel tuo progetto
Configurazione di GitLab CI/CD
Sezione intitolata “Configurazione di GitLab CI/CD”Passo 1: Configura le variabili di ambiente
Sezione intitolata “Passo 1: Configura le variabili di ambiente”In primo luogo, configura le variabili necessarie nel tuo progetto GitLab:
- Naviga nel tuo progetto GitLab
- Vai a Impostazioni → CI/CD → Variabili
- Aggiungi le seguenti variabili:
| Nome Variabile | Valore | Protetto | Nascosto |
|---|---|---|---|
CAPGO_TOKEN | Il tuo token Capgo API | ✅ Sì | ✅ Sì |
Elemento semplice
Sezione intitolata “Elemento semplice”Configurazione base che distribuisce in produzione con ogni push sul ramo principale:
# .gitlab-ci.yml - Simple Configurationimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
build: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 1 hour only: - main
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production # For encrypted uploads, add: --key-data-v2 "$CAPGO_PRIVATE_KEY" dependencies: - build only: - mainElemento avanzato
Sezione intitolata “Elemento avanzato”Distribuzioni del ramo di feature
Sezione intitolata “Distribuzioni del ramo di feature”Distribuisce i rami di feature nei canali di test per la revisione e il testing:
# Feature branch deploymentdeploy_feature: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="feature-$(echo $CI_COMMIT_REF_NAME | sed 's/[^a-zA-Z0-9-]/-/g')" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - /^feature\/.*$/ environment: name: feature/$CI_COMMIT_REF_NAME url: https://your-app.com/channels/$CHANNEL_NAMEUtilizzo della crittografia
Se stai utilizzando__CAPGO_KEEP_0__'s funzionalità di crittografia Capgo’s encryption featureDopo
l'aggiunta delle chiavi di crittografia localmente, aggiungi la tua chiave privata alle variabili di GitLab: Dopo aver impostato le chiavi di crittografia localmente, aggiungi la tua chiave privata alle variabili di GitLab:
# Display your private key content (copy this output)cat .capgo_key_v2Aggiungi questo contenuto come CAPGO_PRIVATE_KEY nel tuo progetto GitLab (segna come protetto e mascherato), quindi utilizzalo nelle pipeline:
# Deploy with encryptiondeploy_production: script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --key-data-v2 "$CAPGO_PRIVATE_KEY" --channel productionConfigurazione dei Canali Multipli
Sezione intitolata “Configurazione dei Canali Multipli”Per informazioni complete sulla configurazione e gestione di più canali di distribuzione, vedere il documentazione sui canali.
Configurazione completa con più ambienti e distribuzioni di richiesta di merge:
# .gitlab-ci.yml - Advanced Multi-Channel Configurationimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
# Build stagebuild: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 24 hours
# Deploy to development channeldeploy_development: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel development dependencies: - build only: - develop environment: name: development
# Deploy merge requests to test channelsdeploy_mr: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="mr-$CI_MERGE_REQUEST_IID" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - merge_requests environment: name: review/$CI_MERGE_REQUEST_IID url: https://your-app.com/channels/mr-$CI_MERGE_REQUEST_IID on_stop: cleanup_mr
# Cleanup MR channels when MR is closedcleanup_mr: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli channel delete mr-$CI_MERGE_REQUEST_IID --apikey $CAPGO_TOKEN || true when: manual environment: name: review/$CI_MERGE_REQUEST_IID action: stop only: - merge_requests
# Deploy to stagingdeploy_staging: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel staging dependencies: - build only: - develop environment: name: staging
# Deploy to productiondeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main environment: name: productionMulti-ambiente con approvazione manuale
Sezione intitolata “Multi-ambiente con approvazione manuale”Per le distribuzioni di produzione che richiedono approvazione manuale:
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main when: manual environment: name: productionStrategia di distribuzione basata sul ramo
Sezione intitolata “Strategia di distribuzione basata sul ramo”Deploya diverse rami in canali appropriati automaticamente:
# Dynamic channel deployment based on branchdeploy: stage: deploy script: - npm install -g @capgo/cli - | if [ "$CI_COMMIT_REF_NAME" = "main" ]; then CHANNEL="production" elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then CHANNEL="staging" else CHANNEL="development" fi - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL dependencies: - build environment: name: $CHANNELPratiche di Sicurezza Migliorate
Sezione intitolata “Pratiche di Sicurezza Migliorate”Variabili Protette
Sezione intitolata “Variabili Protette”- Segnala Variabili Sensibili: Segna sempre i token API come protetti e mascherati
- Protezione del Ramo: Utilizza variabili protette per le distribuzioni di produzione
- Controllo dell'Accesso: Limita l'accesso alle variabili ai soli mantenitori
- Rotazione regolare: Ruota i token API regolarmente
Configurazione della pipeline sicura
Sezione intitolata “Configurazione della pipeline sicura”# Use protected variables for productiondeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production only: refs: - main variables: - $CI_COMMIT_REF_PROTECTED == "true"Monitoraggio e notifiche
Sezione intitolata “Monitoraggio e notifiche”Integrazione con Slack
Sezione intitolata “Integrazione con Slack”Aggiungi notifiche di Slack alla tua pipeline:
notify_success: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"✅ Capgo deployment successful for '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_success
notify_failure: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Capgo deployment failed for '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_failureNotifiche via e-mail
Sezione intitolata “Notifiche via Email”Configura le notifiche via email nei impostazioni del tuo progetto GitLab o utilizza il API
notify_email: stage: .post script: - | curl --request POST \ --header "PRIVATE-TOKEN: $GITLAB_API_TOKEN" \ --form "to=team@yourcompany.com" \ --form "subject=Capgo Deployment Status" \ --form "body=Deployment of $CI_COMMIT_REF_NAME completed with status: $CI_JOB_STATUS" \ "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/emails" when: alwaysRisoluzione dei problemi
Sezione intitolata “Risoluzione dei problemi”Problemi comuni
Sezione intitolata “Problemi comuni”Il flusso di lavoro fallisce con “Capgo CLI non trovato”:
# Debug CLI installationdebug_cli: script: - npm install -g @capgo/cli - which capgo || echo "Capgo CLI not found" - npx @capgo/cli --versionErrori di autenticazione:
# Verify token configurationdebug_auth: script: - | if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN is not set" exit 1 fi echo "Token length: ${#CAPGO_TOKEN}"I file di output non sono stati trovati:
# List build outputsdebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Pipeline di debug
Sezione intitolata “Pipeline di debug”Aggiungi informazioni di debug per risolvere problemi:
debug: stage: build script: - echo "Branch: $CI_COMMIT_REF_NAME" - echo "Commit: $CI_COMMIT_SHA" - echo "Build: $CI_PIPELINE_ID" - env | grep CI_ | sort only: - branchesPassaggi successivi
Sezione intitolata “Passaggi successivi”- Scopri Canali per gestire diversi ambienti di distribuzione
- Esplora Archiviazione personalizzata per scenari di distribuzione avanzati
- Configura Crittografia per distribuzioni sicure
- Configura Aggiorna il comportamento per personalizzare come vengono applicate le aggiornamenti
Con l'integrazione di GitLab CI/CD, puoi automatizzare i tuoi Capgo deployment e assicurarti aggiornamenti coerenti e affidabili per i tuoi utenti di app mobili.
Continua da qui: Integrazione di GitLab CI/CD
Sezione intitolata “Continua da qui: Integrazione di GitLab CI/CD”Se stai utilizzando Integrazione di GitLab CI/CD per pianificare l'automazione CI/CD, connettilo con Capgo automazione CI/CD per il flusso di lavoro del prodotto in Capgo automazione CI/CD, Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native, Capgo Integrazioni per il flusso di lavoro del prodotto in Capgo Integrazioni, Integrazione CI/CD per il dettaglio di implementazione in Integrazione CI/CD, e GitHub Integrazione delle azioni per il dettaglio di implementazione in GitHub Integrazione delle azioni.