Langsung ke konten

Trigger Native Build dari UI CI

Terkadang Anda butuh binary iOS atau Android yang sudah ditandatangani tanpa harus merge PR atau membuat release tag — build QA, submit ulang ke store, atau TestFlight sekali jalan. Setiap host code utama dapat memulai pipeline dari web UI-nya. Panduan ini menunjukkan cara menghubungkan UI tersebut ke Capgo Build.

Tanpa Ritual Git

Klik Run workflow / Run pipeline. Capgo Build akan compile dari branch yang Anda pilih.

Input Aman

Platform dan build mode memakai pilihan terbatas jika host mendukungnya (GitHub / Bitbucket / Azure). Variabel GitLab tetap bisa diedit per run kecuali Anda mendefinisikan input pipeline dengan options.

Secret yang Sama dengan CI

Gunakan kembali kredensial Capgo Build yang sudah ada di repo Anda. Tidak perlu setting baru di laptop.

milik GitHub Aksi tab dapat memulai workflow apa pun yang mendeklarasikan workflow_dispatch.

.github/workflows/capgo-build-manual.yml
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 }} \
$EXTRA
  1. Buka repositori GitHub di browser
  2. Buka Aksi
  3. Pilih Capgo Build (Manual)
  4. Klik Jalankan workflow
  5. Pilih branch, platform, dan mode
  6. Konfirmasi Jalankan workflow

Siapa pun dengan akses tulis dapat memulai build. Contoh ini memetakan release ke GitHub Environment bernama production — buat environment tersebut dan tambahkan reviewer agar build menunggu persetujuan. Tanpa environment: pada job, aturan environment protection tidak akan berlaku.

GitLab dapat menjalankan job dari Build → Pipelines → Jalankan pipeline saat job tersedia untuk branch tersebut.

# Job fragment for .gitlab-ci.yml
stages:
- 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: never
  1. Buka proyek GitLab
  2. Buka Build → Pipelines → Jalankan pipeline
  3. Pilih branch
  4. Opsional, atur PLATFORM / BUILD_MODE variabel untuk run ini
  5. Jalankan pipeline, lalu klik tombol play pada capgo_native_manual

when: manual mencegah job berjalan di setiap push; web UI (atau sebuah token pemicu pipeline) akan menjalankannya sesuai permintaan.

Gunakan pipeline kustom agar UI Bitbucket bisa mengirim variabel:

bitbucket-pipelines.yml
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"

Jalankan dari Pipelines → Jalankan pipeline → Custom: capgo-native-build. Simpan CAPGO_TOKEN dan material signing di Pengaturan repositori → Pipelines → Variabel repositori.

azure-pipelines-capgo-manual.yml
trigger: none # disable CI push triggers
pr: 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 groups

trigger: none dan pr: none matikan pipeline dari otomatisasi CI/PR agar bisa dijalankan dari Pipelines → Jalankan pipeline (atau webhook). Jika proyek menggunakan Azure Repos branch policies untuk antrean pipeline ini, nonaktifkan policy tersebut secara terpisah. Tambahkan CAPGO_TOKEN dan nilai signing ke dalam variable group bertanda secret.

Bagian berjudul “Recommended Inputs”
InputNilai yang disarankanCatatan
Platformios, android, bothMatrix kapan both
Modedebug, releaseDebug + --output-upload untuk link QA
distribusi iOSapp_store, ad_hocAd-hoc tidak pernah submit ke App Store

Untuk artifact QA yang bisa diunduh, gabungkan debug Android dengan --no-playstore-upload --output-upload dan baca URL dengan build last-output.

  • Gunakan environment protection rules (GitHub) atau protected variables (GitLab) untuk release build yang submit ke store.
  • Jangan masukkan password signing ke dalam workflow inputs — gunakan secrets/variables saja.
  • Batasi siapa yang bisa menjalankan workflow dengan repository roles dan izin tim (butuh akses write pada GitHub). Branch protection saja tidak bisa mengontrol Jalankan workflow; tambahkan pengecekan otorisasi di dalam workflow jika hanya grup tertentu yang boleh memulai build.