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

ci-cd · codewithmukesh — скилл для Claude Code: что делает и как установить

Скилл помогает создавать YAML-пайплайны для проектов на .NET. Пригодится для быстрой настройки GitHub Actions и Azure DevOps с этапами сборки, тестов и публикации.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add codewithmukesh/dotnet-claude-kit --skill ci-cd -a claude-code
Открыть на GitHub

Что делает ci-cd

Скилл содержит шаблоны и правила построения CI/CD для .NET-приложений. Он формирует пайплайны для GitHub Actions и Azure DevOps, включая восстановление зависимостей, сборку в конфигурации Release, обязательную проверку стиля через dotnet format --verify-no-changes и прогон тестов с сохранением TRX-отчётов. Для интеграционного тестирования в GitHub Actions настраивается запуск сервисного контейнера с PostgreSQL 18.

Пайплайны следуют принципу единой сборки: один артефакт компилируется один раз и затем продвигается по окружениям dev, staging и production. Включены также сценарии сборки Docker-образов с отправкой в GitHub Container Registry (ghcr.io) по тегам версий и автоматическая публикация библиотек в NuGet через dotnet pack и dotnet nuget push.

Скилл жёстко запрещает хардкодить пароли и токены в YAML-файлах. Учтите разницу платформ: если в GitHub Actions база поднимается простым блоком services, то в Azure DevOps для этого потребуется отдельная Docker-задача или сервисное подключение.

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

  • настроить пайплайн сборки и запуска тестов для .NET в GitHub Actions
  • собрать и опубликовать Docker-образ в GitHub Container Registry по Git-тегу
  • добавить автоматическую проверку форматирования кода в Azure DevOps
  • упаковать и отправить библиотеку в репозиторий NuGet

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

  • Сделай пайплайн GitHub Actions для .NET 10 с тестами и базой PostgreSQL
  • Настрой Azure DevOps для сборки и проверки форматирования .NET проекта
  • Добавь workflow для публикации NuGet пакета при создании тега релиза

Как установить ci-cd

1Через Skills CLI (Vercel)

npx skills add codewithmukesh/dotnet-claude-kit --skill ci-cd -a claude-code

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

~/.claude/skills/ci-cd/SKILL.md

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

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

Вопросы о ci-cd

Как установить ci-cd в Claude Code?

Выполните команду npx skills add codewithmukesh/dotnet-claude-kit --skill ci-cd -a claude-code. Конфигурация сохранится в ~/.claude/skills/ci-cd/SKILL.md.

Что делает скилл ci-cd?

Он даёт ИИ-агенту инструкции и шаблоны для генерации YAML-пайплайнов в GitHub Actions и Azure DevOps. Скилл охватывает цепочку от компиляции и проверки форматирования до публикации Docker-образов и пакетов NuGet.

Чем отличается запуск тестов с базой данных в GitHub Actions и Azure DevOps?

В GitHub Actions поднимается готовый контейнер через секцию services с PostgreSQL 18. В Azure DevOps прямого аналога этой секции нет, поэтому тесты с базой требуют отдельной задачи Docker или сервисного подключения.

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

SKILL.md · MIT
---
name: ci-cd
description: >
  CI/CD pipelines for .NET applications. Covers GitHub Actions and Azure DevOps
  YAML pipelines with build, test, publish, and deploy stages.
  Load this skill when setting up continuous integration, automated testing,
  deployment workflows, or when the user mentions "CI/CD", "pipeline",
  "GitHub Actions", "Azure DevOps", "workflow", "deploy", "build pipeline",
  "publish", "NuGet push", "release", or "continuous integration".
---

# CI/CD

## Core Principles

1. **Pipeline as code** — YAML pipelines committed to the repo. No click-ops in the UI.
2. **Fast feedback** — Build and test on every push. Cache NuGet packages. Fail fast.
3. **Build once, deploy many** — Build the artifact once, promote it through environments (dev → staging → production).
4. **Never skip tests** — Tests gate the pipeline. No deployment without passing tests.

## Patterns

### GitHub Actions — Build + Test

```yaml
# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  DOTNET_VERSION: '10.0.x'
  DOTNET_NOLOGO: true
  DOTNET_CLI_TELEMETRY_OPTOUT: true

jobs:
  build-and-test:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:18
        env:
          POSTGRES_DB: testdb
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v5

      - name: Setup .NET
        uses: actions/setup-dotnet@v5
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }}

      - name: Restore
        run: dotnet restore

      - name: Build
        run: dotnet build --no-restore --configuration Release

      - name: Format check
        run: dotnet format --verify-no-changes --no-restore

      - name: Test
        run: dotnet test --no-build --configuration Release --logger trx --results-directory TestResults
        env:
          ConnectionStrings__Default: "Host=localhost;Database=testdb;Username=postgres;Password=postgres"

      - name: Publish test results
        uses: actions/upload-artifact@v5
        if: always()
        with:
          name: test-results
          path: TestResults/*.trx
```

### GitHub Actions — Build + Publish Docker Image

```yaml
# .github/workflows/publish.yml
name: Publish

on:
  push:
    tags: ['v*']

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
      - uses: actions/checkout@v5

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract version from tag
        id: version
        run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT

      - name: Build and push
        uses: docker/build-push-action@v6
        with:
          context: .
          push: true
          tags: |
            ghcr.io/${{ github.repository }}:${{ steps.version.outputs.VERSION }}
            ghcr.io/${{ github.repository }}:latest
```

### Azure DevOps — Build + Test

Same restore → build → format → test flow as GitHub Actions. Key differences:

