К основному содержанию
скилл CX Codex

azure-devops · bagelhole — скилл для Claude Code: пайплайны Azure DevOps

Скилл помогает агенту писать и править YAML-пайплайны Azure DevOps: сборка, тесты, деплой в Azure. Пригодится, если CI/CD живёт в Azure Pipelines.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add BagelHole/DevOps-Security-Agent-Skills --skill azure-devops -a claude-code
Открыть на GitHub

Что делает azure-devops

Скилл описывает структуру azure-pipelines.yml: триггеры по веткам, тегам и расписанию, стадии и задания, матричные сборки под Linux, Windows и macOS, зависимости между заданиями. Отдельные разделы — переменные, группы переменных, секреты и параметры времени выполнения.

Дальше идут шаблоны: job- и stage-шаблоны с параметрами, деплой в окружения, rolling-стратегия, шлюзы согласования через интерфейс Azure DevOps. Для Azure есть готовые задачи — AzureWebApp@1, AzureContainerApps@1, KubernetesManifest@0, а для образов Docker@2 с пушем в реестр.

Заранее нужны организация и проект в Azure DevOps, service connections для целевых окружений и базовое понимание YAML. Для деплоя в Azure — подписка. Без service connection задачи вида AzureWebApp@1 не пройдут: соединение указывается в azureSubscription.

Какие задачи решает

  • собрать многостадийный пайплайн сборки и деплоя
  • настроить триггеры по веткам, тегам и расписанию
  • вынести общие шаги в переиспользуемые шаблоны
  • задеплоить контейнер в Azure Container Apps или AKS
  • добавить шлюз согласования перед продакшеном

Примеры запросов агенту

  • напиши azure-pipelines.yml со стадиями Build и Deploy для Node 20
  • добавь матричную сборку под ubuntu, windows и macos
  • настрой деплой в окружение production через service connection

Как установить azure-devops

1Через Skills CLI (Vercel)

npx skills add BagelHole/DevOps-Security-Agent-Skills --skill azure-devops -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-devops/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-devops/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-devops

Как установить azure-devops в Claude?

Выполните npx skills add BagelHole/DevOps-Security-Agent-Skills --skill azure-devops -a claude-code. Файл скилла окажется по пути ~/.claude/skills/azure-devops/SKILL.md.

Что делает скилл azure-devops?

Даёт агенту справочник по Azure Pipelines: YAML-структура, триггеры, стадии, шаблоны, деплой в окружения и задачи Azure.

Что нужно подготовить до работы со скиллом?

Организацию и проект в Azure DevOps, service connections для целевых окружений и базовое понимание YAML. Для деплоя в Azure понадобится подписка.

Исходный текст

SKILL.md · MIT
---
name: azure-devops
description: Set up Azure Pipelines for CI/CD, configure build and release pipelines, manage Azure DevOps projects, and integrate with Azure services. Use when working with Azure DevOps Services or Server for enterprise DevOps workflows.
license: MIT
metadata:
  author: devops-skills
  version: "1.0"
---

# 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:

```yaml
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 production
```

## Triggers

### Branch Triggers

```yaml
trigger:
  branches:
    include:
      - main
      - release/*
    exclude:
      - feature/*
  tags:
    include:
      - v*
```

### Pull Request Triggers

```yaml
pr:
  branches:
    include:
      - main
  paths:
    include:
      - src/*
    exclude:
      - docs/*
```

### Scheduled Triggers

```yaml
schedules:
  - cron: '0 2 * * *'
    displayName: 'Nightly build'
    branches:
      include:
        - main
    always: true
```

## Jobs and Stages

### Parallel Jobs

```yaml
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:integration
```

### Matrix Strategy

```yaml
jobs:
  - job: Build
    strategy:
      matrix:
        linux:
          vmImage: 'ubuntu-latest'
        windows:
          vmImage: 'windows-latest'
        mac:
          vmImage: 'macos-latest'
    pool:
      vmImage: $(vmImage)
    steps:
      - script: npm test
```

### Job Dependencies

```yaml
stages:
  - stage: Build
    jobs:
      - job: A
        steps:
          - script: echo Job A
      - job: B
        dependsOn: A
        steps:
          - script: echo Job B
```

## Variables and Parameters

### Variable Groups

```yaml
variables:
  - group: 'production-secrets'
  - name: buildConfiguration
    value: 'Release'
```

### Runtime Parameters

```yaml
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

```yaml
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

```yaml
# 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 build
```

### Using Templates

```yaml
# azure-pipelines.yml
stages:
  - stage: Build
    jobs:
      - template: templates/build-job.yml
        parameters:
          nodeVersion: '20'
```

### Stage Template

```yaml
# 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

```yaml
stages:
  - stage: DeployStaging
    jobs:
      - deployment: DeployWeb
        environment: 'staging'
        strategy:
          runOnce:
            deploy:
              steps:
                - download: current
                  artifact: drop
                - script: ./deploy.sh staging
