Skip to content

ci(release): push images to Docker Hub alongside Quay - #743

Merged
lakhansamani merged 1 commit into
mainfrom
chore/dual-registry-push
Aug 5, 2026
Merged

ci(release): push images to Docker Hub alongside Quay#743
lakhansamani merged 1 commit into
mainfrom
chore/dual-registry-push

Conversation

@lakhansamani

@lakhansamani lakhansamani commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Why

Quay has no lifetime pull counter. It stores daily rows in RepositoryActionCount and exposes at most a trailing 92 days (MAX_DAYS_IN_3_MONTHS, quay/quay); the namespace listing's popularity field is a 7-day sum (get_repositories_action_sums). There is no cumulative column in the schema — nothing to enable, nothing to fix on Quay's side.

Docker Hub does keep a monotonic counter, and lakhansamani/authorizer already holds five years of it. It stalled at v2.2.1 (2026-04-14) when releases went Quay-only.

Current state:

counter value
quay.io/authorizer/authorizer 92-day window 2,380
popularity (7d) 239
docker.io/lakhansamani/authorizer lifetime 39,154

What

  • Release workflow tags both registries in the same docker buildx build --push. Identical digests, no extra build minutes, no second job.
  • :latest still moves only on strict semver — rc/beta/alpha never win, on either registry.
  • Buildcache stays on Quay alone; one cache is enough and it is not user-facing.

One file changed. No new secrets: reuses DOCKER_USERNAME / DOCKER_PASSWORD, already present from when releases last shipped to Docker Hub.

Notes

  • Those two secrets date to 2021-09-11 and were last exercised around v2.2.1. If DOCKER_PASSWORD is an account password rather than an access token and the account has 2FA enabled, docker login will fail — worth a dry run via workflow_dispatch before tagging a real release.
  • buildcache pulls from our own CI land in the same repo-level counter, so neither total is purely end-user traffic.
  • DOCKERHUB_IMAGE points at the personal namespace lakhansamani/authorizer to preserve the existing 39k history. Moving to an authorizer/authorizer org on Docker Hub is a one-line change but forks the counter — worth deciding now rather than later.

@lakhansamani
lakhansamani force-pushed the chore/dual-registry-push branch from c30ff70 to 78bdae2 Compare August 5, 2026 07:06
Quay keeps no lifetime pull counter — only daily rows, exposed for a
trailing 92 days (MAX_DAYS_IN_3_MONTHS in quay/quay). Docker Hub keeps a
monotonic one, and lakhansamani/authorizer already holds 5 years of it,
stalled since v2.2.1 when releases went Quay-only.

One buildx invocation carries both tag sets, so digests match and build
time is unchanged. Buildcache stays on Quay alone.

Reuses the existing DOCKER_USERNAME/DOCKER_PASSWORD secrets from when
releases last shipped to Docker Hub.
@lakhansamani
lakhansamani force-pushed the chore/dual-registry-push branch from 78bdae2 to a92ce66 Compare August 5, 2026 07:07
@lakhansamani
lakhansamani merged commit 094451f into main Aug 5, 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.

1 participant