10 промтов для CI/CD: GitHub Actions, GitLab CI и ArgoCD для профессионалов

Введение

CI/CD — это не просто автоматизация сборки и деплоя, а философия постоянного улучшения. За последние годы экосистема инструментов для непрерывной интеграции и доставки значительно усложнилась. Сегодня DevOps-инженеры работают с мультиоблачными средами, Kubernetes, GitOps и сложными пайплайнами безопасности. Однако ключевым узким местом остаётся написание корректных и эффективных конфигураций. Именно здесь на помощь приходят промты — структурированные запросы для генерации YAML-файлов, триггеров и скриптов с помощью AI-ассистентов.

В этой статье я собрал 10 промтов для трёх популярных систем: GitHub Actions, GitLab CI и ArgoCD. Каждый промт сопровождается описанием задачи, примером результата и советом по адаптации. Статья рассчитана на инженеров, которые уже знакомы с основами DevOps, но хотят углубить знания в автоматизации с помощью генеративных моделей.

Базовые промты (уровень: Junior)

1. Генерация простого пайплайна сборки и тестирования

Задача: Создать YAML-файл для GitHub Actions, который запускает сборку и unit-тесты при каждом push в ветку main.

Промт: Сгенерируй GitHub Actions workflow для Node.js приложения. Триггер: push в main. Этапы: install, build, test. Используй actions/setup-node@v4 и docker-образ node:20.

Пример результата:

name: Node.js CI

on:
  push:
    branches: [ main ]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

Совет: Добавьте в промт конкретные команды для вашего менеджера пакетов (npm, yarn, pnpm), чтобы избежать ошибок.

2. Настройка GitLab CI с кэшированием зависимостей

Задача: Оптимизировать пайплайн в GitLab CI с помощью кэша для ускорения повторных сборок.

Промт: Напиши .gitlab-ci.yml для Python-приложения с кэшированием pip. Используй образ python:3.11-slim. Этапы: test, lint, build.

Пример результата:

image: python:3.11-slim

stages:
  - test
  - lint
  - build

cache:
  paths:
    - .venv/

before_script:
  - python -m venv .venv
  - source .venv/bin/activate
  - pip install -r requirements.txt

test:
  stage: test
  script:
    - pytest

lint:
  stage: lint
  script:
    - flake8 .

build:
  stage: build
  script:
    - python setup.py sdist

Почему это важно: Кэш сокращает время установки зависимостей на 40-60% (по данным GitLab Docs, 2025).

3. ArgoCD: синхронизация приложения из Git-репозитория

Задача: Создать манифест Application для ArgoCD, который будет синхронизировать Kubernetes-ресурсы из репозитория.

Промт: Напиши ArgoCD Application manifest для деплоя nginx из публичного репозитория. Используй syncPolicy: automated.

Пример результата:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: nginx-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/nginx-deploy.git
    targetRevision: HEAD
    path: k8s
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Совет: Укажите в промт конкретный namespace и repoURL, чтобы избежать ручного редактирования.

Продвинутые промты (уровень: Middle)

4. Многоэтапный пайплайн с Docker-сборкой и деплоем на AWS ECS

Задача: Создать GitHub Actions workflow для сборки Docker-образа и деплоя на Amazon ECS.

Промт: Создай GitHub Actions workflow для Java-приложения. Этапы: сборка с Maven, сборка Docker, push в ECR, деплой в ECS. Используй официальные actions от AWS.

Пример результата (фрагмент):

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
      - name: Build with Maven
        run: mvn clean package
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
      - name: Build Docker image
        run: docker build -t my-app .

Источник: Официальная документация GitHub Actions по работе с AWS (docs.github.com, 2025).

5. GitLab CI с динамическими средами и ручным подтверждением

Задача: Настроить пайплайн, который создаёт временную среду для каждой feature-ветки и требует ручного подтверждения перед деплоем в production.

Промт: Напиши .gitlab-ci.yml с динамическим созданием environments для каждой ветки, кроме main. Для production добавь ручную job с when: manual.

Пример результата (фрагмент):

review:
  stage: deploy
  script:
    - echo "Deploying to review environment"
  environment:
    name: review/$CI_COMMIT_REF_SLUG
    url: https://$CI_COMMIT_REF_SLUG.example.com
  only:
    - branches
  except:
    - main

deploy_prod:
  stage: deploy
  script:
    - echo "Deploying to production"
  environment:
    name: production
  when: manual
  only:
    - main

Кейс: В компании Spotify такая практика позволила сократить время тестирования новых фич на 50% (данные из публичных докладов Spotify Engineering, 2024).

6. ArgoCD с ApplicationSet и мультитенантностью

Задача: Создать ApplicationSet для деплоя одного и того же приложения в несколько кластеров с разными параметрами.

Промт: Напиши ArgoCD ApplicationSet для Go-приложения. Используй генератор по списку кластеров. Каждый кластер должен иметь свой namespace.

Пример результата (фрагмент):

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: go-app
spec:
  generators:
    - clusters:
        selector:
          matchLabels:
            environment: dev
  template:
    spec:
      source:
        repoURL: https://github.com/example/go-app.git
        targetRevision: HEAD
        path: overlays/{{name}}
      destination:
        server: '{{server}}'
        namespace: go-app-{{name}}

Совет: Используйте labels на кластерах для фильтрации — это упрощает управление.

7. Интеграция безопасности в пайплайн (SAST и DAST)

Задача: Добавить в GitLab CI статический анализ кода (SAST) и динамическое тестирование (DAST) для веб-приложения.

Промт: Добавь в .gitlab-ci.yml стадии sast и dast для Django-приложения. Используй встроенные шаблоны GitLab.

Пример результата (фрагмент):

include:
  - template: Jobs/SAST.gitlab-ci.yml
  - template: Jobs/DAST.gitlab-ci.yml

stages:
  - test
  - sast
  - dast

sast:
  stage: sast

dast:
  stage: dast
  variables:
    DAST_WEBSITE: https://staging.example.com

Важно: SAST-сканеры находят до 70% уязвимостей на ранних этапах (OWASP, 2025).

Экспертные промты (уровень: Senior)

8. Кастомный action для мониторинга метрик пайплайна

Задача: Создать GitHub Actions action на JavaScript, который отправляет метрики выполнения (время, статус) в Prometheus.

Промт: Напиши JavaScript action для GitHub Actions, который собирает метрики: start_time, end_time, status. Отправь их в Prometheus Pushgateway.

Пример результата (фрагмент):

const core = require('@actions/core');
const { pushGateway } = require('prom-client');

async function run() {
  const start = Date.now();
  try {
    // Ваш код
    const end = Date.now();
    const duration = (end - start) / 1000;
    const gateway = new pushGateway.Pushgateway('http://pushgateway:9091');
    await gateway.pushAdd({ jobName: 'github-actions' });
    core.setOutput('duration', duration);
  } catch (error) {
    core.setFailed(error.message);
  }
}

run();

Источник: Документация prom-client (npmjs.com, 2025).

9. GitLab CI с Terraform и динамическим инвентарём

Задача: Настроить пайплайн, который запускает Terraform для управления инфраструктурой, используя динамический инвентарь из GitLab Variables.

Промт: Создай .gitlab-ci.yml для Terraform с этапами init, plan, apply. Используй remote state в S3. Добавь ручное подтверждение для apply.

Пример результата (фрагмент):

variables:
  TF_STATE_BUCKET: my-tf-state
  TF_REGION: us-east-1

before_script:
  - cd terraform
  - terraform init -backend-config="bucket=$TF_STATE_BUCKET" -backend-config="region=$TF_REGION"

plan:
  stage: prepare
  script:
    - terraform plan -out=tfplan
  artifacts:
    paths:
      - terraform/tfplan

apply:
  stage: deploy
  script:
    - terraform apply tfplan
  when: manual

Кейс: В компании HashiCorp такой подход используется для управления сотнями окружений (HashiCorp Blog, 2024).

10. ArgoCD с кастомным health check и плагином

Задача: Написать конфигурацию ArgoCD для приложения, которое требует кастомной проверки здоровья (health check) и использует плагин для генерации манифестов.

Промт: Создай ArgoCD Application для Helm-чарта с кастомным health check (проверка через HTTP). Добавь configManagementPlugin для использования Helm.

Пример результата (фрагмент):

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: helm-app
spec:
  source:
    repoURL: https://charts.example.com
    chart: my-app
    targetRevision: 1.0.0
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated: {}
  ignoreDifferences:
    - group: apps
      kind: Deployment
      jsonPointers:
        - /spec/replicas

Совет: Используйте ignoreDifferences для полей, которые изменяются автоматически (например, replicas при HPA).

Заключение

Эти 10 промтов покрывают большинство реальных сценариев: от простой сборки до сложной мультикластерной архитектуры с GitOps. Главное — не копируйте промты слепо, а адаптируйте под свои проекты. Учитывайте версии инструментов, требования безопасности и специфику инфраструктуры.

Если вы хотите научиться писать такие промты самостоятельно и интегрировать AI в свои пайплайны, обратите внимание на курсы ASI Biont. Например, ASI Biont поддерживает подключение к GitLab CI и GitHub Actions через API — подробнее на asibiont.com/courses.

Помните: хороший промт — это половина успеха. Вторая половина — тестирование и итерации. Удачной автоматизации!

← Все статьи

Комментарии

Читайте также

Hermes Agent Maker от Nous Research: как оценка в $1.5 млрд меняет правила игры в Vibe Coding

14 июля 2026

Освойте современное системное программирование: Go и Rust — курс системного программирования на Asibiont

14 июля 2026

Освоение пожарной безопасности: курс «Пожарная безопасность» на asibiont.com – ваш путь к соблюдению требований и уверенности с помощью ИИ

14 июля 2026

AS Biont + Railway: Как AI-агент превращает ручной деплой в одно сообщение в чате

14 июля 2026

Ethernet (W5500, ENC28J60) + ASI Biont: проводной IoT без программирования — будущее автоматизации

14 июля 2026

Лейтнер, Elo и поправка на угадывание: как работает движок тренажёра собеседований без единого вызова LLM

14 июля 2026

Интеграция RC522 (RFID) с AI-агентом ASI Biont: пошаговое руководство по подключению и автоматизации

14 июля 2026

Промышленная безопасность: как избежать штрафов и аварий на ОПО в 2026 году — курс от экспертов Ростехнадзора

14 июля 2026

Почему курс по системам реального времени — ваш следующий шаг в карьере: WebSockets, WebRTC и голосовые ассистенты

14 июля 2026