
Azure Devops
- 90 installs
- 44 repo stars
- Updated May 22, 2026
- bagelhole/devops-security-agent-skills
azure-devops is a Claude skill that sets up Azure Pipelines CI/CD with multi-stage YAML build, test, and release configuration.
About
This skill sets up Azure Pipelines for CI/CD using YAML multi-stage pipelines. It covers branch and pull-request triggers, parallel jobs, matrix strategies, job dependencies, and deploying to Azure and other platforms. A developer uses it when building enterprise CI/CD in Azure DevOps. It focuses on build and release stage configuration.
- Multi-stage YAML pipelines for build, test, and deploy
- Branch, PR, and scheduled triggers plus matrix build strategies
- Job dependencies and environment-based deployment stages
Azure Devops by the numbers
- 90 all-time installs (skills.sh)
- Ranked #569 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
azure-devops capabilities & compatibility
Free skill; Azure DevOps has free and paid pipeline tiers
- Capabilities
- azure aks · azure functions · azure vms
- Works with
- azure devops · azure
- Use cases
- ci cd · devops · testing
- Pricing
- Bring your own API key
What azure-devops says it does
Set up Azure Pipelines for CI/CD, configure build and release pipelines, manage Azure DevOps projects, and integrate with Azure services.
Build, test, and deploy applications using Azure Pipelines with YAML or classic editor.
npx skills add https://github.com/bagelhole/devops-security-agent-skills --skill azure-devopsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 90 |
|---|---|
| repo stars | ★ 44 |
| Last updated | May 22, 2026 |
| Repository | bagelhole/devops-security-agent-skills ↗ |
What it does
Build CI/CD pipelines in Azure DevOps with multi-stage YAML, triggers, and deployment jobs.
Who is it for?
Building enterprise CI/CD pipelines in Azure DevOps
Skip if: GitHub Actions, GitLab CI, or Jenkins pipelines
When should I use this skill?
You are creating CI/CD pipelines in Azure DevOps or configuring build and release stages
What you get
A working multi-stage Azure Pipeline with triggers, parallel jobs, and gated deployment.
- azure-pipelines.yml
- Build and deploy stages
- Trigger configuration
By the numbers
- Three-OS matrix build example (linux, windows, mac)
- Two-stage Build and Deploy pipeline example
Files
Azure DevOps Pipelines
Build, test, and deploy applications using Azure Pipelines with YAML or classic editor.
When to Use This Skill
Use this skill when:
- Creating CI/CD pipelines in Azure DevOps
- Configuring build and release stages
- Managing Azure DevOps service connections
- Deploying to Azure or other cloud platforms
- Setting up multi-stage YAML pipelines
Prerequisites
- Azure DevOps organization and project
- Service connections for target environments
- Basic YAML understanding
- Azure subscription (for Azure deployments)
YAML Pipeline Structure
Create azure-pipelines.yml in repository root:
trigger:
branches:
include:
- main
- develop
paths:
include:
- src/*
pool:
vmImage: 'ubuntu-latest'
variables:
buildConfiguration: 'Release'
nodeVersion: '20.x'
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: NodeTool@0
inputs:
versionSpec: $(nodeVersion)
- script: |
npm ci
npm run build
displayName: 'Build application'
- publish: $(Build.ArtifactStagingDirectory)
artifact: drop
- stage: Deploy
dependsOn: Build
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: DeployWeb
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- script: echo Deploying to productionTriggers
Branch Triggers
trigger:
branches:
include:
- main
- release/*
exclude:
- feature/*
tags:
include:
- v*Pull Request Triggers
pr:
branches:
include:
- main
paths:
include:
- src/*
exclude:
- docs/*Scheduled Triggers
schedules:
- cron: '0 2 * * *'
displayName: 'Nightly build'
branches:
include:
- main
always: trueJobs and Stages
Parallel Jobs
stages:
- stage: Test
jobs:
- job: UnitTests
pool:
vmImage: 'ubuntu-latest'
steps:
- script: npm run test:unit
- job: IntegrationTests
pool:
vmImage: 'ubuntu-latest'
steps:
- script: npm run test:integrationMatrix Strategy
jobs:
- job: Build
strategy:
matrix:
linux:
vmImage: 'ubuntu-latest'
windows:
vmImage: 'windows-latest'
mac:
vmImage: 'macos-latest'
pool:
vmImage: $(vmImage)
steps:
- script: npm testJob Dependencies
stages:
- stage: Build
jobs:
- job: A
steps:
- script: echo Job A
- job: B
dependsOn: A
steps:
- script: echo Job BVariables and Parameters
Variable Groups
variables:
- group: 'production-secrets'
- name: buildConfiguration
value: 'Release'Runtime Parameters
parameters:
- name: environment
displayName: 'Environment'
type: string
default: 'dev'
values:
- dev
- staging
- prod
stages:
- stage: Deploy
variables:
env: ${{ parameters.environment }}
jobs:
- job: Deploy
steps:
- script: echo "Deploying to $(env)"Secret Variables
variables:
- name: mySecret
value: $(SECRET_FROM_PIPELINE) # Set in pipeline settings
steps:
- script: |
echo "Using secret"
./deploy.sh
env:
API_KEY: $(mySecret)Templates
Job Template
# templates/build-job.yml
parameters:
- name: nodeVersion
default: '20'
jobs:
- job: Build
steps:
- task: NodeTool@0
inputs:
versionSpec: ${{ parameters.nodeVersion }}
- script: npm ci && npm run buildUsing Templates
# azure-pipelines.yml
stages:
- stage: Build
jobs:
- template: templates/build-job.yml
parameters:
nodeVersion: '20'Stage Template
# templates/deploy-stage.yml
parameters:
- name: environment
type: string
- name: serviceConnection
type: string
stages:
- stage: Deploy_${{ parameters.environment }}
jobs:
- deployment: Deploy
environment: ${{ parameters.environment }}
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: ${{ parameters.serviceConnection }}
appName: 'myapp-${{ parameters.environment }}'Deployments
Environment Deployments
stages:
- stage: DeployStaging
jobs:
- deployment: DeployWeb
environment: 'staging'
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: drop
- script: ./deploy.sh stagingApproval Gates
Configure in Azure DevOps UI: 1. Go to Environments 2. Select environment 3. Add approval check 4. Configure approvers
Rolling Deployment
jobs:
- deployment: Deploy
environment: 'production'
strategy:
rolling:
maxParallel: 2
deploy:
steps:
- script: ./deploy.shAzure Service Tasks
Azure Web App Deployment
- task: AzureWebApp@1
inputs:
azureSubscription: 'my-azure-connection'
appType: 'webAppLinux'
appName: 'my-web-app'
package: '$(Pipeline.Workspace)/drop/*.zip'Azure Container Apps
- task: AzureContainerApps@1
inputs:
azureSubscription: 'my-azure-connection'
containerAppName: 'my-container-app'
resourceGroup: 'my-rg'
imageToDeploy: 'myregistry.azurecr.io/myapp:$(Build.BuildId)'Azure Kubernetes Service
- task: KubernetesManifest@0
inputs:
action: 'deploy'
kubernetesServiceConnection: 'my-aks-connection'
namespace: 'default'
manifests: |
$(Pipeline.Workspace)/manifests/deployment.yml
$(Pipeline.Workspace)/manifests/service.yml
containers: |
myregistry.azurecr.io/myapp:$(Build.BuildId)Docker Builds
- task: Docker@2
inputs:
containerRegistry: 'my-acr-connection'
repository: 'myapp'
command: 'buildAndPush'
Dockerfile: '**/Dockerfile'
tags: |
$(Build.BuildId)
latestSelf-Hosted Agents
Install Agent
# Download agent
mkdir myagent && cd myagent
curl -o vsts-agent.tar.gz https://vstsagentpackage.azureedge.net/agent/3.227.2/vsts-agent-linux-x64-3.227.2.tar.gz
tar zxvf vsts-agent.tar.gz
# Configure
./config.sh --url https://dev.azure.com/myorg --auth pat --token PAT_TOKEN --pool default
# Run as service
sudo ./svc.sh install
sudo ./svc.sh startUse Self-Hosted Pool
pool:
name: 'my-self-hosted-pool'
demands:
- docker
- Agent.OS -equals LinuxCommon Issues
Issue: Service Connection Fails
Problem: Cannot authenticate to Azure Solution: Verify service principal permissions, check connection in project settings
Issue: Artifact Not Found
Problem: Download artifact fails Solution: Ensure publish task ran successfully, check artifact name matches
Issue: Environment Not Found
Problem: Deployment to environment fails Solution: Create environment in Pipelines > Environments first
Best Practices
- Use YAML pipelines over classic editor
- Implement templates for reusable components
- Use variable groups for shared configuration
- Configure environment approvals for production
- Use service connections with minimal permissions
- Implement artifact versioning
- Cache dependencies for faster builds
Related Skills
- github-actions - GitHub CI/CD alternative
- terraform-azure - Azure IaC
- azure-aks - AKS deployments
Related skills
FAQ
Does this skill support multi-stage YAML pipelines?
Yes, it defines Build and Deploy stages with dependencies and branch conditions in YAML.
Can it run a build matrix across OSes?
Yes, it shows a matrix strategy building on Linux, Windows, and macOS images.