mcpField
A
azure-pipelines

azure-pipelines

github.com/microsoftクラウド・DevOps194.4k3.2k 回インストール今日更新
リポジトリ

azure-pipelines について

VS Code の開発者向けに、Azure CLI とリポジトリのスクリプトを使った Azure Pipelines の変更検証を案内するスキルです。ビルドの登録、監視、調査、キャンセルを扱います。

主な機能

  1. 01パラメーターを指定したビルド登録
  2. 02ビルド状態の確認と監視
  3. 03ログとアーティファクトのダウンロード
  4. 04ドライラン対応のビルドキャンセル
  5. 05ブランチ上のパイプライン変更検証

活用シーン

  1. 01パイプライン YAML の変更テスト
  2. 02対象を絞った CI ビルドの実行
  3. 03ログを使ったビルド失敗の調査
  4. 04不要になったブランチビルドの停止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/vscode --skill azure-pipelines

インストール後、Claude Code で/azure-pipelinesを入力して読み込まれたか確認します。

同梱ファイルazure-pipeline.ts

詳細

Azure Pipeline の変更の検証

Azure DevOps のパイプラインファイル(build/azure-pipelines/ 内の YAML ファイル)を変更する場合、コミット前に Azure CLI を使って変更をローカルで検証できます。変更をプッシュして CI を待ち、結果を確認するという時間のかかるフィードバックループを避けられます。

前提条件

  1. Azure CLI がインストールされているか確認します:

    az --version
    

    インストールされていない場合は、インストールします:

    # macOS
    brew install azure-cli
    
    # Windows (PowerShell as Administrator)
    winget install Microsoft.AzureCLI
    
    # Linux (Debian/Ubuntu)
    curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    
  2. DevOps 拡張機能がインストールされているか確認します:

    az extension show --name azure-devops
    

    インストールされていない場合は、追加します:

    az extension add --name azure-devops
    
  3. 認証します:

    az login
    az devops configure --defaults organization=https://dev.azure.com/monacotools project=Monaco
    

VS Code のメインビルド

VS Code のメインビルドパイプライン:

VS Code Insider のスケジュールビルド

2 つの Insider ビルドがスケジュールに従って自動実行されます:

  • 朝のビルド:午前 7 時頃(CET)
  • 夜のビルド:午後 7 時頃(CET)

これらのスケジュールビルドでは同じパイプライン定義(111)を使用しますが、Insider リリースを作成するため、main ブランチで実行されます。


ビルドのキュー登録

キュー登録コマンドを使って検証ビルドをキューに登録します:

# Queue a build on the current branch
node .github/skills/azure-pipelines/azure-pipeline.ts queue

# Queue with a specific source branch
node .github/skills/azure-pipelines/azure-pipeline.ts queue --branch my-feature-branch

# Queue with custom parameters
node .github/skills/azure-pipelines/azure-pipeline.ts queue --parameter "VSCODE_BUILD_WEB=false" --parameter "VSCODE_PUBLISH=false"

# Parameter value with spaces
node .github/skills/azure-pipelines/azure-pipeline.ts queue --parameter "VSCODE_BUILD_TYPE=Product Build"

重要:新しいビルドをキューに登録する前に、同じブランチで不要になった以前のビルドをキャンセルしてください。これにより、ビルドエージェントを解放し、リソースの浪費を減らせます:

