Preskoči na sadržaj

Kako radi bump verb?

TL;DR

bump je PRVI verb u pipeline lancu. Piše početni ci-state.json, računa verzije, push-uje git tag (za production), i bilježi pipeline.release_commit (za production) ili samo image_tag (za ostalo).

Šta radi, korak po korak

  1. Učitaj services.json. Validira shemu, locira traženi servis po SERVICE env var-u, --group filter-u ili --all. Loader: ci/service_manifest.py (jedini dozvoljeni čitač).
  2. Odredi verziju. Za production: izračunaj next semver iz git tagova + release.tag_pattern. Za ostalo: koristi staging_suffix (default -rc.N).
  3. Generiši CHANGELOG. ci/git_cliff/ — pinovani git-cliff binary, vidi ci/git_cliff/CLAUDE.md od zadnjeg taga do HEAD.
  4. Commit CHANGELOG + (opcionalno) services.json izmjene. Samo za production env.
  5. Push + tag. git tag v<version> na release commit; atomarno push-uj branch + tag na origin.
  6. Zapiši u ci-state.json:
  7. services.<name>.version (npr. 1.2.3)
  8. services.<name>.image_tag (npr. 1.2.3 ili 1.2.3-rc.1)
  9. services.<name>.release_tag (npr. v1.2.3; za non-prod prazan)
  10. pipeline.release_commit (production samo)
  11. pipeline.release_mode: true (production samo)
  12. Auto-seed distributed lock ako je potrebno (npr. za bump koji prethodi Coolify deployu, vidi ci/lock/CLAUDE.md).

Production vs ostalo

Production Staging/Preview/Development
Pravi commit? DA (CHANGELOG + tag) NE
release_commit u state? DA NE (prazan)
release_mode u state? true false
release_tag u state? v1.2.3 prazan
image_tag ima staging suffix? NE DA (default -rc.N)
Triggera ci-checkout-release? DA NE (no-op)

Failure modes

  • bump fail-uje na git tag --points-at HEAD — nema prethodnog taga za izračunavanje next verzije. Fix: ručno kreiraj početni tag (git tag v0.1.0 && git push --tags).
  • bump fail-uje na git push (non-fast-forward) — drugi pipeline je već push-ovao. Fix: rerun; bump koristi pull-and-rebase strategiju.
  • CHANGELOG prazan — nema commitova od zadnjeg taga. Fix: provjeri git log ručno, ili bump-uj na sljedeći major.
  • Schema mismatchservices.json ne prolazi validator. Fix: ci/json/services_migrate.py services.json --to <target> (vidi 02-schemas/01-where-in-schema.md).

Vidi i