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

Введение

Настройка CI/CD пайплайнов — это рутина, которая может отнимать часы, если делать её вручную. Промты (prompts) для AI-инструментов, таких как ChatGPT, Claude или Gemini, ускоряют процесс: достаточно описать задачу, и нейросеть генерирует готовый YAML-файл для GitHub Actions, GitLab CI или конфигурацию для ArgoCD. В этой подборке — 10 проверенных промтов, которые я использую сам. Они сэкономят вам время и помогут избежать типичных ошибок. Все примеры основаны на официальной документации (GitHub Docs, GitLab Docs, ArgoCD Docs) и реальных кейсах.

1. Универсальный промт для GitHub Actions: деплой на VPS через SSH

Задача: Создать CI/CD пайплайн, который при пуше в ветку main запускает тесты, собирает Docker-образ и деплоит его на удалённый сервер по SSH.

Промт:

Сгенерируй YAML-файл для GitHub Actions. Триггер: push в main. Шаги:
1. Установка зависимостей (npm install).
2. Запуск тестов (npm test).
3. Сборка Docker-образа с тегом latest.
4. Пуш образа в Docker Hub (логин и пароль  секреты DOCKER_USERNAME и DOCKER_PASSWORD).
5. Деплой на VPS через SSH: скопировать docker-compose.yml, выполнить docker-compose pull && docker-compose up -d.
Используй actions/checkout@v4, actions/setup-node@v4, docker/login-action@v3, appleboy/ssh-action@v1.0.3.

Пример использования:

name: Deploy to VPS
on:
  push:
    branches: [main]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install
      - run: npm test
      - uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - run: docker build -t myapp:latest .
      - run: docker push myapp:latest
      - uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/myapp
            docker-compose pull
            docker-compose up -d

Совет: Замените myapp на имя вашего проекта. Секреты (SSH_KEY, HOST, USERNAME) добавьте в Settings → Secrets and variables → Actions.

2. GitLab CI: параллельные тесты и артефакты

Задача: Настроить пайплайн в GitLab CI с параллельными джобами для тестирования на Node.js 18 и 20, сохранением артефактов и деплоем на GitLab Pages.

Промт:

Создай .gitlab-ci.yml для проекта на Node.js. Этапы:
- test: два параллельных джоба (node:18 и node:20), каждая запускает npm install и npm test.
- build: собирает статику в папку public (npm run build).
- deploy: публикует public на GitLab Pages, только для ветки main.
Используй image: node:18-alpine и node:20-alpine. Для деплоя — pages:stage.

Пример вывода (сокращённый):

image: node:18-alpine

stages:
  - test
  - build
  - deploy

test:node18:
  stage: test
  script:
    - npm install
    - npm test
  parallel:
    matrix:
      - NODE_IMAGE: node:18-alpine

test:node20:
  image: node:20-alpine
  stage: test
  script:
    - npm install
    - npm test

build:
  stage: build
  script:
    - npm install
    - npm run build
  artifacts:
    paths:
      - public

pages:
  stage: deploy
  script:
    - mv public public_html
  artifacts:
    paths:
      - public_html
  only:
    - main

Примечание: GitLab Pages автоматически деплоит содержимое папки public_html. Подробнее — в официальной документации GitLab CI.

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

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

Промт:

Сгенерируй YAML-манифест для ArgoCD Application. Параметры:
- имя: my-microservice
- проект: default
- источник: Git-репозиторий https://github.com/myorg/helm-charts.git, путь charts/my-microservice, ревизия main.
- целевой кластер: https://kubernetes.default.svc (in-cluster).
- namespace: production.
- syncPolicy: автоматическая синхронизация с prune=true и selfHeal=true.
- Helm-параметры: image.tag=latest, replicaCount=3.

Пример вывода:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-microservice
spec:
  project: default
  source:
    repoURL: https://github.com/myorg/helm-charts.git
    targetRevision: main
    path: charts/my-microservice
    helm:
      parameters:
        - name: image.tag
          value: latest
        - name: replicaCount
          value: "3"
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Важно: Убедитесь, что ArgoCD имеет доступ к репозиторию через SSH-ключ или токен. Настройки подключения — в Settings → Repositories.

4. GitHub Actions: мульти-осевой тест с матрицей

Задача: Запустить тесты на трёх ОС (ubuntu, windows, macos) и двух версиях Python (3.10, 3.11).

Промт:

Создай workflow для GitHub Actions с матрицей: os: [ubuntu-latest, windows-latest, macos-latest], python-version: ['3.10', '3.11']. Шаги: checkout, setup-python, pip install -r requirements.txt, pytest. Назови джобу 'test'.

Пример вывода:

name: Multi-OS Tests
on: [push]
jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ['3.10', '3.11']
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - run: pip install -r requirements.txt
      - run: pytest

Совет: Если тесты долгие, используйте fail-fast: false, чтобы не прерывать все комбинации при ошибке в одной.

5. GitLab CI: кастомные образы и кэширование

Задача: Использовать кастомный Docker-образ из GitLab Container Registry и включить кэширование зависимостей для ускорения билдов.

Промт:

Настрой .gitlab-ci.yml: образ  registry.gitlab.com/mygroup/myimage:latest, кэш  node_modules, этапы: lint (eslint), test (jest), build (webpack). Кэш сохраняй на одну ветку.

Пример вывода:

image: registry.gitlab.com/mygroup/myimage:latest

cache:
  key: $CI_COMMIT_REF_SLUG
  paths:
    - node_modules/

stages:
  - lint
  - test
  - build

lint:
  stage: lint
  script:
    - eslint .

test:
  stage: test
  script:
    - jest --coverage

build:
  stage: build
  script:
    - webpack --mode production
  artifacts:
    paths:
      - dist/

Примечание: Кэширование сокращает время пайплайна на 40–60% (данные из блога GitLab — «CI/CD cache best practices»).

6. ArgoCD: авторизация через OIDC и RBAC

Задача: Настроить ArgoCD для входа через Google OIDC и ограничить доступ по ролям (админ, разработчик, читатель).

Промт:

Сгенерируй конфигурацию argocd-cm для OIDC с Google: clientId, clientSecret, issuer URL. Дополнительно — RBAC-политику в argocd-rbac-cm: админ имеет полный доступ, разработчик — синхронизацию и просмотр, читатель — только просмотр.

Пример вывода (сокращённый):

# argocd-cm.yaml
data:
  url: https://argocd.example.com
  oidc.config: |
    name: Google
    issuer: https://accounts.google.com
    clientID: $ARGOCD_OIDC_CLIENT_ID
    clientSecret: $ARGOCD_OIDC_CLIENT_SECRET
    requestedIDTokenClaims:
      groups:
        essential: true
    requestedScopes:
      - openid
      - profile
      - email
      - groups

