Введение
CI/CD (Continuous Integration / Continuous Delivery) — это фундамент современной DevOps-культуры. Каждый день инженеры пишут пайплайны для GitHub Actions, GitLab CI и ArgoCD, но часто тратят часы на синтаксис и отладку. Здесь на помощь приходят промты — готовые шаблоны запросов к AI, которые ускоряют разработку в 10 раз. В этой статье я собрал 15 промтов, разбитых на три уровня сложности: базовые, продвинутые и экспертные. Каждый промт сопровождается задачей, текстом запроса и примером результата. Вы узнаете, как автоматизировать сборку, тестирование, деплой и управление конфигурациями, используя только текстовые команды.
Базовые промты (уровень 1–5)
1. Генерация простого пайплайна для GitHub Actions
Задача: Создать workflow для сборки Node.js приложения с запуском тестов.
Промт: "Напиши GitHub Actions workflow для Node.js (версия 18), который устанавливает зависимости, запускает тесты и собирает production-сборку. Используй Ubuntu latest и кеширование node_modules."
Пример результата:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- run: npm ci
- run: npm test
- run: npm run build
2. GitLab CI: базовый пайплайн с Docker-образом
Задача: Написать .gitlab-ci.yml для Python-приложения.
Промт: "Создай GitLab CI пайплайн для Python 3.11 с тестированием через pytest и сборкой Docker-образа. Укажи этапы: test, build, deploy."
Пример результата:
stages:
- test
- build
- deploy
test:
stage: test
image: python:3.11
script:
- pip install -r requirements.txt
- pytest
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t my-app:$CI_COMMIT_SHA .
3. ArgoCD: простой Application манифест
Задача: Создать ArgoCD Application для деплоя из GitHub-репозитория.
Промт: "Напиши ArgoCD Application манифест, который разворачивает приложение из публичного репозитория https://github.com/example/my-app в namespace production, синхронизация вручную."
Пример результата:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
destination:
namespace: production
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/example/my-app
targetRevision: HEAD
path: k8s
syncPolicy:
automated: {}
4. GitHub Actions: деплой на VPS по SSH
Задача: Написать workflow для деплоя статического сайта на сервер.
Промт: "Создай GitHub Actions workflow для деплоя HTML-сайта на VPS через rsync по SSH. Используй secrets для SSH_KEY и HOST."
Пример результата:
name: Deploy to VPS
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Rsync files
uses: burnett01/rsync-deployments@6.0
with:
switches: -avz --delete
path: ./
remote_path: /var/www/html
remote_host: ${{ secrets.HOST }}
remote_user: ubuntu
remote_key: ${{ secrets.SSH_KEY }}
5. GitLab CI: автоматическая публикация в Docker Hub
Задача: Настроить пайплайн для пуша Docker-образа в реестр.
Промт: "Добавь в GitLab CI этап publish, который логинится в Docker Hub (используя переменные CI_REGISTRY_USER и CI_REGISTRY_PASSWORD) и пушит образ с тегом latest."
Пример результата:
publish:
stage: deploy
image: docker:latest
services:
- docker:dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- docker push my-app:latest
only:
- main
Продвинутые промты (уровень 6–10)
6. GitHub Actions: матричное тестирование
Задача: Запустить тесты на нескольких версиях Node.js.
Промт: "Создай матричный workflow для GitHub Actions, который тестирует приложение на Node.js 16, 18 и 20. Используй стратегию matrix с node-version."
Пример результата:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm test
7. GitLab CI: динамические окружения
Задача: Создать временное окружение для каждой ветки.
Промт: "Настрой GitLab CI для автоматического развёртывания review-окружений на Kubernetes при создании merge request. Используй review_apps и environment name на основе ветки."
Пример результата:
deploy_review:
stage: deploy
script:
- kubectl apply -f k8s/
environment:
name: review/$CI_COMMIT_REF_SLUG
on_stop: stop_review
only:
- merge_requests
8. ArgoCD: синхронизация с Helm-чартами
Задача: Использовать Helm-чарт для деплоя.
Промт: "Напиши ArgoCD Application, который использует Helm-чарт из репозитория https://github.com/example/helm-charts, с values из values-production.yaml."
Пример результата:
spec:
source:
repoURL: https://github.com/example/helm-charts
targetRevision: main
path: ./charts/my-app
helm:
valueFiles:
- values-production.yaml
9. GitHub Actions: кеширование зависимостей
Задача: Оптимизировать пайплайн с помощью кеша.
Промт: "Добавь в существующий Node.js workflow кеширование для npm и node_modules с использованием actions/cache и ключом на основе package-lock.json."
Пример результата:
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
10. GitLab CI: параллельные джобы с артефактами
Задача: Разделить тесты на параллельные джобы.
Промт: "Создай GitLab CI с двумя параллельными джобами: lint и test. Джоба test должна ждать lint и передавать артефакты (coverage report) в следующий stage."
Пример результата:
lint:
stage: test
script:
- flake8 .
artifacts:
paths:
- coverage/
Экспертные промты (уровень 11–15)
11. GitHub Actions: кастомный action на Docker
Задача: Создать собственный Docker action для форматирования кода.
Промт: "Напиши GitHub Action на основе Dockerfile, который запускает prettier на всех JS-файлах в репозитории и коммитит изменения. Используй action.yml и entrypoint.sh."
Пример результата:
# action.yml
name: 'Prettier Formatter'
description: 'Auto-format JS files'
runs:
using: 'docker'
image: 'Dockerfile'
12. GitLab CI: интеграция с Terraform
Задача: Добавить в пайплайн планирование и применение инфраструктуры.
Промт: "Создай GitLab CI джобы для Terraform: validate, plan, apply. Plan должен запускаться на push, apply — только при merge в main. Используй официальный образ hashicorp/terraform."
Пример результата:
terraform:plan:
stage: plan
image: hashicorp/terraform:1.5
script:
- terraform init
- terraform plan
except:
- main
13. ArgoCD: синхронизация с несколькими кластерами
Задача: Настроить ApplicationSet для деплоя в dev и prod.
Промт: "Создай ArgoCD ApplicationSet, который разворачивает приложение в двух кластерах: dev и prod, с разными values-файлами для каждого."
Пример результата:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
generators:
- clusters:
selector:
matchLabels:
environment: dev
14. GitHub Actions: условный деплой по тегам
Задача: Деплоить только при пуше тега semver.
Промт: "Настрой GitHub Actions workflow, который запускает деплой только при пуше тега, соответствующего паттерну v.. (например, v1.2.3). Используй условие на startsWith."
Пример результата:*
on:
push:
tags:
- 'v*'
jobs:
deploy:
if: startsWith(github.ref, 'refs/tags/v')
15. GitLab CI: мультистейджинг с ручным подтверждением
Задача: Добавить ручной запуск для production-деплоя.
Промт: "Создай GitLab CI пайплайн с тремя стейджами: build, staging (автоматический), production (ручной, с when: manual). Используй environment для отслеживания."
Пример результата:
production:
stage: deploy
script:
- kubectl apply -f k8s/production
when: manual
environment:
name: production
Заключение
Промты для CI/CD — это не просто шаблоны, а мощный инструмент для ускорения разработки и снижения ошибок. Я показал 15 примеров для GitHub Actions, GitLab CI и ArgoCD — от базовых до экспертных. Используйте их как отправную точку, адаптируйте под свои проекты и не бойтесь экспериментировать. Помните: лучший пайплайн — тот, который работает без вашего участия. ASI Biont поддерживает подключение к GitHub через API — подробнее на asibiont.com/courses. Автоматизируйте с умом!
Комментарии