ci(release): auto-PR в ordinis-infra с новым image tag после release

Раньше release tag создавал v2.X.Y, build images, но values-prod.yaml в
ordinis-infra оставался указывать на старый tag (либо unset → fall to
:latest). Это создавало divergence:

  - Auto deploy через trigger-deploy-prod использовал runtime
    UPSTREAM_IMAGE_TAG = новый tag → правильный deploy.
  - Manual deploy через infra repo (helm upgrade -f values-prod.yaml)
    использовал static values → старый tag → split-brain ноды через
    :latest cache (см. ordinis-infra MR !10 fix).

Новый job 'propose-prod-image-bump':
- Triggers только на tag pipeline (semver v*.*.*).
- Needs все docker-* jobs (images должны быть в registry).
- Clones ordinis-infra, патчит image.tag в values-prod.yaml через awk
  с scope-tracking (только image: block, не writer/readApi/etc).
- Commit + push branch + создаёт MR через GitLab API.
- Reviewer approve → merge → infra pipeline auto-катит deploy-prod.

Git становится единственным источником истины: HEAD ordinis-infra main
всегда отражает что задеплоено на prod.

Setup: новая CI variable INFRA_PROJECT_TOKEN (group-level access token
scope: write_repository, api, role: Developer). Без неё job exits early
с подсказкой — pipeline не блокируется (allow_failure: true).
This commit is contained in:
Zimin A.N.
2026-05-13 00:20:50 +03:00
parent bf07d6b3e3
commit 02591466cc
2 changed files with 209 additions and 0 deletions
+25
View File
@@ -26,6 +26,31 @@ human кликает Deploy.
После этого release job в `.gitlab-ci.yml` будет работать.
### Auto-PR в 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).
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`
- Expiry: 1 год
4. **Add CI variable в ordinis project (367)**:
- Key: `INFRA_PROJECT_TOKEN`
- Value: (token из шага 3)
- Flags: `Masked` ✅, `Protected`
Без этой переменной job exits early (`allow_failure: true`), tag pipeline
не блокируется. Manual MR в `ordinis-infra` остаётся всегда доступен как
fallback.
## Commit conventions
Conventional Commits (https://www.conventionalcommits.org/):