GitHub 액션 통합
설치
Integrate Capgo Live Updates with GitHub Actions to automatically deploy your app updates whenever you push code changes. This guide covers setting up automated builds, testing, and deployment workflows using GitHub’s powerful CI/CD platform.
사전 조건
‘사전 조건’이라는 제목의 섹션GitHub Actions 통합을 설정하기 전에 다음을 확인하세요:
- GitHub 리포지토리와 앱의 원본 code
- Capgo 계정과 앱이 구성된 계정
- Node.js 및 npm/yarn이 프로젝트에 구성된 경우
- GitHub Actions가 리포지토리에 활성화된 경우
GitHub Live Updates
GitHub Actions를 설정하는 방법Step 1: 리포지토리 비밀을 구성하세요
Section titled “1단계: 저장소 비밀 설정”Set up the necessary secrets in your GitHub repository:
- Navigate to your GitHub repository
- 로 이동하세요 설정 → 비밀 및 변수 → 액션
- 클릭 새 저장소 비밀 추가 및 다음을 입력하세요:
| 비밀 이름 | 값 |
|---|---|
CAPGO_TOKEN | Capgo API 계정 |
기본적인 프로덕션 배포
기본적인 프로덕션 배포__CAPGO_KEEP_0__ 브랜치에 푸시할 때마다 프로덕션으로 배포하는 기본적인 구성으로 시작하세요.
# Simple GitHub Actions Workflow for Capgo Live Updatesname: Deploy to Capgo
on: push: branches: - main
jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install, test and build run: | npm ci npm run test npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --channel production env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"고급 다중 채널 구성
고급 다중 채널 구성기능 branch 배포
기능 branch 배포기능 branch를 임시 채널에 배포하여 테스트:
# Feature branch deploymentname: Deploy Feature Branch to Capgo
on: push: branches: - 'feature/**'
jobs: deploy-feature: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- name: Deploy to feature channel run: | CHANNEL_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME암호화 사용
암호화 사용이 암호화 기능을 사용 중이라면 Capgo의 암호화 기능을 사용 중이라면,당신의 CI/CD 환경에서 개인 키를 안전하게 저장해야 합니다.
설정 설정 로컬에서, 개인 키를 GitHub secret에 추가하세요.
# Display your private key content (copy this output)cat .capgo_key_v2이 콘텐츠를 추가하세요 CAPGO_PRIVATE_KEY repository secrets, GitHub에서 사용한 후 워크플로우에서 사용하세요.
# Deploy with encryption- name: Deploy to Capgo with Encryption run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" --channel production다중 채널 구성
다중 채널 구성다중 배포 채널을 설정하고 관리하는 데 대한 자세한 정보는 채널 문서.
개발, pull request, 및 프로덕션 배포와 같은 완전한 워크플로우:
# Complete multi-environment workflowname: Deploy to Capgo
on: push: branches: [main, develop] pull_request: branches: [main, develop]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- uses: actions/upload-artifact@v4 with: name: dist path: dist/
deploy-development: if: github.ref == 'refs/heads/develop' needs: build runs-on: ubuntu-latest environment: development steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel development
deploy-pr: if: github.event_name == 'pull_request' needs: build runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- name: Deploy to PR channel run: | CHANNEL_NAME="pr-${{ github.event.number }}" npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME
- name: Comment PR uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `🚀 This PR has been deployed to Capgo channel: \`pr-${{ github.event.number }}\`\n\nTo test this update in your app, configure it to use this channel. [Learn how to configure channels →](/docs/live-updates/channels/#configuring-the-channel-in-your-app)` })
deploy-production: if: github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest environment: production steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel production기능 채널 정리
기능 채널 정리 제목Branch가 삭제될 때 자동으로 기능 채널을 정리합니다.
name: Cleanup Feature Channels
on: delete:
jobs: cleanup: runs-on: ubuntu-latest if: github.event.ref_type == 'branch' && startsWith(github.event.ref, 'feature/') steps: - uses: actions/setup-node@v6 with: node-version: '24'
- name: Delete Capgo channel run: | CHANNEL_NAME=$(echo "${{ github.event.ref }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel delete $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true보안 및最佳 관행
보안 및最佳 관행 제목환경 보호 규칙
환경 보호 규칙 제목GitHub에서 환경 보호 규칙을 설정합니다.
- 이동 설정 → 환경 repository에서
- 환경 설정:
development,staging,production - 생산 환경을 위해 추가:
- 필수 검토자: 배포를 승인해야 하는 팀원 추가
- 대기 시간: 배포 전 지연 시간 (선택)
- 배포 branch:
mainbranch만
보안 시크릿 관리
보안 시크릿 관리환경에 따라 특정한 비밀을 사용하세요:
# Use different secrets per environmentdeploy-production: environment: production steps: - name: Deploy to Production run: | npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_PROD_TOKEN }} \ --app ${{ secrets.CAPGO_PROD_APP_ID }} \ --channel production모니터링 및 알림
모니터링 및 알림슬랙 통합
슬랙 통합워크플로에 슬랙 알림을 추가하세요:
name: Deploy with Notifications
jobs: deploy: runs-on: ubuntu-latest steps: # ... deployment steps
- name: Notify Slack on Success if: success() uses: 8398a7/action-slack@v3 with: status: success text: '✅ Capgo deployment successful!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack on Failure if: failure() uses: 8398a7/action-slack@v3 with: status: failure text: '❌ Capgo deployment failed!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}디스코드 통합
디스코드 통합디스코드로 알림을 보냅니다:
- name: Discord notification if: always() uses: Ilshidur/action-discord@master with: args: | Capgo deployment ${{ job.status }}! App: ${{ secrets.CAPGO_APP_ID }} Channel: ${{ github.ref_name }} Commit: ${{ github.sha }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}__CAPGO_KEEP_0__ 알림
__CAPGO_KEEP_0__ 제목: 알림__CAPGO_KEEP_0__ 설정:
- name: Send email notification if: failure() uses: dawidd6/action-send-mail@v3 with: server_address: smtp.gmail.com server_port: 465 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 'Capgo Deployment Failed - ${{ github.repository }}' to: team@yourcompany.com from: ci-cd@yourcompany.com body: | Deployment failed for ${{ github.repository }} Branch: ${{ github.ref_name }} Commit: ${{ github.sha }} Workflow: ${{ github.workflow }}__CAPGO_KEEP_1__
__CAPGO_KEEP_1__ 제목: __CAPGO_KEEP_1____CAPGO_KEEP_2__ 워크플로우
__CAPGO_KEEP_2__ 제목: __CAPGO_KEEP_2____CAPGO_KEEP_3__ 문제 해결을 위해 디버깅 단계를 추가하세요:
- name: Debug environment run: | echo "Node version: $(node --version)" echo "NPM version: $(npm --version)" echo "Working directory: $(pwd)" echo "Files in dist/: $(ls -la dist/ || echo 'No dist directory')" echo "Environment variables:" env | grep -E "(GITHUB_|CAPGO_)" | sort
- name: Test Capgo CLI run: | npx @capgo/cli --version npx @capgo/cli app debug --apikey ${{ secrets.CAPGO_TOKEN }} --app ${{ secrets.CAPGO_APP_ID }}__CAPGO_KEEP_4__ 일반적인 문제와 해결 방법
__CAPGO_KEEP_4__ 제목: __CAPGO_KEEP_4__워크플로우가 “CAPGO_TOKEN not found”라는 오류로 실패합니다.:
- name: Verify secrets run: | if [ -z "${{ secrets.CAPGO_TOKEN }}" ]; then echo "ERROR: CAPGO_TOKEN secret is not set" exit 1 fi echo "CAPGO_TOKEN is set (length: ${#CAPGO_TOKEN})" env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}빌드 아티팩트가 발견되지 않습니다.:
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10네트워크 연결 문제:
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"재사용 가능한 워크플로우
제목이 “재사용 가능한 워크플로우”인 섹션프로젝트 간 일관성을 위해 재사용 가능한 워크플로우를 만들 수 있습니다.:
name: Reusable Capgo Deploy
on: workflow_call: inputs: environment: required: true type: string channel: required: true type: string secrets: CAPGO_TOKEN: required: true CAPGO_APP_ID: required: true
jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps: - uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install and build run: | npm ci npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_TOKEN }} \ --app ${{ secrets.CAPGO_APP_ID }} \ --channel ${{ inputs.channel }}재사용 가능한 워크플로우를 사용하십시오.
name: Deploy App
on: push: branches: [main, develop]
jobs: deploy-dev: if: github.ref == 'refs/heads/develop' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: development channel: development secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}
deploy-prod: if: github.ref == 'refs/heads/main' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: production channel: production secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}다음 단계
다음 단계- Learn about Capgo 채널 다양한 배포 환경을 관리합니다.
- 탐색 커스텀 스토리지 고급 배포 시나리오를 위한
- 설치하기 암호화 안전한 배포를 위해
- 설정 업데이트 동작 업데이트가 적용되는 방식을 맞춤화하기 위해
With GitHub Actions 통합을 사용하면 GitHub의 강력한 CI/CD 플랫폼을 활용하여 Capgo Live Updates에 내장된 보안, 모니터링 및 협업 기능을 갖춘 정교한 배포 워크플로를 생성할 수 있습니다.