From 204c4322b0412c30c416ed55869d1b04965859e8 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Thu, 7 Nov 2024 10:40:30 +0100 Subject: [PATCH 1/3] HDDS-11634. Publish images to Docker Hub from GitHub workflow --- .github/workflows/build-and-tag.yaml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-tag.yaml b/.github/workflows/build-and-tag.yaml index 199cc0b..c64caf5 100644 --- a/.github/workflows/build-and-tag.yaml +++ b/.github/workflows/build-and-tag.yaml @@ -33,18 +33,25 @@ jobs: if: ${{ github.ref_type == 'tag' }} runs-on: ubuntu-latest env: + DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }} IMAGE_ID: ${{ needs.build.outputs.image-id }} + REGISTRIES: ghcr.io # docker.io is appended dynamically steps: - name: Generate tags uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 with: images: | - ghcr.io/${{ github.repository_owner }}/ozone-runner + ${{ github.repository_owner }}/ozone-runner tags: | type=ref,event=tag flavor: | latest=false + - name: Add Docker Hub to targets + if: ${{ env.DOCKERHUB_USER }} + run: | + echo "REGISTRIES=${{ env.REGISTRIES}} docker.io" >> $GITHUB_ENV + - name: Pull image run: | docker pull "$IMAGE_ID" @@ -56,9 +63,18 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to Docker Hub + if: ${{ env.DOCKERHUB_USER }} + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 + with: + username: ${{ env.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Apply tags to existing image run: | - for tag in $DOCKER_METADATA_OUTPUT_TAGS; do - docker tag "$IMAGE_ID" "$tag" - docker push "$tag" + for registry in $REGISTRIES; do + for tag in $DOCKER_METADATA_OUTPUT_TAGS; do + docker tag "$IMAGE_ID" "$registry/$tag" + docker push "$registry/$tag" + done done From 8d083784c59cd1662d642c6b0dc0c395714600c0 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Thu, 7 Nov 2024 12:03:17 +0100 Subject: [PATCH 2/3] use buildx imagetools create to tag/push image --- .github/workflows/build-and-tag.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-tag.yaml b/.github/workflows/build-and-tag.yaml index c64caf5..6767d12 100644 --- a/.github/workflows/build-and-tag.yaml +++ b/.github/workflows/build-and-tag.yaml @@ -72,9 +72,10 @@ jobs: - name: Apply tags to existing image run: | + set -x for registry in $REGISTRIES; do - for tag in $DOCKER_METADATA_OUTPUT_TAGS; do - docker tag "$IMAGE_ID" "$registry/$tag" - docker push "$registry/$tag" - done + opts="$(echo "$DOCKER_METADATA_OUTPUT_TAGS" | sed "s@^@--tag $registry/@g" | xargs echo)" + if [[ -n "$opts" ]]; then + docker buildx imagetools create $opts "$IMAGE_ID" + fi done From dbf978fd529a1b77243321d3853f0880a14be07f Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" <6454655+adoroszlai@users.noreply.github.com> Date: Fri, 8 Nov 2024 05:58:18 +0100 Subject: [PATCH 3/3] Fix whitespace Co-authored-by: Siyao Meng <50227127+smengcl@users.noreply.github.com> --- .github/workflows/build-and-tag.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-tag.yaml b/.github/workflows/build-and-tag.yaml index 6767d12..8544a6c 100644 --- a/.github/workflows/build-and-tag.yaml +++ b/.github/workflows/build-and-tag.yaml @@ -50,7 +50,7 @@ jobs: - name: Add Docker Hub to targets if: ${{ env.DOCKERHUB_USER }} run: | - echo "REGISTRIES=${{ env.REGISTRIES}} docker.io" >> $GITHUB_ENV + echo "REGISTRIES=${{ env.REGISTRIES }} docker.io" >> $GITHUB_ENV - name: Pull image run: |