ci: bump infra image.tag прямым коммитом в main вместо auto-MR

propose-prod-image-bump открывал MR в ordinis-infra на каждый release.
MR никто не мерджил — накопилось 5+ открытых, image.tag в values
отставал на несколько релизов, и infra deploy-prod (helm upgrade -f
values-prod.yaml) откатывал prod на старый образ.

Переименован в commit-prod-image-bump: коммитит bump image.tag в
values-prod.yaml + values-staging.yaml напрямую в infra main с
rebase-retry. Убран промежуточный MR и 405-квирк при merge
вечно-manual инфра-пайплайна. Токену нужна роль Maintainer для
push в protected main (было Developer); api-scope больше не нужен.
This commit is contained in:
Zimin A.N.
2026-05-21 19:25:58 +03:00
parent a77b613efc
commit b76997e170
2 changed files with 70 additions and 53 deletions
+21 -11
View File
@@ -26,20 +26,27 @@ human кликает Deploy.
После этого release job в `.gitlab-ci.yml` будет работать.
### Auto-PR в ordinis-infra (опционально)
### Auto-bump image.tag в ordinis-infra (опционально)
`propose-prod-image-bump` job открывает MR в `ordinis-infra` после каждого
release tag — bump'ит `image.tag` в `values-prod.yaml` на свежий immutable
SHA tag (e.g. `v2-16-0-abc12345`). Чинит historical bug когда manual deploys
через infra repo получали `:latest` (stale cache → split-brain pods).
`commit-prod-image-bump` job коммитит обновление `image.tag` в
`values-prod.yaml` + `values-staging.yaml` на свежий immutable SHA tag
(e.g. `v2-16-0-abc12345`) **прямо в `ordinis-infra` main** после каждого
release tag. Чинит historical bug когда manual deploys через infra repo
получали `:latest` (stale cache → split-brain pods).
> Раньше bump шёл через auto-MR — но MR никто не мерджил, values отставали
> на несколько релизов, и infra `deploy-prod` откатывал prod на старый
> образ. Перешли на direct commit (нет ручного шага, нет 405-квирка при
> merge вечно-manual инфра-пайплайна).
Setup:
3. **Create Group Access Token** в `2-6/2-6-4/terravault`:
- `Group → Settings → Access Tokens → Add new token`
- Name: `ordinis-ci-infra-bump`
- Role: `Developer`
- Scopes: `write_repository`, `api`
- Role: `Maintainer` (нужен push в protected `main`; Developer-роль
push в protected branch не имеет)
- Scopes: `write_repository`
- Expiry: 1 год
4. **Add CI variable в ordinis project (367)**:
@@ -47,9 +54,12 @@ Setup:
- Value: (token из шага 3)
- Flags: `Masked` ✅, `Protected`
5. **ordinis-infra → Protected branches → `main`**: убедись что `Allowed
to push` покрывает этот токен (роль Maintainer покрывает по умолчанию).
Без этой переменной job exits early (`allow_failure: true`), tag pipeline
не блокируется. Manual MR в `ordinis-infra` остаётся всегда доступен как
fallback.
не блокируется. Ручной bump `image.tag` в `ordinis-infra` остаётся доступен
как fallback.
## Commit conventions
@@ -106,8 +116,8 @@ exit 0 → нет нового tag → нет loop'а.
> **Historical note:** до MR !154 (2026-05-12) сюда добавлялось `[skip ci]`.
> Это работало для main pipeline'а, НО skip'ало и tag pipeline на том же SHA
> → images с tag'ом `v*-*-*-<sha>` не собирались → `propose-prod-image-bump`
> auto-PR не запускался → manual ручной MR в infra-repo. Удалено.
> → images с tag'ом `v*-*-*-<sha>` не собирались → `commit-prod-image-bump`
> не запускался → manual ручной bump в infra-repo. Удалено.
## ⚠ Skip-ci marker trap