# ステータスからビルド ID を確認し、キャンセルします
node .github/skills/azure-pipelines/azure-pipeline.ts status
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id <id>
node .github/skills/azure-pipelines/azure-pipeline.ts queue
スクリプトのオプション
オプション説明
--branch <name>ビルドするソースブランチ(デフォルト:現在の git ブランチ)
--definition <id>パイプライン定義 ID(デフォルト:111)
--parameter <entry>KEY=value 形式のパイプラインパラメーター(繰り返し指定可能)。値にスペースが含まれる場合はこちらを使用してください
--parameters <list>KEY=value KEY2=value2 形式の、スペース区切りのパラメーター。値にスペースを含めることはできません
--dry-runコマンドを実行せずに表示します
製品ビルドキューのパラメーター(build/azure-pipelines/product-build.yml)
名前型デフォルト使用可能な値説明
VSCODE_QUALITYstringinsiderexploration、insider、stableビルド品質チャネル
VSCODE_BUILD_TYPEstringProduct BuildProduct、CI製品向けと CI 向けのビルドモード
NPM_REGISTRYstringhttps://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/任意の URLカスタム npm レジストリ
CARGO_REGISTRYstringsparse+https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/Cargo/index/任意の URLカスタム Cargo レジストリ
VSCODE_BUILD_WIN32booleantruetrue、falseWindows x64 をビルド
VSCODE_BUILD_WIN32_ARM64booleantruetrue、falseWindows arm64 をビルド
VSCODE_BUILD_LINUXbooleantruetrue、falseLinux x64 をビルド
VSCODE_BUILD_LINUX_SNAPbooleantruetrue、falseLinux x64 Snap をビルド
VSCODE_BUILD_LINUX_ARM64booleantruetrue、falseLinux arm64 をビルド
VSCODE_BUILD_LINUX_ARMHFbooleantruetrue、falseLinux armhf をビルド
VSCODE_BUILD_ALPINEbooleantruetrue、falseAlpine x64 をビルド
VSCODE_BUILD_ALPINE_ARM64booleantruetrue、falseAlpine arm64 をビルド
VSCODE_BUILD_MACOSbooleantruetrue、falsemacOS x64 をビルド
VSCODE_BUILD_MACOS_ARM64booleantruetrue、falsemacOS arm64 をビルド
VSCODE_BUILD_MACOS_UNIVERSALbooleantruetrue、falsemacOS ユニバーサル版をビルド(両方の macOS アーキテクチャが必要)
VSCODE_BUILD_WEBbooleantruetrue、falseWeb 成果物をビルド
VSCODE_PUBLISHbooleantruetrue、falsebuilds.code.visualstudio.com に公開
VSCODE_RELEASEbooleanfalsetrue、false成功した場合にリリースフローを開始
VSCODE_STEP_ON_ITbooleanfalsetrue、falseテストをスキップ
VSCODE_USE_LEGACY_OSS_NOTICEbooleanfalsetrue、falseComponent Governance の通知の代わりに、従来の mixin ThirdPartyNotices.txt を使用

例:公開やリリースへの影響を最小限に抑えて、CI 向けの検証をすばやく実行します。

node .github/skills/azure-pipelines/azure-pipeline.ts queue \
   --parameter "VSCODE_BUILD_TYPE=CI Build" \
   --parameter "VSCODE_PUBLISH=false" \
   --parameter "VSCODE_RELEASE=false"

ビルド状態の確認

実行中のビルドを監視するには、status コマンドを使用します。

# Get status of the most recent builds
node .github/skills/azure-pipelines/azure-pipeline.ts status

# Get overview of a specific build by ID
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id 123456

# Watch build status (refreshes every 30 seconds)
node .github/skills/azure-pipelines/azure-pipeline.ts status --watch

# Watch with custom interval (60 seconds)
node .github/skills/azure-pipelines/azure-pipeline.ts status --watch 60
スクリプトのオプション
オプション説明
--build-id <id>特定のビルド ID(デフォルト:現在のブランチで最新のビルド)
--branch <name>ブランチ名でビルドを絞り込みます(そのブランチの直近 20 件を表示)
--reason <reason>理由でビルドを絞り込みます:manual、individualCI、batchedCI、schedule、pullRequest
--definition <id>パイプライン定義 ID(デフォルト:111)
--watch [seconds]ビルドが完了するまで状態を継続的に確認します(デフォルト:30s)
--download-log <id>指定したログを /tmp にダウンロード
--download-artifact <name>成果物を /tmp にダウンロード
--jsonプログラムで処理するための生の JSON を出力

ビルドのキャンセル

実行中のビルドを停止するには、cancel コマンドを使用します。

# Cancel a build by ID (use status command to find IDs)
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id 123456

