CI/CD пайплайны
Обзор
GitLab CI/CD используется для сборки образов и автоматического деплоя. Общие шаблоны хранятся в infrastructure/pipelines и подключаются через include.
Пайплайн сервиса (типовой)
include:
- project: 'infrastructure/pipelines'
file: 'ci-templates/<template>.yaml'
Типовые стадии для backend-сервиса:
build:image → сборка Docker-образа, пуш в Yandex CR
deploy:dev → обновление tag в media/deployment/mysport-dev
deploy:prod → обновление tag в media/deployment/mysport-prod (ручной триггер или auto на master)
Пайплайн документации
Репозитории с документацией (*/documentation) используют шаблон .deploy-documentation-template:
include:
- project: 'infrastructure/pipelines'
file: 'ci-templates/deploy-template.yaml'
deploy:documentation:
extends: .deploy-documentation-template
variables:
DOC_PROJECT_NAME: "Media" # имя проекта
DOC_TARGET_DIR: "docs/media" # папка в Docusaurus-репозитории
only:
- master
При пуше в master CI копирует markdown-файлы в common/docusaurus/docs/<project>/, что триггерит пересборку Docusaurus.
Пайплайн Docusaurus
Репозиторий common/docusaurus, три стадии:
build:static → npm ci && npm run build (Node.js image)
→ артефакт: Docusaurus/build/
build:docusaurus → docker build (nginx only, Dockerfile.nginx)
→ push образа в registry
deploy → обновление values.yaml в deployment-репо
→ ArgoCD синхронизирует
Две стадии Docker/npm разделены из-за ограничений BuildKit rootless в Kubernetes-раннерах.
GitLab Runners
Переменные CI/CD
Для работы пайплайна документации требуются переменные в GitLab CI/CD Settings репозитория:
| Переменная | Описание |
|---|---|
DEPLOY_DOCS_REPO_TOKEN_NAME | Username для доступа к Docusaurus-репозиторию |
DEPLOY_DOCS_REPO_TOKEN_KEY | Токен доступа |
DEPLOY_DOCS_REPO_URL | URL репозитория Docusaurus (без https://) |