Lompat ke konten

Integrasi GitLab CI/CD

Integrasikan Capgo Live Updates dengan GitLab CI/CD untuk memperbarui aplikasi Anda secara otomatis setiap kali Anda push code perubahan. Panduan ini menjelaskan pengaturan otomatis build, pengujian, dan alur kerja pengiriman.

Sebelum mengatur integrasi CI/CD GitLab, pastikan Anda memiliki:

  • Akun GitLab dengan repositori proyek
  • Akun Capgo dengan aplikasi yang telah dikonfigurasi
  • Node.js dan npm/yarn telah dikonfigurasi di proyek Anda

Langkah 1: Konfigurasi Variabel Lingkungan

Bab berjudul “Langkah 1: Konfigurasi Variabel Lingkungan”

Pertama-tama, atur variabel yang diperlukan di proyek GitLab Anda:

  1. Navigasikan ke proyek GitLab Anda
  2. Pergi ke PengaturanCI/CDVariabel
  3. Tambahkan variabel berikut:
Nama VariabelNilaiDilindungiDitutupi
CAPGO_TOKENToken Anda Capgo API✅ Ya✅ Ya

Konfigurasi dasar yang mengirimkan ke produksi setiap kali push ke cabang utama:

# .gitlab-ci.yml - Simple Configuration
image: 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:
- main

Kirimkan cabang fitur ke saluran uji untuk tinjauan dan pengujian:

# Feature branch deployment
deploy_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_NAME

Jika Anda menggunakan Capgo’s fitur enkripsi, Anda akan perlu menyimpan kunci pribadi Anda secara aman di lingkungan CI/CD Anda.

Setelah mengatur kunci enkripsi Tambahkan kunci pribadi Anda secara lokal ke variabel GitLab:

Jendela Terminal
# Display your private key content (copy this output)
cat .capgo_key_v2

Tambahkan konten ini sebagai CAPGO_PRIVATE_KEY di variabel proyek GitLab Anda (tandai sebagai terlindungi dan tersembunyi), lalu gunakan di pipeline:

# Deploy with encryption
deploy_production:
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --key-data-v2 "$CAPGO_PRIVATE_KEY" --channel production

Untuk informasi yang lebih komprehensif tentang pengaturan dan pengelolaan beberapa saluran pengiriman, lihat dokumentasi Dokumentasi Saluran.

Konfigurasi lengkap dengan beberapa lingkungan dan pengiriman permintaan gabungan:

# .gitlab-ci.yml - Advanced Multi-Channel Configuration
image: node:22
stages:
- build
- deploy
variables:
npm_config_cache: "$CI_PROJECT_DIR/.npm"
# Build stage
build:
stage: build
script:
- npm ci
- npm run test
- npm run build
artifacts:
paths:
- dist/
expire_in: 24 hours
# Deploy to development channel
deploy_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 channels
deploy_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 closed
cleanup_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 staging
deploy_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 production
deploy_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: production

Multi-Lingkungan dengan Persetujuan Manual

Judul Bagian “Multi-Lingkungan 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: production

Strategi Pengiriman Berdasarkan Cabang

Strategi Pengiriman Berdasarkan Cabang

Deploy cabang yang berbeda ke saluran yang tepat secara otomatis:

# Dynamic channel deployment based on branch
deploy:
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: $CHANNEL
  1. Mark Sensitive VariablesSelalu tandai token API sebagai terlindungi dan tersembunyi
  2. Pengamanan CabangGunakan variabel terlindungi untuk pengiriman produksi
  3. Pengendalian AksesAkses variabel hanya untuk pemelihara saja
  4. Pengaturan Rotasi RegulerRotasi API secara teratur

Konfigurasi Pipa yang Aman

Bab: Konfigurasi Pipa yang Aman
# Use protected variables for production
deploy_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

Bab: Pengawasan dan Pemberitahuan

Pengintegrasian Slack

Bab: Pengintegrasian 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_failure

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: always

Pipelain gagal dengan “Capgo CLI tidak ditemukan”:

# Debug CLI installation
debug_cli:
script:
- npm install -g @capgo/cli
- which capgo || echo "Capgo CLI not found"
- npx @capgo/cli --version

Gagal Autentikasi:

# Verify token configuration
debug_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 outputs
debug_build:
script:
- ls -la dist/
- find dist/ -type f -name "*.js" -o -name "*.html"

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:
- branches

Dengan integrasi GitLab CI/CD, Anda dapat mengautomatisasi Capgo Anda dan memastikan pembaruan yang konsisten dan dapat diandalkan untuk pengguna aplikasi seluler Anda.

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.