Skip to content

publish workflow: add :release auto-tag + workflow_dispatch rollback input#1

Merged
ehsan6sha merged 1 commit into
mainfrom
add-release-tag-and-rollback-input
May 26, 2026
Merged

publish workflow: add :release auto-tag + workflow_dispatch rollback input#1
ehsan6sha merged 1 commit into
mainfrom
add-release-tag-and-rollback-input

Conversation

@ehsan6sha
Copy link
Copy Markdown
Member

Part of Plan B v2.1 (production consolidation). Plan file at E:\fxblox\plans\plan-B-production-consolidation.md in the fula-ota workspace.

Summary

Two related changes to .github/workflows/docker-build-publish.yml:

  1. :release as the production-default tag on main pushes.
    The fula-ota plugin compose defaults to ${BLOX_AI_IMAGE_TAG:-release}; without this tag, fresh installs hit Docker Hub 404.

  2. workflow_dispatch input extra_tag to mint immutable rollback tags from a chosen ref (e.g. rollback-2026-05-26). Lets us publish a stable rollback target that mutable tags cannot accidentally move.

The previous :test raw-tag alias is dropped — :release is the single production tag and canary devices pin by sha256 digest, not by tag (per the planned D4 canary design).

Safety preconditions for :release = :main

These are documented in the plan and need to be in place before / alongside this merge:

  • main is branch-protected (PR + review + green CI required) — manual GitHub UI step
  • immutable rollback-2026-05-26 tag exists as fallback — minted via gh workflow run docker-build-publish.yml -f extra_tag=rollback-2026-05-26 after this PR merges
  • canary devices pin to an immutable sha256 digest during the D4 observation window

Test plan

  • PR CI green (workflow YAML syntax)
  • After merge: main push triggers CI, publishes :main and :release from the same build
  • docker buildx imagetools inspect functionland/blox-ai:release --format '{{json .Manifest.Digest}}' returns a valid sha256
  • Same digest for :main and :release (auto-alias works)
  • gh workflow run docker-build-publish.yml --ref main -f extra_tag=rollback-2026-05-26 publishes the rollback tag with the same digest

Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com

…input

Two related changes for Plan B v2.1:

1. :release as the production-default tag on main pushes.
   The fula-ota plugin compose defaults to ${BLOX_AI_IMAGE_TAG:-release};
   without this tag, fresh installs hit Docker Hub 404.

2. workflow_dispatch input `extra_tag` to mint immutable rollback tags
   from a chosen ref (e.g. rollback-2026-05-26). Lets us publish a
   stable rollback target that mutable tags cannot accidentally move.

The previous :test raw-tag alias is dropped — :release is now the
single production tag and canary devices pin by sha256 digest, not
by tag (per the plan's D4 canary design).

Safety preconditions for :release = :main (documented in the plan):
  - main is branch-protected (PR + review + green CI required)
  - immutable rollback-YYYYMMDD tag exists as fallback
  - canary devices pin to an immutable sha256 digest during D4
@ehsan6sha ehsan6sha merged commit a02ef34 into main May 26, 2026
2 checks passed
@ehsan6sha ehsan6sha deleted the add-release-tag-and-rollback-input branch May 26, 2026 04:21
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