Integrasi GitLab CI/CD
Copas prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
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.
Persyaratan sebelumnya
Bagian berjudul “Persyaratan’Sebelum mengatur integrasi GitLab CI/CD, pastikan Anda memiliki:
- Suatu akun GitLab dengan repositori proyek
- Suatu Capgo dengan aplikasi yang telah dikonfigurasi
- Node.js dan npm/yarn yang telah dikonfigurasi di proyek Anda
Mengatur GitLab CI/CD
Bagian berjudul “Mengatur GitLab CI/CD’Langkah 1: Konfigurasi Variabel Lingkungan
Bagian berjudul “Langkah 1: Konfigurasi Variabel Lingkungan’Pertama, atur variabel yang diperlukan di proyek GitLab Anda:
- Navigasikan 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 |
Bagian berjudul “Sederhana”
Konfigurasi dasar yang mengirimkan ke produksi setiap kali push ke cabang utama:Salin ke clipboard
# .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: - mainBagian berjudul “Maju”
Pengiriman Cabang FiturSalin ke clipboard
Bagian berjudul “Pengembangan Cabang Fitur”Deploy 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 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
Bagian berjudul “Menggunakan Enkripsi”Jika Anda menggunakan Capgo’s fitur enkripsianda perlu menyimpan kunci pribadi dengan aman di lingkungan CI/CD.
Setelah mengatur kunci enkripsi secara lokal, tambahkan kunci pribadi Anda ke variabel GitLab: Jendela terminal
# Display your private key content (copy this output)cat .capgo_key_v2dalam variabel proyek GitLab Anda (tandai sebagai dilindungi dan tersembunyi), lalu gunakan di pipeline: CAPGO_PRIVATE_KEY Salin ke clipboard
# 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 productionBagian berjudul “Konfigurasi Saluran Berbagai”
Untuk informasi yang lebih komprehensif tentang pengaturan dan pengelolaan saluran pengiriman yang berbeda, lihat dokumentasiDokumentasi Saluran Konfigurasi lengkap dengan lingkungan yang berbeda dan pengiriman permintaan gabungan:.
Salin ke papan klip
# .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: productionBagian berjudul “Dengan Lingkungan Berbeda dan Persetujuan Manual”
__CAPGO_KEEP_0__Untuk penggunaan 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”Tirukan 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”- Tandai Variabel yang Sensitif: Selalu tandai token API sebagai terlindungi dan tersembunyi
- Kontrol Cabang: Gunakan variabel yang dilindungi untuk pengiriman produksi
- Pengendalian Akses: Batasi akses variabel hanya untuk pengelola
- Rotasi Teratur: Rotasi 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”Pengintegrasian Slack
Integrasi SlackTambahkan 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
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
Bagian berjudul “Pengaturan”Masalah Umum
Bagian berjudul “Masalah Umum”Pipa 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}"Tidak ditemukan artefak pembangunan:
# List build outputsdebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Pipelaj Debug
Bagian berjudul “Pipelaj Debug”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: - branchesLangkah-Langkah Selanjutnya
Bagian berjudul “Langkah-Langkah Selanjutnya”- Pelajari tentang Saluran untuk mengelola berbagai lingkungan pengembangan
- Tamu Penyimpanan Kustom untuk skenario pengembangan yang lebih maju
- Tetapkan Enkripsi untuk pengembangan yang lebih aman
- Konfigurasi Pengaturan Perbarui untuk mengatur bagaimana perbarui diterapkan
Dengan integrasi GitLab CI/CD, Anda dapat mengotomatisasi Capgo Anda dan memastikan perbarui yang konsisten dan dapat diandalkan untuk pengguna aplikasi seluler Anda.
Teruskan dari Integrasi GitLab CI/CD
Judul bagian “Teruskan 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 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.