```

### Approval Gates

Configure in Azure DevOps UI:
1. Go to Environments
2. Select environment
3. Add approval check
4. Configure approvers

### Rolling Deployment

```yaml
jobs:
  - deployment: Deploy
    environment: 'production'
    strategy:
      rolling:
        maxParallel: 2
        deploy:
          steps:
            - script: ./deploy.sh
```

## Azure Service Tasks

### Azure Web App Deployment

```yaml
- task: AzureWebApp@1
  inputs:
    azureSubscription: 'my-azure-connection'
    appType: 'webAppLinux'
    appName: 'my-web-app'
    package: '$(Pipeline.Workspace)/drop/*.zip'
```

### Azure Container Apps

```yaml
- 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

```yaml
- 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

```yaml
- task: Docker@2
  inputs:
    containerRegistry: 'my-acr-connection'
    repository: 'myapp'
    command: 'buildAndPush'
    Dockerfile: '**/Dockerfile'
    tags: |
      $(Build.BuildId)
      latest
```

## Self-Hosted Agents

### Install Agent

```bash
# 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 start
```

### Use Self-Hosted Pool

```yaml
pool:
  name: 'my-self-hosted-pool'
  demands:
    - docker
    - Agent.OS -equals Linux
```

## Common 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-actions/) - GitHub CI/CD alternative
- [terraform-azure](../../../infrastructure/cloud-azure/terraform-azure/) - Azure IaC
- [azure-aks](../../../infrastructure/cloud-azure/azure-aks/) - AKS deployments

© devops-skills · MIT · BagelHole/DevOps-Security-Agent-Skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →

Сначала — azure-devops от других авторов.

azure-devops MicrosoftDocs Даёт агенту базу знаний по администрированию Azure DevOps и серверов. Пригодится для разбора сбоев, проверки квот и настройки безопасности. CX Codex +1 403установок azure-pipelines-generator akin-ozer Скилл собирает azure-pipelines.yml: стадии, джобы, шаги и переиспользуемые шаблоны. Пригодится, когда нужно перевести CI на Azure Pipelines или разложить пайплайн по шаблонам. CX Codex +1 647установок azure-pipelines MicrosoftDocs Скилл с экспертизой по Azure Pipelines: разбор сбоев, YAML-шаблоны, агенты, service connections, секреты Key Vault и деплой в Kubernetes. CX Codex +1 430установок azure-pipelines-validator akin-ozer Проверяет azure-pipelines.yml локальными скриптами: синтаксис, безопасность, best practices. Пригодится перед мержем пайплайна. CX Codex +1 637установок azure-cloud-architect Alireza Rezvani Проектирует архитектуру Azure, создаёт шаблоны Bicep и проверяет расходы. Нужен при миграции, настройке CI/CD или выборе сервисов Azure. 607установок powershell-master JosiahSiegel Скилл для работы со скриптами PowerShell: подсказывает синтаксис cmdlet, модули PSGallery, шаблоны CI/CD и безопасность. Пригодится, когда агент пишет .ps1 или правит пайплайн. CX Codex +1 1 100установок azure-app-service MicrosoftDocs Даёт агенту справочник по Azure App Service: планы, VNet, managed identity, слоты, WebJobs. Нужен, когда правки идут в конфигурации или деплое. CX Codex +1 307установок

Из того же набора127

cloudflare-zero-trust Скилл помогает закрыть внутренние сервисы через Cloudflare Zero Trust без VPN. Настраивает туннели cloudflared, политики доступа по IdP и проверки устройств. CX Codex +1 325установок ai-pipeline-orchestration Скилл помогает агенту собирать пайплайны для загрузки данных, обучения моделей, батч-инференса и индексации RAG на Prefect, Airflow или Dagster. CX Codex +1 325установок rag-infrastructure Скилл для сборки RAG-конвейера: загрузка документов, эмбеддинги, векторное хранилище, гибридный поиск и ответы LLM по найденному контексту. CX Codex +1 325установок cdn-setup Скилл помогает настроить CDN через CloudFront и Cloudflare: раздавать статику, защищать трафик по TLS и сбрасывать кеш. Пригодится при публикации сайтов и API. CX Codex +1 324установок circleci Помогает настроить пайплайны CI/CD для CircleCI в файле .circleci/config.yml. Пригодится для сборки, тестов, кэширования и развёртывания проектов. CX Codex +1 323установок gcp-audit-logs Скилл помогает настроить Cloud Audit Logs в GCP: включить логи доступа, выгрузить их в BigQuery и разобрать подозрительные события. CX Codex +1 324установок platform-engineering Скилл для сборки внутренней платформы разработчика: Backstage, Crossplane и self-service инфраструктура. Пригодится, когда команды тонут в ручной настройке окружений. CX Codex +1 322установок aws-lambda Скилл помогает развёртывать функции AWS Lambda, настраивать триггеры S3 или SQS и организовывать канареечные релизы. CX Codex +1 321установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой