Введение
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.
Помните: хороший промт — это половина успеха. Вторая половина — тестирование и итерации. Удачной автоматизации!
Комментарии