Azure DevOpsと連携
インストールステップとこのプラグインの全マークダウンガイドを含むセットアップの質問をコピーする。
Integrate Capgo Live Updates with Azure DevOps Pipelines to automatically deploy your app updates whenever you push code changes. This guide covers setting up automated builds, testing, and deployment workflows.
前提条件
「前提条件」のセクションCapgoライブアップデートとAzure DevOpsの統合を設定する前に、以下の条件を満たしてください。
- Azure DevOpsの組織とプロジェクト
- A Capgo account with an app configured
- Your app’s source code in an Azure Repos Git repository
- Node.js and npm/yarn configured in your project
CapgoライブアップデートとAzure DevOps Pipelinesの設定
CapgoライブアップデートとAzure DevOps Pipelinesの設定のセクションStep 1: Create Pipeline Variables
Step 1: Create Pipeline Variablesまず、Azure DevOps プロジェクトで必要な変数を設定してください。
- Azure DevOps プロジェクトに移動してください。
- Go to パイプライン → ライブラリ → 変数グループ
- 新しい変数グループを作成してください。
Capgo-Variables - 以下の変数を追加してください。
| 変数名 | 値 | セキュア |
|---|---|---|
CAPGO_TOKEN | あなたの Capgo API トークン | ✅ Yes |
「シンプル」のセクション
メインブランチへのプッシュごとにプロダクションにデプロイする簡単な設定:「シンプル」
# Simple Azure DevOps Pipeline for Capgo Live Updatestrigger: branches: include: - main
variables: - group: Capgo-Variables
jobs: - job: BuildAndDeploy displayName: 'Build and Deploy to Capgo' pool: vmImage: 'ubuntu-latest'
steps: - task: NodeTool@0 displayName: 'Setup Node.js' inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel production displayName: 'Deploy to Capgo'高度な機能
「高度な機能」タイトルのセクション機能ブランチの展開
「機能ブランチの展開」タイトルのセクション機能ブランチをテストチャンネルに展開して、レビューとテストを行います:
# Feature branch deploymenttrigger: branches: include: - feature/*
variables: - group: Capgo-Variables
jobs: - job: DeployFeature displayName: 'Deploy Feature Branch' pool: vmImage: 'ubuntu-latest' condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/feature/')
steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- script: | BRANCH_NAME=$(echo "$(Build.SourceBranchName)" | sed 's/[^a-zA-Z0-9-]/-/g') CHANNEL_NAME="feature-$BRANCH_NAME" npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey $(CAPGO_TOKEN) || true npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel $CHANNEL_NAME displayName: 'Deploy to Feature Channel'暗号化を使用しています
「暗号化を使用しています」というセクションあなたが「暗号化を使用しています」の機能を使用している場合 Capgoの暗号化機能を使用している場合あなたはCI/CD環境であなたの秘密鍵を安全に保存する必要があります。
暗号化キーを設定した後 ローカルに暗号化キーを設定した後 あなたのプライベートキーをAzure DevOps変数に追加してください:
# Display your private key content (copy this output)cat .capgo_key_v2Azure DevOps変数グループに次の内容を追加してください(マークしてシークレットとして保存)、そしてパイプラインで使用してください: CAPGO_PRIVATE_KEY 暗号化キーを設定した後
# Deploy with encryption- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --key-data-v2 "$(CAPGO_PRIVATE_KEY)" --channel production displayName: 'Deploy to Capgo with Encryption'Multi-Channel Configuration
環境の複数チャネル設定についての詳細情報は、チャンネルドキュメントを参照してください. __CAPGO_KEEP_0__.
複数の環境とプルリクエストデプロイメントで完全な構成:
# Advanced Azure DevOps Pipeline with Multiple Channelstrigger: branches: include: - main - develop
pr: branches: include: - main - develop
variables: - group: Capgo-Variables
stages: # Build stage - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
# Deploy to development - stage: DeployDev condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop')) jobs: - deployment: DeployDevelopment environment: development pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel development --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to Development'
# Deploy PR to test channel - stage: DeployPR condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) jobs: - job: DeployPRChannel pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | CHANNEL_NAME="pr-$(System.PullRequest.PullRequestNumber)" npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey $(CAPGO_TOKEN) || true npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel $CHANNEL_NAME --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to PR Channel'
# Deploy to production - stage: DeployProd condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - deployment: DeployProduction environment: production pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel production --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to Production'複数の環境のデプロイ
「複数の環境のデプロイ」セクション複数の環境の複雑なシナリオに対して:
# Extended pipeline with multiple environmentsparameters: - name: deployEnvironment displayName: 'Deploy Environment' type: string default: 'staging' values: - staging - production
variables: - group: Capgo-Variables - name: channelName ${{ if eq(parameters.deployEnvironment, 'production') }}: value: 'production' ${{ else }}: value: 'staging'
stages: # Build stage - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
- stage: DeployStaging displayName: 'Deploy to Staging' dependsOn: Build condition: and(succeeded(), eq('${{ parameters.deployEnvironment }}', 'staging')) jobs: - deployment: DeployStaging displayName: 'Deploy to Staging Channel' pool: vmImage: 'ubuntu-latest' environment: 'staging' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: 'staging'
- stage: DeployProduction displayName: 'Deploy to Production' dependsOn: Build condition: and(succeeded(), eq('${{ parameters.deployEnvironment }}', 'production')) jobs: - deployment: DeployProduction displayName: 'Deploy to Production Channel' pool: vmImage: 'ubuntu-latest' environment: 'production' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: 'production'デプロイテンプレート (deploy-steps.yml)
「デプロイテンプレート (deploy-steps.yml)」セクション再利用可能なテンプレートファイルを作成 deploy-steps.yml:
parameters: - name: channel type: string
steps: - task: NodeTool@0 displayName: 'Install Node.js' inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 displayName: 'Download build artifacts' inputs: artifactName: 'app-build' downloadPath: '$(System.ArtifactsDirectory)'
- script: | npm install -g @capgo/cli displayName: 'Install Capgo CLI'
- script: | npx @capgo/cli bundle upload \ --apikey $(CAPGO_TOKEN) \ --channel ${{ parameters.channel }} \ --path $(System.ArtifactsDirectory)/app-build displayName: 'Upload to Capgo (${{ parameters.channel }})'ブランチベースのデプロイ戦略
Branch-Based Deployment StrategyGit ブランチに基づくデプロイメント ストラテジーを設定します。
trigger: branches: include: - main - develop - feature/*
variables: - group: Capgo-Variables - name: targetChannel ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}: value: 'production' ${{ elseif eq(variables['Build.SourceBranch'], 'refs/heads/develop') }}: value: 'staging' ${{ else }}: value: 'development'
stages: - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
- stage: Deploy displayName: 'Deploy to $(targetChannel)' dependsOn: Build condition: succeeded() jobs: - deployment: DeployJob displayName: 'Deploy to $(targetChannel) Channel' pool: vmImage: 'ubuntu-latest' environment: '$(targetChannel)' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: '$(targetChannel)'セキュリティ ベスト プラクティス
セキュリティ ベスト プラクティスセキュアな変数管理
セクション「セキュアな変数管理」- 変数 グループを使用して、Azure DevOps での敏感なデータを保存します。シークレット マーク
- すべての __CAPGO_KEEP_0__ トークンとキーをシークレット変数としてマークします。: Always mark API tokens and keys as secret variables
- Branch-Based Deployment Strategy: __CAPGO_KEEP_0__ のグループへのアクセスを特定のパイプラインとユーザーに制限する
- キーを回転する: 定期的に Capgo API を回転する
監視と通知
「監視と通知」のセクションチーム統合
「チーム統合」のセクションパイプラインに Microsoft Teams の通知を追加する:
- task: ms-teams-deploy-card@1.4.1 displayName: 'Notify Teams on Success' condition: succeeded() inputs: webhookUri: '$(TEAMS_WEBHOOK_URL)' title: 'Capgo Deployment Successful' text: 'App deployed to $(targetChannel) channel' themeColor: '00FF00'
- task: ms-teams-deploy-card@1.4.1 displayName: 'Notify Teams on Failure' condition: failed() inputs: webhookUri: '$(TEAMS_WEBHOOK_URL)' title: 'Capgo Deployment Failed' text: 'Deployment to $(targetChannel) failed' themeColor: 'FF0000'メール通知
「メール通知」のセクションデプロイメントステータスのメール通知を設定する:
- task: EmailReport@1 displayName: 'Send Email Report' condition: always() inputs: sendMailConditionConfig: 'Always' subject: 'Capgo Deployment Report - $(Build.BuildNumber)' to: 'team@yourcompany.com' body: | Deployment Status: $(Agent.JobStatus) Channel: $(targetChannel) Build: $(Build.BuildNumber) Commit: $(Build.SourceVersion)トラブルシューティング
「トラブルシューティング」セクション一般的な問題
「一般的な問題」セクションパイプラインが「Capgo CLI not found」で失敗します:
# Ensure global installation- script: | npm install -g @capgo/cli which capgo || echo "Capgo CLI not found in PATH" displayName: 'Install and verify Capgo CLI'認証エラー:
# Verify token is correctly set- script: | echo "Token length: ${#CAPGO_TOKEN}" if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN is not set" exit 1 fi displayName: 'Verify Capgo token' env: CAPGO_TOKEN: $(CAPGO_TOKEN)ビルドアーティファクトが見つかりません:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'デバッグパイプライン
デバッグ パイプライン問題をトラブルシューティングするためにデバッグ ステップを追加します:
- script: | echo "Build.SourceBranch: $(Build.SourceBranch)" echo "Build.BuildNumber: $(Build.BuildNumber)" echo "Target Channel: $(targetChannel)" displayName: 'Debug Pipeline Variables'
- script: | npx @capgo/cli app debug --apikey $(CAPGO_TOKEN) displayName: 'Debug Capgo App Status'次のステップ
セクション「次のステップ」- を学びましょう チャンネル 異なるデプロイ環境を管理する
- を探索 高度なデプロイシナリオ用のカスタム ストレージ を設定
- __CAPGO_KEEP_0__ 暗号化 安全な展開用
- 設定 更新動作 更新を適用する方法をカスタマイズする
Azure DevOps統合を使用すると、Capgo展開を自動化し、モバイルアプリのユーザーに一貫した、信頼性の高い更新を保証できます。
Azure DevOps統合から続けて
Azure DevOps統合から続けてAzure DevOps統合を使用している場合 Azure DevOps統合 CI/CD自動化の計画を立てるにはCI/CDを__CAPGO_KEEP_0__に接続する必要があります。 Capgo CI/CD 製品ワークフローにおけるCapgo CI/CDの Capgoネイティブビルド 製品ワークフローにおけるCapgoネイティブビルドの Capgo統合 製品ワークフローにおけるCapgo統合の CI/CD統合 CI/CD統合の実装詳細、 GitHubアクション統合の 実装詳細GitHubアクション統合の