# Dry run (show what would be cancelled)
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id 123456 --dry-run
スクリプトのオプション
オプション説明
--build-id <id>キャンセルするビルド ID(必須)
--definition <id>パイプライン定義 ID(デフォルト:111)
--dry-run実行せずに、キャンセルされる内容を表示

パイプラインの変更をテストする

ユーザーから Azure Pipelines のビルドで変更をテストする よう依頼された場合は、次のワークフローに従います。

  1. 現在のブランチで新しいビルドをキューに登録します
  2. ビルドが完了するまで、ビルド状態を定期的に確認して完了を待ちます
ビルド完了のポーリング

シェルループと sleep を使用して、ビルドのステータスをポーリングします。sleep コマンドは、主要なすべてのオペレーティングシステムで動作します。

# Queue the build and note the build ID from output (e.g., 123456)
node .github/skills/azure-pipelines/azure-pipeline.ts queue

# Poll every 60 seconds until complete (works on macOS, Linux, and Windows with Git Bash/WSL)
# Replace <BUILD_ID> with the actual build ID from the queue command
while true; do
  node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id <BUILD_ID> --json 2>/dev/null | grep -q '"status": "completed"' && break
  sleep 60
done

# Check final result
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id <BUILD_ID>

または、ポーリングを自動的に処理する組み込みの --watch フラグを使用します。

node .github/skills/azure-pipelines/azure-pipeline.ts queue
# Use the build ID returned by the queue command
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id <BUILD_ID> --watch

注:デフォルトでは、--watch フラグは30秒ごとにポーリングします。API 呼び出しを減らすには、60秒間隔の --watch 60 を使用してください。


一般的なワークフロー

1. パイプラインのクイック検証
# Make your YAML changes, then:
git add -A && git commit -m "test: pipeline changes"
git push origin HEAD

# Check for any previous builds on this branch and cancel if needed
node .github/skills/azure-pipelines/azure-pipeline.ts status
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id <id>  # if there's an active build

# Queue and watch the new build
node .github/skills/azure-pipelines/azure-pipeline.ts queue
node .github/skills/azure-pipelines/azure-pipeline.ts status --watch
2. ビルドの調査
# Get overview of a build (shows stages, artifacts, and log IDs)
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id 123456

# Download a specific log for deeper inspection
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id 123456 --download-log 5

# Download an artifact
node .github/skills/azure-pipelines/azure-pipeline.ts status --build-id 123456 --download-artifact unsigned_vscode_cli_win32_x64_cli
3. パラメーターを変更してテスト
# Customize build matrix for quicker validation
node .github/skills/azure-pipelines/azure-pipeline.ts queue \
   --parameter "VSCODE_BUILD_TYPE=CI Build" \
   --parameter "VSCODE_BUILD_WEB=false" \
   --parameter "VSCODE_BUILD_ALPINE=false" \
   --parameter "VSCODE_BUILD_ALPINE_ARM64=false" \
   --parameter "VSCODE_PUBLISH=false"
4. 実行中のビルドをキャンセル
# First, find the build ID
node .github/skills/azure-pipelines/azure-pipeline.ts status

# Cancel a specific build by ID
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id 123456

# Dry run to see what would be cancelled
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id 123456 --dry-run
5. パイプラインの変更を反復

パイプライン YAML の変更を反復する際は、新しいビルドをキューに追加する前に、必ず古いビルドをキャンセルしてください。

# Push new changes
git add -A && git commit --amend --no-edit
git push --force-with-lease origin HEAD

# Find the outdated build ID and cancel it
node .github/skills/azure-pipelines/azure-pipeline.ts status
node .github/skills/azure-pipelines/azure-pipeline.ts cancel --build-id <id>

# Queue a fresh build and monitor
node .github/skills/azure-pipelines/azure-pipeline.ts queue
node .github/skills/azure-pipelines/azure-pipeline.ts status --watch

トラブルシューティング

認証の問題
# Re-authenticate
az logout
az login

# Check current account
az account show
拡張機能が見つからない
az extension add --name azure-devops --upgrade
レート制限

レート制限に達した場合は、API 呼び出しの間に遅延を追加するか、より長い間隔を指定して --watch を使用してください。

コメント