Skip to content

ci(quoter-signer): publish image alongside quoter-bot on release - #205

Draft
julien-devatom wants to merge 1 commit into
mainfrom
quoter-signer-dockerhub-e3b6db
Draft

ci(quoter-signer): publish image alongside quoter-bot on release#205
julien-devatom wants to merge 1 commit into
mainfrom
quoter-signer-dockerhub-e3b6db

Conversation

@julien-devatom

Copy link
Copy Markdown
Collaborator

Why

TIB-2026-08-12 Addendum A committed the morphoorg/quoter-signer middleware image to the TIB-2026-08-14 publishing posture, with the README's manual push as the interim channel. Every quoter-bot production release should ship the middleware image the same way it ships the bot image: an immutable public record of the released source, published with no static registry credential. This wires that up — the signer has no release cadence of its own, so it rides the quoter-bot release train rather than gaining a selector, a second environment, or a second workflow.

What

  • publish-quoter-bot-dockerhub.yml fans its Publish job over a two-image matrix (bots/quoter-bot/Dockerfile, services/quoter-signer/Dockerfile), both at repo-root context. Same OIDC login, SHA-tag idempotency, and forward-only latest gate per image; the same quoter-bot-* release-tag family gates both latest tags. Legs run under per-image concurrency groups with fail-fast: false, so one registry failure cannot cancel or block the other image.
  • Repository names stay environment configuration: the matrix carries the var name and steps resolve vars[matrix.repository_var], preflighted fail-loud. No GIT_REVISION build-arg: the action's --label values override the signer Dockerfile's same-key LABEL (verified empirically).
  • Recorded as TIB-2026-08-14 Addendum A; the signer README's manual flow is now SHA-only (latest belongs to CI's forward-only gate); the bot README paragraph is refreshed (it also mis-stated that the push runs in parallel with the deploy — the job needs the deploy and the release).

Rollout prerequisites (before the next release-quoter-bot)

  1. Add var DOCKER_SIGNER_REPOSITORY=quoter-signer to the quoter-bot-dockerhub GitHub environment (preflight fails loud without it; fail-fast: false keeps the bot leg publishing regardless).
  2. Create morphoorg/quoter-signer on Docker Hub as public — it is not publicly visible today (hub API 404), and auto-creation on push would inherit the namespace default privacy.
  3. Grant the repository image-push scope in the Docker org's OIDC connection ruleset (same environment-based subject; nothing else about the auth posture changes).

Validation

  • pnpm format:check, pnpm lint, pnpm knip clean; pnpm test green (3027 passed — the 4 failing fork/e2e files need RPC_URL_8453, absent in this worktree, unrelated).
  • Both workflows parse; the pipeline-shape tests in railway.utils.test.ts pass (the reviewer caught that renaming the Quoter-bot-image caller job broke them — the rename is reverted, only its comment changed).
  • Independent review: Codex (GPT Sol, high reasoning) — 1 must-fix (job rename, reverted), 2 should-fix (manual-push latest hazard, first-publish provisioning — both incorporated), 1 nit (stale README name, fixed).

Not funds-at-risk: no calldata, signing policy, or bot behavior changes — CI publishing only, and the OIDC no-static-credential posture is unchanged.

🤖 Generated with Claude Code

Fan publish-quoter-bot-dockerhub.yml over a two-image matrix so each
quoter-bot production release also pushes morphoorg/quoter-signer
(services/quoter-signer/Dockerfile, repo-root context) with the commit
hash and forward-only latest tags. The signer rides the quoter-bot
release train: the same quoter-bot-* tag family gates both latest tags.
Repository names stay environment configuration — the new
DOCKER_SIGNER_REPOSITORY var joins DOCKER_REPOSITORY, preflighted
fail-loud — and legs run under per-image concurrency groups with
fail-fast disabled so one registry failure cannot block the other
image. Recorded as TIB-2026-08-14 Addendum A.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@julien-devatom julien-devatom self-assigned this Sep 7, 2026
@julien-devatom

Copy link
Copy Markdown
Collaborator Author

@codex review

@julien-devatom

Copy link
Copy Markdown
Collaborator Author

@prd-carapulse[bot] can you review and approve if all good

@prd-carapulse

prd-carapulse Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

✅ Approved PR #205 at 99fdca964ad9cded9a61d35ceabc22ac88cf42da.

Validation: actionlint v1.7.12 passed; 5 current GitHub checks passed.
Rollout prerequisites: DOCKER_SIGNER_REPOSITORY remains unset; public morphoorg/quoter-signer returns 404; Docker Hub OIDC push scope remains unverified. Complete before next quoter-bot release.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 99fdca964a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@prd-carapulse prd-carapulse Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. Reviewed head 99fdca964ad9cded9a61d35ceabc22ac88cf42da: matrix wiring preserves per-image serialization, SHA-tag recovery, the forward-only latest gate, and scoped OIDC permissions. actionlint v1.7.12 passes; current GitHub checks pass.

Rollout prerequisites remain before the next quoter-bot release: add DOCKER_SIGNER_REPOSITORY, create morphoorg/quoter-signer as public, and grant the Docker Hub OIDC connection image-push scope. Live checks confirm the environment variable and public repository are not configured yet; Docker-side scope was not directly verifiable.

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