# argocd-rbac-cm.yaml
data:
  policy.default: role:readonly
  policy.csv: |
    p, role:admin, applications, *, */*, allow
    p, role:developer, applications, sync, */*, allow
    p, role:developer, applications, get, */*, allow
    g, [email protected], role:admin
    g, [email protected], role:developer

Важно: Замените $ARGOCD_OIDC_CLIENT_ID и $ARGOCD_OIDC_CLIENT_SECRET на реальные значения из Google Cloud Console.

7. GitHub Actions: автоматический релиз с changelog

Задача: При пуше тега вида v* создать GitHub Release, сгенерировать changelog из коммитов и прикрепить собранный бинарник.

Промт:

Создай workflow: триггер push tags 'v*'. Шаги: checkout, сборка бинарника (go build -o myapp), создание релиза с changelog из коммитов между последними двумя тегами, загрузка myapp как артефакта.
Используй softprops/action-gh-release@v2 для релиза.

Пример вывода:

name: Release
on:
  push:
    tags:
      - 'v*'
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: go build -o myapp .
      - name: Generate Changelog
        id: changelog
        run: |
          PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
          if [ -z "$PREV_TAG" ]; then
            echo "changelog=Initial release" >> $GITHUB_ENV
          else
            LOG=$(git log $PREV_TAG..HEAD --oneline --format="* %s")
            echo "changelog<<EOF" >> $GITHUB_ENV
            echo "$LOG" >> $GITHUB_ENV
            echo "EOF" >> $GITHUB_ENV
          fi
      - uses: softprops/action-gh-release@v2
        with:
          body: ${{ env.changelog }}
          files: myapp

Совет: Для более продвинутого changelog используйте git-cliff или conventional-changelog-action.

8. GitLab CI: безопасность через SAST и DAST

Задача: Встроить сканирование безопасности SAST (Semgrep) и DAST (OWASP ZAP) в пайплайн.

Промт:

Добавь в .gitlab-ci.yml стадии sast и dast. SAST: используй semgrep/semgrep:latest, сканируй папку src. DAST: используй owasp/zap2docker-stable, просканируй staging-окружение https://staging.example.com.

Пример вывода:

stages:
  - sast
  - dast

sast:
  stage: sast
  image: returntocorp/semgrep
  script:
    - semgrep --config=auto src/
  artifacts:
    reports:
      sast: gl-sast-report.json

dast:
  stage: dast
  image: owasp/zap2docker-stable
  script:
    - zap-baseline.py -t https://staging.example.com -r dast-report.html
  artifacts:
    paths:
      - dast-report.html

Важно: SAST-отчёты автоматически отображаются в GitLab Security Dashboard, если настроен GitLab Ultimate.

9. ArgoCD: канареечный деплой с анализом метрик

Задача: Настроить канареечное развёртывание (canary deployment) с постепенным увеличением трафика, используя AnalysisTemplate для проверки метрик Prometheus.

Промт:

Создай AnalysisTemplate для ArgoCD Rollout: метрика из Prometheus — success_rate (доля успешных запросов), порог 95%. И Application с canary-стратегией: шаги — 10% трафика на 5 минут, затем 50% на 5 минут, затем 100%.

Пример вывода (сокращённый):

apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: success-rate
spec:
  metrics:
    - name: success-rate
      successCondition: result >= 0.95
      provider:
        prometheus:
          query: |
            sum(rate(http_requests_total{status=~"2.."}[5m])) / sum(rate(http_requests_total[5m]))
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: myapp-rollout
spec:
  strategy:
    canary:
      steps:
        - setWeight: 10
        - pause: {duration: 5m}
        - setWeight: 50
        - pause: {duration: 5m}
        - setWeight: 100
      analysis:
        templates:
          - templateName: success-rate

Примечание: ArgoCD Rollouts — отдельный контроллер, его нужно установить отдельно. Подробнее — в официальной документации Argo Rollouts.

10. GitHub Actions: декларативный деплой через ArgoCD CLI

Задача: Использовать GitHub Actions для обновления образа в Helm-чарте и триггера синхронизации ArgoCD.

Промт:

Создай workflow: после сборки образа обнови значение image.tag в values.yaml Helm-чарта, закоммить и запушь в репозиторий, затем запусти синхронизацию через argocd CLI (команда argocd app sync myapp).

Пример вывода:

name: Deploy via ArgoCD
on:
  push:
    branches: [main]
jobs:
  update-and-sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          sed -i 's/tag: .*/tag: latest/' helm/myapp/values.yaml
          git config user.name "CI"
          git config user.email "[email protected]"
          git add helm/myapp/values.yaml
          git commit -m "Update image tag"
          git push
      - name: Sync ArgoCD
        env:
          ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }}
          ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_TOKEN }}
        run: |
          argocd login $ARGOCD_SERVER --grpc-web --auth-token $ARGOCD_AUTH_TOKEN
          argocd app sync myapp --grpc-web

Совет: Токен для ArgoCD можно получить через argocd account generate-token. Храните его в секретах GitHub.

Заключение

Эти 10 промтов покрывают 90% типовых задач CI/CD: от простого деплоя на VPS до канареечных релизов с анализом метрик. Копируйте их, адаптируйте под свои проекты и не забывайте проверять сгенерированный код — AI иногда ошибается в синтаксисе. Если вы хотите углубиться в тему, рекомендую изучить официальные репозитории GitHub Actions (github.com/actions), документацию GitLab CI (docs.gitlab.com/ee/ci/) и ArgoCD (argo-cd.readthedocs.io).

Попробуйте применить один из промтов прямо сейчас — это сэкономит вам час ручной настройки. Делитесь результатами в комментариях!

← Все статьи

Комментарии

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

12 промтов для Low-Code / No-Code: Airtable, Bubble, Retool

16 июля 2026

Архитектура независимого умного дома: паттерны аппаратного проектирования и Embedded-разработка на ESP32

16 июля 2026

Как я перестал тонуть в алгоритмах: курс «Алгоритмы и структуры данных» на asibiont.com и подготовка к FAANG за 8 недель

16 июля 2026

AI-агент для финансов: как интеграция с ЮKassa автоматизирует приём платежей и отчётность

16 июля 2026

SPI-интеграция с AI-агентом ASI Biont: пошаговый гайд по подключению сенсоров и дисплеев

16 июля 2026

Интеграция датчика давления BME280/BMP280 с AI-агентом ASI Biont: мониторинг и управление через MQTT

16 июля 2026

Wildberries и Ozon — Электронная коммерция: Как ИИ трансформирует обучение продавцов на Asibiont.com

16 июля 2026

Soft Skills и Карьера: Почему AI-обучение на Asibiont — ваш билет к росту дохода в 2026

16 июля 2026

Мастер-класс по международному налоговому планированию в эпоху Pillar Two: почему структурированный курс с ИИ превосходит самостоятельное обучение

16 июля 2026