```yaml
# azure-pipelines.yml
trigger:
  branches:
    include: [main]
  paths:
    exclude: ['*.md', docs/]

pool:
  vmImage: 'ubuntu-latest'          # vs runs-on: ubuntu-latest

variables:
  dotnetVersion: '10.0.x'

# Key task differences from GitHub Actions:
#   Setup .NET:  task: UseDotNet@2  (inputs: version: $(dotnetVersion))
#   Test results: task: PublishTestResults@2  (testResultsFormat: VSTest)
#   Steps use `script:` + `displayName:` instead of `- name:` + `run:`
#   Services (e.g., Postgres) require a separate Docker task or pipeline service connection
```

### NuGet Package Publishing

```yaml
# Part of GitHub Actions workflow
- name: Pack
  run: dotnet pack src/MyLibrary -c Release -o ./nupkg --no-build

- name: Push to NuGet
  run: dotnet nuget push ./nupkg/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
```

## Anti-patterns

### Don't Build Different Artifacts per Environment

```yaml
# BAD — building separately for each environment
- script: dotnet publish -c Debug   # for dev
- script: dotnet publish -c Release # for prod

# GOOD — build once, deploy everywhere
- script: dotnet publish -c Release -o ./publish
# Then deploy the same ./publish artifact to dev, staging, prod
```

### Don't Skip Format Checks in CI

```yaml
# BAD — no format enforcement
steps:
  - run: dotnet build
  - run: dotnet test

# GOOD — format check catches style issues early
steps:
  - run: dotnet build
  - run: dotnet format --verify-no-changes
  - run: dotnet test
```

### Don't Hardcode Secrets in Pipelines

```yaml
# BAD — secret in pipeline YAML
env:
  DB_PASSWORD: "my-secret-password"

# GOOD — use pipeline secrets
env:
  DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
```

## Decision Guide

| Scenario | Recommendation |
|----------|---------------|
| Open source project | GitHub Actions |
| Enterprise with Azure | Azure DevOps Pipelines |
| Docker deployment | Multi-stage build in CI, push to container registry |
| NuGet library | Build → Test → Pack → Push on tag |
| Database migrations | Run in CI test stage, script for production |
| Environment promotion | Same artifact, different configuration |

© codewithmukesh · MIT · codewithmukesh/dotnet-claude-kit

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

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

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

ci-cd ahmedasmar Помогает проектировать пайплайны GitHub Actions и GitLab CI, ускорять сборки кешированием и находить причины сбоев в тестах или деплое. CX Codex +1 363установок playwright-ci-caching Aaronontheweb Настраивает кэширование браузеров Playwright в GitHub Actions и Azure DevOps. Устраняет лишнюю загрузку ~400MB бинарников и сокращает сборку на 1-2 минуты в .NET-проектах. CX Codex +1 434установок playwright-ci testdino-hq Скилл с готовыми конфигурациями CI/CD для Playwright: GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins и Docker. Пригодится, когда тесты уже написаны, а пайплайн всё ещё падает. CX Codex +1 372установок azure-devops devops-skills Скилл помогает агенту писать и править YAML-пайплайны Azure DevOps: сборка, тесты, деплой в Azure. Пригодится, если CI/CD живёт в Azure Pipelines. CX Codex +1 325установок appbuilder-cicd-pipeline adobe Собирает workflow-файлы GitHub Actions для сборки и деплоя проектов Adobe App Builder, плюс шаблоны для Azure DevOps и GitLab CI. CX Codex +1 710установок github-actions-templates Seth Hobson Скилл создаёт GitHub Actions для тестирования, сборки и деплоя. Подойдёт, когда в проекте нужно настроить CI/CD или reusable workflows. CX Codex 17 420установок local-action-verification официальный google-labs-code Настраивает репозиторий для локальной проверки GitHub Actions через act. Помогает агенту протестировать CI до пуша в ветку и избежать сломанных коммитов. CX Codex +1 696установок

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

project-structure Скилл задаёт агенту правила раскладки .NET-решения: центральные версии пакетов, общие свойства сборки, формат .slnx и именование проектов. CX Codex +1 2 800установок httpclient-factory Скилл обучает ассистента конфигурировать IHttpClientFactory и типовые HTTP-клиенты для .NET 10. Помогает настроить политики устойчивости и избежать исчерпания сокетов. CX Codex +1 2 800установок de-sloppify Наводит порядок в .NET-коде по семи шагам: от форматирования до передачи CancellationToken. Нужен перед релизом, после крупных изменений или обновления зависимостей. CX Codex +1 2 800установок logging Скилл про наблюдаемость в .NET 10: разводит liveness и readiness, прокидывает correlation ID и задаёт уровни логов. CX Codex +1 2 800установок resilience Скилл для ИИ-агента, который подсказывает, как строить отказоустойчивые вызовы в .NET 10 на Polly v8: retry, circuit breaker, таймауты, fallback. CX Codex +1 2 800установок authentication Скилл для ИИ-агента, который подсказывает, как правильно настроить аутентификацию и авторизацию в ASP.NET Core: JWT, OIDC, Identity, политики. CX Codex +1 2 800установок dependency-injection Скилл внедряет паттерны dependency injection для .NET 10: выбор времён жизни сервисов, keyed services, декораторы через Scrutor и защиту от captive dependency. CX Codex +1 2 800установок minimal-api Скилл для ИИ-агентов, который ведёт по минимальным API .NET 10: группы эндпоинтов, TypedResults, фильтры и OpenAPI. CX Codex +1 2 800установок

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

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