Skip to content

ci: publish versioned Docker Hub tags on release tags - #661

Merged
Randy808 merged 1 commit into
Blockstream:masterfrom
DeviaVir:dockerhub-release-tags
Aug 24, 2026
Merged

ci: publish versioned Docker Hub tags on release tags#661
Randy808 merged 1 commit into
Blockstream:masterfrom
DeviaVir:dockerhub-release-tags

Conversation

@DeviaVir

@DeviaVir DeviaVir commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Versioned Docker images via the existing pipeline

Today the GitLab CI pipeline only ever pushes blockstream/esplora:latest, so there is no way to pull "the image for release X" so pinning and rollbacks require digests.

This PR adds tag-triggered release jobs to the existing pipeline: pushing a git tag like esplora_v2.10 builds the image from that tagged commit and publishes:

  • blockstream/esplora:v2.10 — multi-arch manifest (amd64 + arm64)
  • blockstream/esplora:v2.10-amd64, blockstream/esplora:v2.10-arm64

latest continues to track master exactly as before.

Design notes

  • The release jobs mirror the existing .build_esplora_latest jobs (same base-image pin via BASE_TAG, same FOOT_HTML commit stamp, same buildx/cache setup), so a release build is identical to a master build of the same commit, just with a version tag.
  • Runs only on tag pipelines ($CI_COMMIT_TAG =~ /^esplora_v/); branch, MR, and trigger pipelines are unaffected.
  • Uses the existing Docker Hub credentials, resulting in a single registry, one pipeline, no new secrets or repo settings.

This is the alternative to #629: it delivers the versioned/pinnable images that PR is after, but through the pipeline that already builds and tests our published images, and matching our actual esplora_vX.YY tag format.

Validation

  • gitlab/build.yml parses as valid YAML; the folded multi-line commands were verified to collapse to the intended shell commands.
  • Rule audit: on a tag pipeline, only the three new release jobs match (base jobs require $CI_COMMIT_BRANCH, latest/test jobs use only: branches/master, the GitHub status jobs require trigger pipelines).
  • Not run end-to-end: needs a real esplora_v* tag push on the repo that runs CI.

Pushing a git tag like esplora_v2.10 now builds and publishes
blockstream/esplora:v2.10 (plus per-arch v2.10-amd64/v2.10-arm64 tags
and a multi-arch manifest) to Docker Hub, alongside the existing
:latest tags that track master.

This gives users immutable, pinnable image tags for reproducible
deployments and rollbacks, using the existing GitLab CI pipeline and
credentials; no new registry or secrets involved.
@Randy808
Randy808 merged commit 558d8d0 into Blockstream:master Aug 24, 2026
3 checks passed
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.

2 participants