feat(cmd): release v1.10.0 — shallow clone guard and --check preflight
ci / vet, staticcheck, test, build (push) Successful in 3m46s
docs / Build and deploy docs (push) Failing after 11s
release / Build and publish release (push) Successful in 4m34s

- refuse to release when the clone is shallow and no previous release tag
  is found: tags beyond the fetch depth would silently restart versioning
  at X.Y.0; --allow-shallow bypasses the guard for a true first release
- new --check preflight validates the release environment without
  releasing: branch resolution + pattern, working tree, tag discovery,
  shallow clone, remote origin URL parse (same parse the push performs),
  push auth method, version files, release target — all problems reported
  at once, non-zero exit on failure
- .releaser.gitlab-ci.yml gains an optional .releaser:check MR-pipeline
  job; CI examples now set GIT_DEPTH: 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 22:12:17 +02:00
parent 2a6a65ce80
commit 37db8e97ca
11 changed files with 539 additions and 1 deletions
+13
View File
@@ -20,6 +20,19 @@
# api + write_repository
# (do NOT use CI_JOB_TOKEN — it cannot push tags back)
# Optional preflight job for merge-request pipelines: validates the release
# environment (branch pattern, remote URL, auth, version files, release
# target) without releasing anything.
.releaser:check:
stage: test
image: ${RELEASER_IMAGE:-registry.example.com/releaser:latest}
variables:
GIT_DEPTH: 0
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
script:
- releaser --check --branch "release/0.0"
.releaser:release:
stage: release
image: ${RELEASER_IMAGE:-registry.example.com/releaser:latest}