Ответ
Pipeline (пайплайн, конвейер) в CI/CD — это автоматизированная последовательность этапов, через которые проходит код от коммита до развертывания в production. Его цель — обеспечить быструю, надежную и повторяемую доставку изменений.
Типичные этапы DevOps-пайплайна:
- Сборка (Build): Компиляция кода, сборка артефактов (Docker-образов, jar-файлов).
- Статический анализ (Lint/SAST): Проверка кода на соответствие стандартам и поиск уязвимостей (SonarQube, Checkmarx).
- Тестирование (Test): Запуск юнит-тестов, интеграционных тестов.
- Сборка и публикация артефакта: Помещение стабильного артефакта в реестр (Docker Registry, Nexus).
- Развертывание в staging: Автоматическое деплой в тестовое окружение.
- Интеграционное/E2E тестирование: Тесты в среде, близкой к production.
- Развертывание в production: Часто с стратегиями blue-green или canary.
Пример пайплайна GitLab CI для микросервиса на Go:
stages:
- test
- build
- security_scan
- deploy
variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
unit-test:
stage: test
image: golang:1.21
script:
- go test ./... -v
build-docker:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $DOCKER_IMAGE .
- docker push $DOCKER_IMAGE
trivy-scan:
stage: security_scan
image: aquasec/trivy:latest
script:
- trivy image --exit-code 1 --severity HIGH,CRITICAL $DOCKER_IMAGE
deploy-to-staging:
stage: deploy
image: bitnami/kubectl:latest
script:
- echo "Deploying $DOCKER_IMAGE to staging"
- kubectl set image deployment/myapp-deployment app=$DOCKER_IMAGE -n staging
only:
- main
Ключевые принципы: идемпотентность, воспроизводимость, быстрая обратная связь при падении любого этапа (fail fast). В моей практике мы использовали пайплайны для реализации GitOps: успешный пайплайн создавал Pull Request в репозиторий с манифестами Kubernetes (Flux/ArgoCD), который затем автоматически применялся в кластере.