
Azure Pipelines
Queue and inspect Azure DevOps builds for VS Code pipeline YAML so you validate CI changes without pushing and waiting on full remote runs.
Overview
Azure-pipelines is an agent skill for the Ship phase that validates Azure DevOps pipeline YAML for VS Code by queueing builds, checking status, and reading logs with Azure CLI before commit.
Install
npx skills add https://github.com/microsoft/vscode --skill azure-pipelinesWhat is this skill?
- Local validation loop for YAML under build/azure-pipelines/ via Azure CLI
- Documents az login, azure-devops extension, and org/project defaults
- VS Code main build: monacotools/Monaco definition ID 111
- Queue builds, poll status, and tail logs without full CI wait
- Covers Insider scheduled build definitions for iteration
- VS Code main build pipeline definition ID 111 (monacotools / Monaco)
- Targets YAML under build/azure-pipelines/
Adoption & trust: 1.4k installs on skills.sh; 186k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You changed pipeline YAML but only learn if it works after a slow remote CI run and a failed main build.
Who is it for?
VS Code contributors or fork maintainers editing azure-pipelines YAML who already use Azure DevOps at monacotools/Monaco.
Skip if: GitHub Actions-only repos, builders without Azure DevOps access, or app feature work unrelated to CI definitions.
When should I use this skill?
Modifying Azure DevOps pipeline files for the VS Code build—queue builds, check status, view logs, iterate on YAML without full CI waits.
What do I get? / Deliverables
You queue targeted Azure DevOps builds, inspect status and logs from the terminal, and iterate on YAML with faster feedback before pushing.
- Queued pipeline run with verified status
- Log-informed YAML fixes before push
Recommended Skills
Journey fit
How it compares
Azure DevOps CLI validation loop for VS Code—not generic GitHub Actions or local-only unit test skills.
Common Questions / FAQ
Who is azure-pipelines for?
Developers working on the VS Code repository (or similar Azure DevOps–backed projects) who edit pipeline YAML and need quicker build feedback.
When should I use azure-pipelines?
During Ship testing when you modify build/azure-pipelines/ YAML and want to queue definition 111 (or Insider schedules), check status, and read logs before committing.
Is azure-pipelines safe to install?
It instructs authenticated Azure CLI against your DevOps org; review the Security Audits panel on this Prism page and use least-privilege tokens and non-production test queues when experimenting.
SKILL.md
READMESKILL.md - Azure Pipelines
# Validating Azure Pipeline Changes When modifying Azure DevOps pipeline files (YAML files in `build/azure-pipelines/`), you can validate changes locally using the Azure CLI before committing. This avoids the slow feedback loop of pushing changes, waiting for CI, and checking results. ## Prerequisites 1. **Check if Azure CLI is installed**: ```bash az --version ``` If not installed, install it: ```bash # 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. **Check if the DevOps extension is installed**: ```bash az extension show --name azure-devops ``` If not installed, add it: ```bash az extension add --name azure-devops ``` 3. **Authenticate**: ```bash az login az devops configure --defaults organization=https://dev.azure.com/monacotools project=Monaco ``` ## VS Code Main Build The main VS Code build pipeline: - **Organization**: `monacotools` - **Project**: `Monaco` - **Definition ID**: `111` - **URL**: https://dev.azure.com/monacotools/Monaco/_build?definitionId=111 ## VS Code Insider Scheduled Builds Two Insider builds run automatically on a scheduled basis: - **Morning build**: ~7:00 AM CET - **Evening build**: ~7:00 PM CET These scheduled builds use the same pipeline definition (`111`) but run on the `main` branch to produce Insider releases. --- ## Queueing a Build Use the [queue command](./azure-pipeline.ts) to queue a validation build: ```bash # 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" ``` > **Important**: Before queueing a new build, cancel any previous builds on the same branch that you no longer need. This frees up build agents and reduces resource waste: > ```bash > # Find the build ID from status, then cancel it > 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 > ``` ### Script Options | Option | Description | |--------|-------------| | `--branch <name>` | Source branch to build (default: current git branch) | | `--definition <id>` | Pipeline definition ID (default: 111) | | `--parameter <entry>` | Pipeline parameter in `KEY=value` format (repeatable); **use this when the value contains spaces** | | `--parameters <list>` | Space-separated parameters in `KEY=value KEY2=value2` format; values **must not** contain spaces | | `--dry-run` | Print the command without executing | ### Product Build Queue Parameters (`build/azure-pipelines/product-build.yml`) | Name | Type | Default | Allowed Values | Description | |------|------|---------|----------------|-------------| | `VSCODE_QUALITY` | string | `insider` | `exploration`, `insider`, `stable` | Build quality channel | | `VSCODE_BUILD_TYPE` | string | `Product Build` | `Product`, `CI` | Build mode for Product vs CI | | `NPM_REGISTRY` | string | `https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/` | any URL | Custom npm registry | | `CARGO_REGISTRY` | string | `sparse+https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/Cargo/index/` | an