Skip to content

ci: tag-triggered release pipeline + workspace version source of truth - #116

Merged
vedhavyas merged 2 commits into
mainfrom
release-pipeline
May 1, 2026
Merged

vedhavyas merged 2 commits into
mainfrom
release-pipeline

Conversation

@vedhavyas

Copy link
Copy Markdown
Contributor

Summary

Establishes Cargo workspace version as the single source of truth for releases, and adds a tag-triggered pipeline that builds Docker images and opens a draft GitHub release in one step.

  • chore: adopt workspace-level version, set to 1.2.0 — moves version into [workspace.package] and sets it to 1.2.0. All three crates (alerter, indexer, shared) now share that version via version.workspace = true. Closes the historical drift between alerter@1.1.1, indexer@0.1.0, and the v1.1.2 tag.
  • ci: add tag-triggered release pipeline — release.yml fires on a v*.*.* tag push, asserts the tag matches [workspace.package].version, matrix-calls a new reusable _build-image.yml for both services in parallel, then creates a draft GitHub release with auto-generated notes. The reusable workflow encapsulates the docker build steps so docker.yml and release.yml share the same build logic without copy-paste drift; docker.yml shrinks to a thin workflow_dispatch wrapper and remains the manual fallback for one-off rebuilds from main.

Release flow going forward

  1. Bump [workspace.package].version in Cargo.toml, commit, merge.
  2. git tag vX.Y.Z && git push origin vX.Y.Z (must match the new version).
  3. The workflow runs; the draft release appears in the GitHub UI for headline editing and publish.

vedhavyas added 2 commits May 1, 2026 14:20
Move the package version into [workspace.package] so all three crates
(alerter, indexer, shared) share a single source of truth. Bumps the
common version to 1.2.0, closing the historical drift where alerter
was at 1.1.1 and indexer/shared at 0.1.0.

Setting the floor to 1.2.0 (rather than 1.1.3) reflects the
feature-level work that has accumulated since v1.1.2: staking indexer
with operator tracking, nominator deposits/withdrawals, account
balance alerts, and runtime storage layout updates.
Fires on a v*.*.* tag push and:

  1. verify-version: asserts the tag matches [workspace.package].version
     in the root Cargo.toml. Mismatch fails the workflow before any
     downstream work runs.
  2. build-images: matrix-calls a new reusable _build-image.yml
     workflow for both alerter and indexer in parallel. Pushes
     ghcr.io/autonomys/chain-{alerter,indexer}:vX.Y.Z.
  3. create-release: opens a draft GitHub release with auto-generated
     notes (What's Changed + Full Changelog link) for human review and
     publish.

The reusable _build-image.yml encapsulates the docker build steps
(QEMU + Buildx + ghcr login + metadata-action + build-push-action) so
docker.yml and release.yml share the exact same build logic without
copy-paste drift. docker.yml shrinks to a thin workflow_dispatch
wrapper and remains the manual fallback for one-off rebuilds from
main outside the release flow.
@vedhavyas
vedhavyas added this pull request to the merge queue May 1, 2026
Merged via the queue into main with commit ae2eb90 May 1, 2026
5 checks passed
@vedhavyas
vedhavyas deleted the release-pipeline branch May 1, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant