Gitea Actions
CI/CD пайплайн описан в файле .gitea/workflows/ci.yaml. Он запускается автоматически при каждом git push — тебе не нужно его запускать вручную.
Общая схема описана в CI/CD обзоре.
Что делает пайплайн
Пайплайн состоит из четырёх шагов, которые выполняются последовательно:
| Шаг | Название | Что происходит |
|---|---|---|
| 1 | lint | Проверка кода: форматирование, статические анализаторы (если настроены) |
| 2 | sonarqube | Отправка кода в SonarQube — анализ качества, дублирований, потенциальных багов |
| 3 | build & push | Сборка Docker-образа через werf + публикация в Nexus registry |
| 4 | deploy | Деплой в твой namespace project-NN через werf converge |
Если какой-то шаг упал — следующие не выполняются.
Поведение по веткам
| Ветка | Что происходит |
|---|---|
main | Полный пайплайн: lint → sonar → build → deploy |
| Любая другая | lint → sonar → build (деплой не запускается) |
| Pull Request | lint → 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_URL | URL Docker registry (Nexus) |
REGISTRY_USER | Пользователь Nexus |
REGISTRY_PASSWORD | Пароль Nexus |
SONAR_HOST_URL | URL 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 |