From 74561632df3ee2614cf2ec5448954c13eb569757 Mon Sep 17 00:00:00 2001 From: persona Date: Tue, 28 Jul 2026 15:26:04 +0000 Subject: [PATCH] chore: publish multi-arch images to docker hub Signed-off-by: persona --- .github/workflows/publish-tag.yaml | 22 +++++++++++++++++++--- .github/workflows/publish.yaml | 20 ++++++++++++++++++-- README.md | 3 ++- RELEASE.md | 5 +++-- 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/.github/workflows/publish-tag.yaml b/.github/workflows/publish-tag.yaml index 6fc26b7..ba4e48f 100644 --- a/.github/workflows/publish-tag.yaml +++ b/.github/workflows/publish-tag.yaml @@ -35,13 +35,23 @@ jobs: username: ${{ github.actor }} password: ${{ github.token }} + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_PAT }} + - name: Set image tag run: | - IMAGE_REPO="ghcr.io/kuberhealthy/ssh-check" + IMAGE_REPO="docker.io/kuberhealthy/ssh-check" IMAGE_TAG="${IMAGE_REPO}:${GITHUB_REF_NAME}" + GHCR_IMAGE_REPO="ghcr.io/kuberhealthy/ssh-check" + GHCR_IMAGE_TAG="${GHCR_IMAGE_REPO}:${GITHUB_REF_NAME}" PACKAGE_URL="https://github.com/orgs/kuberhealthy/packages/container/package/ssh-check" echo "IMAGE_REPO=${IMAGE_REPO}" >> "$GITHUB_ENV" echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITHUB_ENV" + echo "GHCR_IMAGE_REPO=${GHCR_IMAGE_REPO}" >> "$GITHUB_ENV" + echo "GHCR_IMAGE_TAG=${GHCR_IMAGE_TAG}" >> "$GITHUB_ENV" echo "PACKAGE_URL=${PACKAGE_URL}" >> "$GITHUB_ENV" - name: Build and push @@ -51,7 +61,9 @@ jobs: file: ./Dockerfile platforms: linux/amd64,linux/arm64 push: true - tags: ${{ env.IMAGE_TAG }} + tags: | + ${{ env.IMAGE_TAG }} + ${{ env.GHCR_IMAGE_TAG }} - name: Update healthcheck examples env: @@ -77,6 +89,7 @@ jobs: run: | { echo "Image: ${IMAGE_TAG}" + echo "GHCR image: ${GHCR_IMAGE_TAG}" echo "Tag: ${GITHUB_REF_NAME}" echo "Platforms: linux/amd64, linux/arm64" echo "GitHub Package: ${PACKAGE_URL}" @@ -86,11 +99,13 @@ jobs: echo "Container image published for this release." echo echo "- Image: ${IMAGE_TAG}" + echo "- GHCR image: ${GHCR_IMAGE_TAG}" echo "- Tag: ${GITHUB_REF_NAME}" echo echo "Pull:" echo echo " docker pull ${IMAGE_TAG}" + echo " docker pull ${GHCR_IMAGE_TAG}" } > release-notes.md - name: Create GitHub release @@ -110,5 +125,6 @@ jobs: echo "- ${GITHUB_REF_NAME}" >> "$GITHUB_STEP_SUMMARY" echo "Image pushed:" >> "$GITHUB_STEP_SUMMARY" echo "- ${IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" - echo "Package:" >> "$GITHUB_STEP_SUMMARY" + echo "- ${GHCR_IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" + echo "GHCR package:" >> "$GITHUB_STEP_SUMMARY" echo "- ${PACKAGE_URL}" >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 2926625..cb8556e 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -28,16 +28,28 @@ jobs: username: ${{ github.actor }} password: ${{ github.token }} + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USER }} + password: ${{ secrets.DOCKER_HUB_PAT }} + - name: Set image tag run: | SHORT_SHA=$(git rev-parse --short HEAD) - IMAGE_REPO="ghcr.io/kuberhealthy/ssh-check" + IMAGE_REPO="docker.io/kuberhealthy/ssh-check" IMAGE_TAG="${IMAGE_REPO}:${SHORT_SHA}" LATEST_IMAGE_TAG="${IMAGE_REPO}:latest" + GHCR_IMAGE_REPO="ghcr.io/kuberhealthy/ssh-check" + GHCR_IMAGE_TAG="${GHCR_IMAGE_REPO}:${SHORT_SHA}" + GHCR_LATEST_IMAGE_TAG="${GHCR_IMAGE_REPO}:latest" PACKAGE_URL="https://github.com/orgs/kuberhealthy/packages/container/package/ssh-check" echo "IMAGE_REPO=${IMAGE_REPO}" >> "$GITHUB_ENV" echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GITHUB_ENV" echo "LATEST_IMAGE_TAG=${LATEST_IMAGE_TAG}" >> "$GITHUB_ENV" + echo "GHCR_IMAGE_REPO=${GHCR_IMAGE_REPO}" >> "$GITHUB_ENV" + echo "GHCR_IMAGE_TAG=${GHCR_IMAGE_TAG}" >> "$GITHUB_ENV" + echo "GHCR_LATEST_IMAGE_TAG=${GHCR_LATEST_IMAGE_TAG}" >> "$GITHUB_ENV" echo "PACKAGE_URL=${PACKAGE_URL}" >> "$GITHUB_ENV" - name: Build and push @@ -50,11 +62,15 @@ jobs: tags: | ${{ env.IMAGE_TAG }} ${{ env.LATEST_IMAGE_TAG }} + ${{ env.GHCR_IMAGE_TAG }} + ${{ env.GHCR_LATEST_IMAGE_TAG }} - name: Publish summary run: | echo "Images pushed:" >> "$GITHUB_STEP_SUMMARY" echo "- ${IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" echo "- ${LATEST_IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" - echo "Package:" >> "$GITHUB_STEP_SUMMARY" + echo "- ${GHCR_IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" + echo "- ${GHCR_LATEST_IMAGE_TAG}" >> "$GITHUB_STEP_SUMMARY" + echo "GHCR package:" >> "$GITHUB_STEP_SUMMARY" echo "- ${PACKAGE_URL}" >> "$GITHUB_STEP_SUMMARY" diff --git a/README.md b/README.md index d570c8a..a5aae3b 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,9 @@ Check ssh connectivity to nodes within a cluster This repository builds the container image used by Kuberhealthy to run the ssh-check check. ## Image +- `docker.io/kuberhealthy/ssh-check` - `ghcr.io/kuberhealthy/ssh-check` -- Tags: short git SHA for `main` pushes and `vX.Y.Z` for releases. +- Tags: `latest` and short git SHA for `main` pushes; `vX.Y.Z` for releases. ## Quick start - Apply the example manifest: `kubectl apply -f healthcheck.yaml` diff --git a/RELEASE.md b/RELEASE.md index 838b692..55a6179 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -11,9 +11,10 @@ git push origin v1.2.3 The `Publish tag` GitHub Actions workflow runs on `v*` tags and validates the tag format before publishing. Use `vMAJOR.MINOR.PATCH`, such as `v1.2.3`, or a prerelease tag like `v1.2.3-rc.1`. -The workflow publishes this multi-arch image to GitHub Container Registry: +The workflow publishes these multi-arch images: ```text +docker.io/kuberhealthy/ssh-check: ghcr.io/kuberhealthy/ssh-check: ``` @@ -22,7 +23,7 @@ The image manifest includes: - `linux/amd64` - `linux/arm64` -After the image is pushed, the workflow updates the example healthcheck YAML on `main` to use the released GHCR image tag. +After the image is pushed, the workflow updates the example healthcheck YAML on `main` to use the released Docker Hub image tag. The workflow then creates or updates a GitHub release with the same semver as the tag. The release notes link to the GitHub package, and the release includes a `release-images.txt` asset listing the image and supported platforms.