Sin ceremonias de Git
Haz clic en Run workflow / Run pipeline. Capgo Build compila desde la rama que elijas.
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
A veces necesitas un binario firmado de iOS o Android sin hacer un merge de un PR o crear un tag de release: un build para QA, un resubmit a la tienda o un TestFlight puntual. Casi cualquier host de code permite iniciar un pipeline desde su interfaz web. Esta guía te enseña cómo conectar esa interfaz con Capgo Build.
Sin ceremonias de Git
Haz clic en Run workflow / Run pipeline. Capgo Build compila desde la rama que elijas.
Inputs seguros
La plataforma y el modo de build usan opciones restringidas si el host lo permite (GitHub / Bitbucket / Azure). Las variables de GitLab siguen siendo editables en cada ejecución a menos que definas entradas del pipeline con options.
Mismos secrets que en CI
Reutiliza las credenciales de Capgo Build de tu repo. Sin configurar nada en laptops.
gh secret set -f)CAPGO_TOKEN almacenados como secret enmascarado / variable de CIde GitHub Acciones la pestaña puede iniciar cualquier workflow que declare workflow_dispatch.
name: Capgo Build (Manual)
on: workflow_dispatch: inputs: platform: description: Platform to build required: true default: both type: choice options: [ios, android, both] mode: description: Build mode required: true default: debug type: choice options: [debug, release] ref_note: description: Optional note for the run summary required: false type: string
jobs: build: runs-on: ubuntu-latest environment: ${{ inputs.mode == 'release' && 'production' || 'build-debug' }} strategy: fail-fast: false matrix: platform: ${{ fromJSON(inputs.platform == 'both' && '["ios","android"]' || format('["{0}"]', inputs.platform)) }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: npm ci - run: npm run build - run: npx cap sync ${{ matrix.platform }}
- name: Capgo Build env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} P12_PASSWORD: ${{ secrets.P12_PASSWORD }} CAPGO_IOS_PROVISIONING_MAP: ${{ secrets.CAPGO_IOS_PROVISIONING_MAP }} APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }} APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }} ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }} KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }} KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }} KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }} PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }} run: | EXTRA="" if [ "${{ inputs.mode }}" = "debug" ] && [ "${{ matrix.platform }}" = "android" ]; then EXTRA="--no-playstore-upload --output-upload" fi npx @capgo/cli@latest build request com.example.app \ --platform ${{ matrix.platform }} \ --build-mode ${{ inputs.mode }} \ $EXTRACualquiera con permisos de escritura puede iniciar un build. El ejemplo mapea release a un entorno GitHub llamado production — crea ese entorno y añade revisores para que los builds esperen aprobación. Sin environment: en ejecución, las reglas de protección de entorno nunca se aplican.
GitLab puede ejecutar un job desde Build → Pipelines → Ejecutar pipeline cuando el job esté disponible para esa rama.
# Job fragment for .gitlab-ci.ymlstages: - build
variables: APP_ID: com.example.app PLATFORM: android # override from Run pipeline UI BUILD_MODE: debug
capgo_native_manual: stage: build when: manual script: - npm ci - npm run build - npx cap sync "$PLATFORM" - | npx @capgo/cli@latest build request "$APP_ID" \ --platform "$PLATFORM" \ --build-mode "$BUILD_MODE" rules: # Actions / Pipelines UI → manual play button - if: '$CI_PIPELINE_SOURCE == "web"' when: manual # Pipeline trigger token / webhook → run automatically - if: '$CI_PIPELINE_SOURCE == "trigger"' when: on_success - when: neverPLATFORM / BUILD_MODE las variables para esta ejecuciónwhen: manual evita que el job se ejecute en cada push; la web UI (o un token de trigger del pipeline) lo inicia bajo demanda.
Usa un pipeline personalizado para que la UI de Bitbucket pueda pasar variables:
pipelines: custom: capgo-native-build: - variables: - name: PLATFORM default: android allowed-values: - ios - android - name: BUILD_MODE default: debug allowed-values: - debug - release - step: name: Capgo Build image: node:24 script: - npm ci - npm run build - npx cap sync "$PLATFORM" - npx @capgo/cli@latest build request com.example.app --platform "$PLATFORM" --build-mode "$BUILD_MODE"Ejecútalo desde Pipelines → Ejecutar pipeline → Custom: capgo-native-build. Guarda CAPGO_TOKEN y el material de firma en Configuración del repositorio → Pipelines → Variables del repositorio.
trigger: none # disable CI push triggerspr: none # also disable PR triggers (GitHub/Bitbucket-backed projects)
parameters: - name: platform displayName: Platform type: string default: android values: - ios - android - name: buildMode displayName: Build mode type: string default: debug values: - debug - release
pool: vmImage: ubuntu-latest
steps: - task: NodeTool@0 inputs: versionSpec: '24.x' - script: | npm ci npm run build npx cap sync ${{ parameters.platform }} npx @capgo/cli@latest build request com.example.app \ --platform ${{ parameters.platform }} \ --build-mode ${{ parameters.buildMode }} env: CAPGO_TOKEN: $(CAPGO_TOKEN) # map other signing secrets from Library → Variable groupstrigger: none y pr: none mantén el pipeline fuera de las ejecuciones automáticas de CI/PR para que comience desde Pipelines → Ejecutar pipeline (o un webhook). Si el proyecto usa políticas de rama de Azure Repos que encolan este pipeline, desactiva esa política por separado. Añade CAPGO_TOKEN y los valores de firma a un grupo de variables marcado como secret.
| Entrada | Valores sugeridos | Notas |
|---|---|---|
| Plataforma | ios, android, both | Matriz de ejecución both |
| Modo | debug, release | Debug + --output-upload para enlaces de QA |
| distribución iOS | app_store, ad_hoc | Ad-hoc nunca se envía a App Store |
Para artefactos de QA descargables, combina debug Android con --no-playstore-upload --output-upload y lee la URL con build last-output.
release builds que se envían a las tiendas.inputs — solo en secrets/variables.