Перейти к основному содержимому

Gitea Actions

CI/CD пайплайн описан в файле .gitea/workflows/ci.yaml. Он запускается автоматически при каждом git push — тебе не нужно его запускать вручную.

Общая схема описана в CI/CD обзоре.

Что делает пайплайн​

Пайплайн состоит из четырёх шагов, которые выполняются последовательно:

ШагНазваниеЧто происходит
1lintПроверка кода: форматирование, статические анализаторы (если настроены)
2sonarqubeОтправка кода в SonarQube — анализ качества, дублирований, потенциальных багов
3build & pushСборка Docker-образа через werf + публикация в Nexus registry
4deployДеплой в твой namespace project-NN через werf converge

Если какой-то шаг упал — следующие не выполняются.

Поведение по веткам​

ВеткаЧто происходит
mainПолный пайплайн: lint → sonar → build → deploy
Любая другаяlint → sonar → build (деплой не запускается)
Pull Requestlint → sonar → build (деплой не запускается)

Деплой в кластер происходит только из ветки main.

Где смотреть результаты​

Gitea → репозиторий → вкладка Actions → список запусков.

Значки:

  • 🟡 — выполняется
  • ✅ — успех
  • ❌ — упал

Нажми на запуск → выбери шаг → читай логи.

Если пайплайн упал на шаге deploy — смотри логи шага и проверяй состояние пода:

kubectl get pods -n project-NN
kubectl describe pod <pod-name> -n project-NN
kubectl logs <pod-name> -n project-NN

Secrets репозитория​

Пайплайн использует secrets которые уже настроены платформой (трогать не нужно):

SecretОписание
KUBECONFIGДоступ к твоему namespace в кластере
REGISTRY_URLURL Docker registry (Nexus)
REGISTRY_USERПользователь Nexus
REGISTRY_PASSWORDПароль Nexus
SONAR_HOST_URLURL SonarQube
PROJECT_DOMAINДомен твоего приложения

Тебе нужно добавить только:

  • SONAR_TOKEN — токен из SonarQube (см. настройку SonarQube)
  • app-secrets — Kubernetes Secret с секретными env переменными приложения (при необходимости)

Ручной запуск​

Если нужно перезапустить пайплайн без изменений кода:

git commit --allow-empty -m "ci: retrigger pipeline"
git push

Или в Gitea UI: Actions → последний запуск → Re-run all jobs.

Типичные ошибки​

ОшибкаПричинаЧто делать
unauthorized на шаге buildИстёк REGISTRY_PASSWORDСообщить администратору — ротация секретов
sonarqube: SONAR_TOKEN not foundТокен не провижинен платформойСообщить администратору — SONAR_TOKEN это org-секрет, ставит платформа
ImagePullBackOff после деплояОбраз не запушился или wrong tagПроверить шаг build, пересмотреть werf.yaml
Pod в CrashLoopBackOffОшибка в коде приложенияkubectl logs <pod-name> -n project-NN