Use one application version across builds and release artifacts #32

Open
opened 2026-11-01 20:11:49 +00:00 by viacheslavshuka · 0 comments

The production release must identify the same application that passed development validation. A release-preparation pull request sets the final shared SemVer before the image is built.

Scope

Choose one authoritative version source and one update command. Connect backend, frontend, OpenAPI, release tags, and registry release tags to that value.

Acceptance criteria

  • One documented operation updates the authoritative SemVer and necessary derived files. CI rejects disagreement between backend, frontend, and OpenAPI versions.
  • A release candidate embeds its final SemVer during development validation. Promotion does not rebuild the image or alter embedded versions.
  • Environment, commit, and image digest distinguish deployments that share an application version. Diagnostic identity allows deployment checks to reject a healthy wrong build.
  • Release metadata preserves a permanent mapping from published version to commit and image digest. Published release identity is immutable.
  • A mismatched release tag or registry tag cannot bind a different artifact to an existing published version. Corrections use a new version.
  • Conventional Commit titles help draft notes but do not automatically choose a version bump. Version changes remain explicit release-preparation decisions.
  • Changing release-note wording cannot mutate the release artifact mapping.

Validation

Build a candidate and compare its backend, frontend, OpenAPI, and image identity. Check mismatched version sources, a reused published version, and unchanged identity after promotion simulation.

Dependencies

The production release must identify the same application that passed development validation. A release-preparation pull request sets the final shared SemVer before the image is built. ## Scope Choose one authoritative version source and one update command. Connect backend, frontend, OpenAPI, release tags, and registry release tags to that value. ## Acceptance criteria - One documented operation updates the authoritative SemVer and necessary derived files. CI rejects disagreement between backend, frontend, and OpenAPI versions. - A release candidate embeds its final SemVer during development validation. Promotion does not rebuild the image or alter embedded versions. - Environment, commit, and image digest distinguish deployments that share an application version. Diagnostic identity allows deployment checks to reject a healthy wrong build. - Release metadata preserves a permanent mapping from published version to commit and image digest. Published release identity is immutable. - A mismatched release tag or registry tag cannot bind a different artifact to an existing published version. Corrections use a new version. - Conventional Commit titles help draft notes but do not automatically choose a version bump. Version changes remain explicit release-preparation decisions. - Changing release-note wording cannot mutate the release artifact mapping. ## Validation Build a candidate and compare its backend, frontend, OpenAPI, and image identity. Check mismatched version sources, a reused published version, and unchanged identity after promotion simulation. ## Dependencies - [#10: Generate and verify OpenAPI and the TypeScript client](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/10). Version consistency includes generated OpenAPI. - [#26: Package and serve the website and API from one image](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/26). Version consistency includes the built frontend and image. ## Related work - [#36: Promote published releases without rebuilding their images](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/36)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
viacheslavshuka/quorum#32
No description provided.