Integrasi CI/CD GitLab
Copy sebuah prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Integrasikan Capgo Live Updates dengan GitLab CI/CD untuk mendeploykan secara otomatis pembaruan aplikasi Anda setiap kali Anda memasukkan code perubahan. Panduan ini mencakup pengaturan build otomatis, pengujian, dan alur kerja pengiriman.
Prasyarat
Judul bagian “Prasyarat”Sebelum mengatur integrasi GitLab CI/CD, pastikan Anda memiliki:
- Akun GitLab dengan repositori proyek
- Akun Capgo dengan aplikasi yang dikonfigurasi
- Node.js dan npm/yarn dikonfigurasi di proyek Anda
Pengaturan GitLab CI/CD
Judul bagian “Pengaturan GitLab CI/CD”Langkah 1: Konfigurasi Variabel Lingkungan
Bagian berjudul “Langkah 1: Konfigurasi Variabel Lingkungan”Pertama-tama, atur variabel-variabel yang diperlukan di proyek GitLab Anda:
- Navigasikan ke proyek GitLab Anda
- Lihat Pengaturan → CI/CD → Variabel
- Tambahkan variabel-variabel berikut:
| Nama Variabel | Nilai | Dilindungi | Tersembunyi |
|---|---|---|---|
CAPGO_TOKEN | Token Anda Capgo API | ✅ Ya | ✅ Ya |
Konfigurasi Sederhana
Judul bagian ‘Sederhana’Konfigurasi dasar yang mengirimkan ke produksi setiap kali push ke cabang utama:
# .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: - mainPengembangan Cabang Fitur
Bagian berjudul “Pengembangan Cabang Fitur”Tunggu cabang fitur untuk diuji dan dinilai di saluran uji:
# 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_NAMEMenggunakan Enkripsi
Judul Bagian “Menggunakan Enkripsi”Jika Anda menggunakan Capgo’s fitur enkripsi, Anda perlu menyimpan kunci pribadi Anda dengan aman di lingkungan CI/CD Anda.
Setelah mengatur kunci enkripsi secara lokal, tambahkan kunci pribadi Anda ke variabel GitLab:
# Display your private key content (copy this output)cat .capgo_key_v2Tambahkan konten ini sebagai CAPGO_PRIVATE_KEY dalam variabel proyek GitLab Anda (tandai sebagai dilindungi dan tersembunyi), lalu gunakan di 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 productionKonfigurasi Saluran Berbagai
Bagian berjudul “Konfigurasi Saluran Berbagai”Untuk informasi yang lebih komprehensif tentang mengatur dan mengelola saluran pengiriman yang berbeda, lihat dokumentasi Dokumentasi Saluran.
Konfigurasi lengkap dengan beberapa lingkungan dan pengiriman permintaan gabungan:
# .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: productionPengaturan Lingkungan Multi dengan Persetujuan Manual
Bab berjudul “Pengaturan Lingkungan Multi dengan Persetujuan Manual”Untuk pengiriman produksi yang memerlukan persetujuan manual:
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: productionStrategi Pengiriman Berdasarkan Cabang
Bab berjudul “Strategi Pengiriman Berdasarkan Cabang”Pengiriman cabang yang berbeda ke saluran yang tepat secara otomatis:
# 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: $CHANNELPraktik-Praktik Keamanan Terbaik
Bab berjudul “Praktik-Praktik Keamanan Terbaik”Variabel Terlindung
Bagian Judul “Variabel Terlindung”- Merk Variabel SensitifSelalu tandai token API sebagai terlindung dan tersembunyi
- Pengamanan CabangGunakan variabel terlindung untuk pengiriman produksi
- Pengendalian AksesBatasi akses variabel hanya untuk pengelola
- Rotasi RegulerRotasi token API secara teratur
Konfigurasi Pipa yang Aman
Bagian Judul “Konfigurasi Pipa yang Aman”# 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"Pengawasan dan Pemberitahuan
Bagian berjudul “Pengawasan dan Pemberitahuan”Integrasi Slack
Bagian berjudul “Integrasi Slack”Tambahkan pemberitahuan Slack ke pipeline Anda:
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_failurePemberitahuan Email
Bagian berjudul “Pemberitahuan Email”Konfigurasi pemberitahuan email di pengaturan proyek GitLab Anda atau gunakan 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: alwaysPengaturan Masalah
Bagian berjudul “Pengaturan Masalah”Masalah Umum
Bagian berjudul “Masalah Umum”Pipeliner gagal dengan “Capgo CLI tidak ditemukan”:
# Debug CLI installationdebug_cli: script: - npm install -g @capgo/cli - which capgo || echo "Capgo CLI not found" - npx @capgo/cli --versionMasalah Autentikasi:
# Verify token configurationdebug_auth: script: - | if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN is not set" exit 1 fi echo "Token length: ${#CAPGO_TOKEN}"Tidak ditemukan artefak pembangunan:
# List build outputsdebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Pipeliner Debug
Bagian berjudul “Pipeliner Debug”Tambahkan informasi debugging untuk mengatasi masalah:
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: - branchesLangkah-Langkah Selanjutnya
Bagian berjudul “Langkah-Langkah Selanjutnya”- Pelajari tentang Saluran untuk mengelola berbagai lingkungan pengembangan
- Eksplorasi Penyimpanan Kustom untuk skenario pengembangan maju
- Tetapkan Enkripsi untuk pengembangan yang aman
- Konfigurasi Perbarui perilaku untuk mengcustomisasi cara perbaruan diterapkan
Dengan integrasi GitLab CI/CD, Anda dapat mengotomatisasi Capgo Anda dan memastikan perbaruan yang konsisten dan dapat diandalkan untuk pengguna aplikasi mobile Anda.
Lanjutkan dari Integrasi GitLab CI/CD
Judul bagian “Lanjutkan dari Integrasi GitLab CI/CD”Jika Anda menggunakan Integrasi GitLab CI/CD untuk merencanakan otomatisasi CI/CD, hubungkannya dengan Capgo CI/CD untuk alur kerja produk di Capgo CI/CD, Capgo Build Nativ untuk alur kerja produk di Capgo Pembangunan Asli Capgo Integrasi untuk alur kerja produk di Capgo Integrasi Integrasi CI/CD untuk detail implementasi di Integrasi CI/CD, dan GitHub Integrasi Aksi untuk detail implementasi di GitHub Integrasi Aksi