Integrasi GitLab CI/CD
Pengaturan siap dicopy dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Integrasikan Capgo Live Updates dengan GitLab CI/CD untuk mengaktifkan otomatisasi update aplikasi Anda setiap kali Anda push code perubahan. Panduan ini membahas mengatur build otomatis, pengujian, dan alur kerja pengiriman.
Persyaratan
Judul Bagian “Persyaratan”Sebelum mengatur integrasi GitLab CI/CD, pastikan Anda memiliki:
- Rekening GitLab dengan repositori proyek
- Rekening Capgo dengan aplikasi yang telah dikonfigurasi
- Node.js dan npm/yarn yang telah dikonfigurasi di proyek Anda
Mengatur Integrasi GitLab CI/CD
Judul Bagian “Mengatur Integrasi GitLab CI/CD”Langkah 1: Konfigurasi Variabel Lingkungan
Langkah 1: Konfigurasi Variabel LingkunganJudul Bagian “Langkah 1: Konfigurasi Variabel Lingkungan”
- Luncurkan ke proyek GitLab Anda
- Pergi ke Pengaturan → CI/CD → Variabel
- Tambahkan variabel berikut:
| Nama Variabel | Nilai | Dilindungi | Tersembunyi |
|---|---|---|---|
CAPGO_TOKEN | Token Anda Capgo API | ✅ Ya | ✅ Ya |
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: - mainDeploymen Feature Branch
Judul Bagian “Deploymen Feature Branch”Deploykan cabang fitur ke saluran uji untuk tinjauan dan pengujian:
# 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 add $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 Fitur enkripsi CapgoUntuk itu, 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 di 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 Multi-Channel
Bab yang berjudul “Konfigurasi Multi-Channel”Untuk informasi yang lebih komprehensif tentang mengatur dan mengelola beberapa saluran pengiriman, 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 add $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-Lingkungan dengan Persetujuan Manual
Judul Bagian: “Multi-Environment 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
Judul Bagian: “Strategi Pengiriman Berdasarkan Cabang”Kirim 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 Keamanan Terbaik
Judul Bagian: “Praktik Keamanan Terbaik”Variabel Terlindungi
Judul Bagian: “Variabel Terlindungi”- Mark Variabel yang Sensitive: Selalu tandai token API sebagai terlindungi dan tersembunyi
- Pengamanan Cabang: Gunakan variabel terlindungi untuk pengiriman produksi
- Kontrol Akses: Batasi akses variabel hanya untuk pemelihara
- Rotasi Teratur: Rotasi token API secara teratur
Konfigurasi Pipa yang Aman
Bagian berjudul “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
Judul Bagian “Integrasi Slack”Tambahkan pemberitahuan Slack ke pipa 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
Judul Bagian “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: alwaysTroubleshooting
Judul Bagian “Pengaturan”Masalah Umum
Judul Bagian “Masalah Umum”Pipeline 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 --versionError 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}"Artifak build tidak ditemukan:
# List build outputsdebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Pipelir Debug
Bab yang berjudul “Debug Pipeline”Tambahkan informasi debugging untuk menyelesaikan 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: - branchesNext Steps
Bab yang berjudul “Langkah Selanjutnya”- Belajar tentang Saluran Untuk mengelola berbagai lingkungan pengiriman
- Explore Penyimpanan Khusus untuk skenario pengiriman lanjutan
- Atur Encryption Untuk Deploymen yang Aman
- Enkripsi untuk pengiriman yang lebih aman mengatur cara pembaruan diterapkan
Melalui integrasi GitLab CI/CD, Anda dapat otomatisasi Capgo Anda dan memastikan pembaruan yang konsisten dan dapat diandalkan untuk pengguna aplikasi seluler Anda.
Teruskan dari Integrasi GitLab CI/CD
Judul Bagian: Teruskan dari Integrasi GitLab CI/CDJika 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 Pembangunan Nativ untuk alur kerja produk di Capgo Pembangunan Nativ, 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