CI/CD пайплайны — это автоматизация сборки, тестирования и деплоя. В 2026 году это стандарт де-факто. Но написание конфигураций вручную — частая причина ошибок. GitHub Actions использует .github/workflows/*.yml, GitLab CI — .gitlab-ci.yml, ArgoCD — Custom Resources. Каждый инструмент имеет свои особенности, и LLM отлично помогают с шаблонами. В этой подборке — 15 промтов для решения типовых задач CI/CD.
Промты для GitHub Actions
1. Сборка и тестирование Python-приложения
Промт: «Создай GitHub Actions workflow для Django: install, pytest, flake8, matrix для Python 3.11 и 3.12, кэширование pip. Файл — test.yml.»
Результат:
name: Test
on:
push:
paths: ['**.py']
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.11', '3.12']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- run: pip install -r requirements.txt
- run: pytest
2. Публикация Docker-образа в GHCR
Промт: «Сделай workflow для GitHub Actions: сборка и push Docker образа в GHCR по тегу v, используй build-push-action@v5, логин через docker/login-action@v3, укажи permissions packages: write.»
Результат:*
name: Build and Push
on:
push:
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/${{ github.repository }}:${{ github.ref_name }}
3. Кэширование зависимостей
Промт: «Оптимизируй workflow: добавь кэш для node_modules и pip. Используй actions/cache@v3 и встроенный кэш setup-python. Покажи YAML с шагами установки зависимостей для Node.js.»
Результат:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
4. Деплой на VPS по SSH
Промт: «Создай workflow для деплоя на VPS через SSH: checkout, appleboy/ssh-action, выполнение git pull и docker-compose up. Используй secrets: HOST, SSH_KEY, USERNAME.»
Результат:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /app
git pull
docker-compose up -d --build
5. Многоэтапный деплой с окружениями
Промт: «Нужен пайплайн с build, test и deploy на staging и production с защитой. Используй environments и environment protection rules. Deploy на production — вручную.»
Результат:
jobs:
build: ...
test: ...
deploy-staging:
needs: [build, test]
environment: staging
steps: ...
deploy-prod:
needs: [deploy-staging]
environment: production
steps: ...
Промты для GitLab CI
GitLab CI использует .gitlab-ci.yml и раннеры. Промты ниже помогут с типовыми задачами.
6. Базовый пайплайн с стадиями
Промт: «Создай .gitlab-ci.yml для Java/Maven проекта: стадии compile, test, package. Используй maven:3.9-eclipse-temurin-17. Кэшируй ~/.m2.»
Результат:
stages: [compile, test, package]
compile:
stage: compile
image: maven:3.9-eclipse-temurin-17
script: mvn compile
cache:
key: m2
paths: [~/.m2]
7. Деплой в Kubernetes из GitLab CI
Промт: «Напиши GitLab CI пайплайн: собери Docker образ, запушь в GitLab Registry, затем сквозь kubectl измени образ в Deployment. Используй docker:dind и kubectl:1.28. Назови job-ы build и deploy.»
Результат:
build:
image: docker:24
services: [docker:dind]
script:
- docker build -t registry.gitlab.com/$CI_PROJECT_PATH:$CI_COMMIT_SHA .
- docker push registry.gitlab.com/$CI_PROJECT_PATH:$CI_COMMIT_SHA
deploy:
image: bitnami/kubectl:latest
script:
- kubectl set image deployment/myapp myapp=registry.gitlab.com/$CI_PROJECT_PATH:$CI_COMMIT_SHA -n production
8. Использование rules и include
Промт: «Реализуй GitLab CI с include: общий шаблон из другого репозитория, rules для запуска только в main, and only manual job for production.»
Результат:
include:
- project: ops/cicd-templates
file: rails.yml
stages: [test, deploy]
deploy-prod:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual
script: |
echo "Deploy to production"
9. Динамический пайплайн через trigger
Промт: «Сгенерируй дочерний пайплайн из GitLab CI: в родительском пайплайне используй trigger с curl для создания дочерних job-ов, на основе изменений в папке.»
Результат:
# Родительский пайплайн
trigger:
stage: triggers
trigger:
project: my/child-pipeline
branch: main
strategy: depend
10. Артефакты и кэш
Промт: «Создай GitLab CI с артефактами для тестовых отчетов и кэша для Composer (PHP). Используй artifacts, cache, image: composer:2.»
Результат:
test:
image: composer:2
script: composer install && vendor/bin/phpunit
artifacts:
paths: [build/]
expire_in: 1 week
cache:
key: composer
paths: [vendor/]
Промты для ArgoCD
ArgoCD — GitOps инструмент для Kubernetes. Промты ниже помогут с декларативными настройками.
11. Создание ArgoCD Application
Промт: «Сгенерируй манифест ArgoCD Application для деплоя приложения из GitHub (репозиторий: https://github.com/company/web-app) в namespace production. Используй syncPolicy automated и prune.»
Результат:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: web-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/company/web-app
targetRevision: main
path: k8s/overlays/production
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
12. Multi-cluster ApplicationSet
Промт: «Создай ApplicationSet для развертывания во многие кластеры (list of clusters), используй генератор clusters с labels и создай Application для каждого.»
Результат:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: my-apps
spec:
generators:
- clusters:
selector:
matchLabels:
env: staging
template:
spec:
project: default
source:
repoURL: https://github.com/company/my-app
targetRevision: main
path: overlays/{{name}}
destination:
server: https://kubernetes.default.svc
namespace: app-{{name}}
13. Канареечный деплой с Argo Rollouts
Промт: «Создай Rollout resource для канареечного деплоя с 20% трафика на 5 минут, затем полное обновление. Используй nginx image.»
Результат:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
strategy:
canary:
steps:
- setWeight: 20
- pause: {duration: 5m}
template:
spec:
containers:
- name: app
image: nginx:1.25
14. Интеграция с GitLab CI: обновление манифестов
Промт: «Напиши скрипт для GitLab CI, который после сборки образ, обновляет тег image в манифестах ArgoCD и коммитит в GitHub. Используй yq и git.»
Результат:
image="registry.gitlab.com/company/app:$CI_COMMIT_SHA"
yq e -i ".spec.template.spec.containers[0].image = \"$image\"" k8s/deployment.yaml
git add k8s/deployment.yaml
git commit -m "Update image tag to $CI_COMMIT_SHA"
git push origin main
15. Откат к предыдущей версии
Промт: «Дай команды ArgoCD CLI для отката приложения к предыдущей версии и объясни, как автоматизировать откат при сбое.»
Результат:
# Просмотр истории
argocd app get my-app --history
# Откат к версии 3
argocd app rollback my-app 3
Сравнение GitHub Actions и GitLab CI
| Задача | GitHub Actions | GitLab CI |
|---|---|---|
| Расположение конфига | .github/workflows/*.yml |
.gitlab-ci.yml |
| Инструменты | Actions, runs-on | Runner, image |
| Условия | if: в шагах |
rules: / only: / except: |
| Секреты | Secrets в Settings | CI/CD Variables |
| Матрица | strategy.matrix |
parallel:matrix |
Заключение
Приведённые промты покрывают большинство реальных сценариев: от сборки до полной автоматизации деплоя. Используйте их как отправную точку, адаптируя под свой проект. LLM — отличные помощники, но всегда проверяйте сгенерированный код и держите в уме официальную документацию: GitHub Actions, GitLab CI, ArgoCD. Со временем вы научитесь формулировать промты ещё точнее.
Комментарии