From df362927dda9a0efd3a8d7b23ab83879e737d7e2 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 18 Feb 2026 09:18:32 +0200 Subject: [PATCH 1/5] add ghcr --- .github/workflows/docker.yml | 61 ++++++++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 941c28408..8b0292dc0 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -18,19 +18,19 @@ jobs: strategy: fail-fast: false matrix: - platform: ${{ github.event_name == 'pull_request' && fromJSON('["linux/amd64"]') || fromJSON('["linux/amd64","linux/arm64","linux/arm/v7"]') }} + platform: ${{ github.event_name == 'pull_request' && fromJSON('["linux/amd64"]') || fromJSON('["linux/amd64","linux/arm64"]') }} steps: - name: Prepare run: | platform=${{ matrix.platform }} echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v6 - name: Set up QEMU uses: docker/setup-qemu-action@v3 with: platforms: ${{ matrix.platform }} - image: tonistiigi/binfmt:qemu-v8.0.4 + #image: tonistiigi/binfmt:qemu-v8.0.4 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3 @@ -41,13 +41,19 @@ jobs: with: username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} password: ${{ secrets.DOCKER_PUSH_TOKEN }} - + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_PUSH_TOKEN }} - name: Set Docker metadata id: ocean_node_meta uses: docker/metadata-action@v5 with: images: | oceanprotocol/ocean-node + ghcr.io/oceanprotocol/ocean-node # generate Docker tags based on the following events/attributes tags: | type=ref,event=branch @@ -56,8 +62,8 @@ jobs: # type=semver,pattern={{major}}.{{minor}} # type=semver,pattern={{major}} # type=sha - - name: Build and push - id: build + - name: Build and push to Docker Hub + id: build_dockerhub uses: docker/build-push-action@v5 with: builder: ${{ steps.buildx.outputs.name }} @@ -67,11 +73,23 @@ jobs: # tags: ${{ steps.ocean_node_meta.outputs.tags }} labels: ${{ steps.ocean_node_meta.outputs.labels }} outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true - - name: Export digest + - name: Build and push to GHCR + id: build_ghcr + uses: docker/build-push-action@v5 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + platforms: ${{ matrix.platform }} + push: true + labels: ${{ steps.ocean_node_meta.outputs.labels }} + outputs: type=image,name=ghcr.io/oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + - name: Export digests run: | mkdir -p /tmp/digests - digest="${{ steps.build.outputs.digest }}" - touch "/tmp/digests/${digest#sha256:}" + dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" + ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" + touch "/tmp/digests/dockerhub-${dockerhub_digest#sha256:}" + touch "/tmp/digests/ghcr-${ghcr_digest#sha256:}" - name: Upload digest uses: actions/upload-artifact@v4 with: @@ -100,6 +118,7 @@ jobs: with: images: | oceanprotocol/ocean-node + ghcr.io/oceanprotocol/ocean-node # generate Docker tags based on the following events/attributes tags: | type=ref,event=branch @@ -113,11 +132,27 @@ jobs: with: username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} password: ${{ secrets.DOCKER_PUSH_TOKEN }} - - name: Create manifest list and push + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_PUSH_TOKEN }} + - name: Create manifest list and push to Docker Hub working-directory: /tmp/digests run: | - docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ - $(printf 'oceanprotocol/ocean-node@sha256:%s ' *) - - name: Inspect image + TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') + DIGESTS=$(ls dockerhub-* | sed 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + docker buildx imagetools create $TAGS $DIGESTS + - name: Create manifest list and push to GHCR + working-directory: /tmp/digests + run: | + TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^ghcr.io/oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') + DIGESTS=$(ls ghcr-* | sed 's/ghcr-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + docker buildx imagetools create $TAGS $DIGESTS + - name: Inspect Docker Hub image run: | docker buildx imagetools inspect oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} + - name: Inspect GHCR image + run: | + docker buildx imagetools inspect ghcr.io/oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} From 3683eaaa0afc8626b2d508d05db95c7d7087c144 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 18 Feb 2026 10:26:00 +0200 Subject: [PATCH 2/5] try arm runners --- .github/workflows/docker.yml | 91 +++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 8b0292dc0..10eec8783 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -18,7 +18,8 @@ jobs: strategy: fail-fast: false matrix: - platform: ${{ github.event_name == 'pull_request' && fromJSON('["linux/amd64"]') || fromJSON('["linux/amd64","linux/arm64"]') }} + # we keep this just in case we need to change + platform: ${{ github.event_name == 'pull_request' && fromJSON('["linux/amd64"]') || fromJSON('["linux/amd64"]') }} steps: - name: Prepare run: | @@ -98,11 +99,99 @@ jobs: if-no-files-found: error retention-days: 1 + build-arm: + runs-on: ubuntu-24.04-arm + if: ${{ github.actor != 'dependabot[bot]' }} + strategy: + fail-fast: false + matrix: + # we keep this just in case we need to change + platform: ${{ github.event_name == 'pull_request' && fromJSON('["linux/arm64"]') || fromJSON('["linux/arm64"]') }} + steps: + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + - name: Checkout + uses: actions/checkout@v6 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: ${{ matrix.platform }} + #image: tonistiigi/binfmt:qemu-v8.0.4 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + with: + platforms: ${{ matrix.platform }} + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} + password: ${{ secrets.DOCKER_PUSH_TOKEN }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_PUSH_TOKEN }} + - name: Set Docker metadata + id: ocean_node_meta + uses: docker/metadata-action@v5 + with: + images: | + oceanprotocol/ocean-node + ghcr.io/oceanprotocol/ocean-node + # generate Docker tags based on the following events/attributes + tags: | + type=ref,event=branch + type=semver,pattern={{version}} + type=ref,event=pr + # type=semver,pattern={{major}}.{{minor}} + # type=semver,pattern={{major}} + # type=sha + - name: Build and push to Docker Hub + id: build_dockerhub + uses: docker/build-push-action@v5 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + platforms: ${{ matrix.platform }} + push: true + # tags: ${{ steps.ocean_node_meta.outputs.tags }} + labels: ${{ steps.ocean_node_meta.outputs.labels }} + outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + - name: Build and push to GHCR + id: build_ghcr + uses: docker/build-push-action@v5 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + platforms: ${{ matrix.platform }} + push: true + labels: ${{ steps.ocean_node_meta.outputs.labels }} + outputs: type=image,name=ghcr.io/oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + - name: Export digests + run: | + mkdir -p /tmp/digests + dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" + ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" + touch "/tmp/digests/dockerhub-arm64-${dockerhub_digest#sha256:}" + touch "/tmp/digests/ghcr-arm64-${ghcr_digest#sha256:}" + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + merge: runs-on: ubuntu-latest if: ${{ github.actor != 'dependabot[bot]' }} needs: - build + - build-arm steps: - name: Download digests uses: actions/download-artifact@v4 From 91cf5d0a0aba929a5408b79e156586caaf58f4af Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 18 Feb 2026 10:37:07 +0200 Subject: [PATCH 3/5] fix on arm --- .github/workflows/docker.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 10eec8783..b1fafb09d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -231,13 +231,15 @@ jobs: working-directory: /tmp/digests run: | TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') - DIGESTS=$(ls dockerhub-* | sed 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + # Strip dockerhub-arm64- and dockerhub- so digest is always just the sha256 hex + DIGESTS=$(ls dockerhub-* | sed -e 's/dockerhub-arm64-/oceanprotocol\/ocean-node@sha256:/' -e 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') docker buildx imagetools create $TAGS $DIGESTS - name: Create manifest list and push to GHCR working-directory: /tmp/digests run: | TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^ghcr.io/oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') - DIGESTS=$(ls ghcr-* | sed 's/ghcr-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + # Strip ghcr-arm64- and ghcr- so digest is always just the sha256 hex + DIGESTS=$(ls ghcr-* | sed -e 's/ghcr-arm64-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' -e 's/ghcr-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') docker buildx imagetools create $TAGS $DIGESTS - name: Inspect Docker Hub image run: | From bfb0e240d55fb754e2cb85b7b1e09bb323089f01 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 18 Feb 2026 11:43:09 +0200 Subject: [PATCH 4/5] make it registry dependable --- .github/workflows/docker.yml | 69 +++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b1fafb09d..98ecb0982 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -38,11 +38,20 @@ jobs: with: platforms: ${{ matrix.platform }} - name: Login to Docker Hub + id: dockerhub_login + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKER_PUSH_TOKEN }} + if: env.DOCKERHUB_USERNAME != '' && env.DOCKERHUB_TOKEN != '' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} password: ${{ secrets.DOCKER_PUSH_TOKEN }} - name: Login to GitHub Container Registry + id: ghcr_login + env: + GHCR_PUSH_TOKEN: ${{ secrets.GHCR_PUSH_TOKEN }} + if: env.GHCR_PUSH_TOKEN != '' uses: docker/login-action@v3 with: registry: ghcr.io @@ -64,6 +73,7 @@ jobs: # type=semver,pattern={{major}} # type=sha - name: Build and push to Docker Hub + if: steps.dockerhub_login.outcome == 'success' id: build_dockerhub uses: docker/build-push-action@v5 with: @@ -75,6 +85,7 @@ jobs: labels: ${{ steps.ocean_node_meta.outputs.labels }} outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true - name: Build and push to GHCR + if: steps.ghcr_login.outcome == 'success' id: build_ghcr uses: docker/build-push-action@v5 with: @@ -87,10 +98,14 @@ jobs: - name: Export digests run: | mkdir -p /tmp/digests - dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" - ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" - touch "/tmp/digests/dockerhub-${dockerhub_digest#sha256:}" - touch "/tmp/digests/ghcr-${ghcr_digest#sha256:}" + if [ -n "${{ steps.build_dockerhub.outputs.digest }}" ]; then + dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" + touch "/tmp/digests/dockerhub-${dockerhub_digest#sha256:}" + fi + if [ -n "${{ steps.build_ghcr.outputs.digest }}" ]; then + ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" + touch "/tmp/digests/ghcr-${ghcr_digest#sha256:}" + fi - name: Upload digest uses: actions/upload-artifact@v4 with: @@ -125,11 +140,20 @@ jobs: with: platforms: ${{ matrix.platform }} - name: Login to Docker Hub + id: dockerhub_login + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKER_PUSH_TOKEN }} + if: env.DOCKERHUB_USERNAME != '' && env.DOCKERHUB_TOKEN != '' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} password: ${{ secrets.DOCKER_PUSH_TOKEN }} - name: Login to GitHub Container Registry + id: ghcr_login + env: + GHCR_PUSH_TOKEN: ${{ secrets.GHCR_PUSH_TOKEN }} + if: env.GHCR_PUSH_TOKEN != '' uses: docker/login-action@v3 with: registry: ghcr.io @@ -151,6 +175,7 @@ jobs: # type=semver,pattern={{major}} # type=sha - name: Build and push to Docker Hub + if: steps.dockerhub_login.outcome == 'success' id: build_dockerhub uses: docker/build-push-action@v5 with: @@ -162,6 +187,7 @@ jobs: labels: ${{ steps.ocean_node_meta.outputs.labels }} outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true - name: Build and push to GHCR + if: steps.ghcr_login.outcome == 'success' id: build_ghcr uses: docker/build-push-action@v5 with: @@ -174,10 +200,14 @@ jobs: - name: Export digests run: | mkdir -p /tmp/digests - dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" - ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" - touch "/tmp/digests/dockerhub-arm64-${dockerhub_digest#sha256:}" - touch "/tmp/digests/ghcr-arm64-${ghcr_digest#sha256:}" + if [ -n "${{ steps.build_dockerhub.outputs.digest }}" ]; then + dockerhub_digest="${{ steps.build_dockerhub.outputs.digest }}" + touch "/tmp/digests/dockerhub-arm64-${dockerhub_digest#sha256:}" + fi + if [ -n "${{ steps.build_ghcr.outputs.digest }}" ]; then + ghcr_digest="${{ steps.build_ghcr.outputs.digest }}" + touch "/tmp/digests/ghcr-arm64-${ghcr_digest#sha256:}" + fi - name: Upload digest uses: actions/upload-artifact@v4 with: @@ -217,24 +247,37 @@ jobs: # type=semver,pattern={{major}} # type=sha - name: Login to Docker Hub + id: dockerhub_login + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKER_PUSH_TOKEN }} + if: env.DOCKERHUB_USERNAME != '' && env.DOCKERHUB_TOKEN != '' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_PUSH_USERNAME }} password: ${{ secrets.DOCKER_PUSH_TOKEN }} - name: Login to GitHub Container Registry + id: ghcr_login + env: + GHCR_PUSH_TOKEN: ${{ secrets.GHCR_PUSH_TOKEN }} + if: env.GHCR_PUSH_TOKEN != '' uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_PUSH_TOKEN }} - name: Create manifest list and push to Docker Hub + if: steps.dockerhub_login.outcome == 'success' working-directory: /tmp/digests run: | - TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') - # Strip dockerhub-arm64- and dockerhub- so digest is always just the sha256 hex - DIGESTS=$(ls dockerhub-* | sed -e 's/dockerhub-arm64-/oceanprotocol\/ocean-node@sha256:/' -e 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') - docker buildx imagetools create $TAGS $DIGESTS + if ls dockerhub-* 1> /dev/null 2>&1; then + TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') + # Strip dockerhub-arm64- and dockerhub- so digest is always just the sha256 hex + DIGESTS=$(ls dockerhub-* | sed -e 's/dockerhub-arm64-/oceanprotocol\/ocean-node@sha256:/' -e 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + docker buildx imagetools create $TAGS $DIGESTS + fi - name: Create manifest list and push to GHCR + if: steps.ghcr_login.outcome == 'success' working-directory: /tmp/digests run: | TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^ghcr.io/oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') @@ -242,8 +285,10 @@ jobs: DIGESTS=$(ls ghcr-* | sed -e 's/ghcr-arm64-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' -e 's/ghcr-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') docker buildx imagetools create $TAGS $DIGESTS - name: Inspect Docker Hub image + if: steps.dockerhub_login.outcome == 'success' run: | docker buildx imagetools inspect oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} - name: Inspect GHCR image + if: steps.ghcr_login.outcome == 'success' run: | docker buildx imagetools inspect ghcr.io/oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} From cbd0533bc22c468b92a9e57b0840f0f49eb0a287 Mon Sep 17 00:00:00 2001 From: alexcos20 Date: Wed, 18 Feb 2026 11:48:59 +0200 Subject: [PATCH 5/5] make image name variable --- .github/workflows/docker.yml | 40 +++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 98ecb0982..d3a77f294 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,6 +11,10 @@ on: branches: - 'main' +env: + DOCKERHUB_IMAGE: ${{ 'oceanprotocol/ocean-node' }} + GHCR_IMAGE: ${{ 'ghcr.io/oceanprotocol/ocean-node' }} + jobs: build: runs-on: ubuntu-latest @@ -62,8 +66,8 @@ jobs: uses: docker/metadata-action@v5 with: images: | - oceanprotocol/ocean-node - ghcr.io/oceanprotocol/ocean-node + ${{ env.DOCKERHUB_IMAGE }} + ${{ env.GHCR_IMAGE }} # generate Docker tags based on the following events/attributes tags: | type=ref,event=branch @@ -83,7 +87,7 @@ jobs: push: true # tags: ${{ steps.ocean_node_meta.outputs.tags }} labels: ${{ steps.ocean_node_meta.outputs.labels }} - outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + outputs: type=image,name=${{ env.DOCKERHUB_IMAGE }},push-by-digest=true,name-canonical=true,push=true - name: Build and push to GHCR if: steps.ghcr_login.outcome == 'success' id: build_ghcr @@ -94,7 +98,7 @@ jobs: platforms: ${{ matrix.platform }} push: true labels: ${{ steps.ocean_node_meta.outputs.labels }} - outputs: type=image,name=ghcr.io/oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + outputs: type=image,name=${{ env.GHCR_IMAGE }},push-by-digest=true,name-canonical=true,push=true - name: Export digests run: | mkdir -p /tmp/digests @@ -164,8 +168,8 @@ jobs: uses: docker/metadata-action@v5 with: images: | - oceanprotocol/ocean-node - ghcr.io/oceanprotocol/ocean-node + ${{ env.DOCKERHUB_IMAGE }} + ${{ env.GHCR_IMAGE }} # generate Docker tags based on the following events/attributes tags: | type=ref,event=branch @@ -185,7 +189,7 @@ jobs: push: true # tags: ${{ steps.ocean_node_meta.outputs.tags }} labels: ${{ steps.ocean_node_meta.outputs.labels }} - outputs: type=image,name=oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + outputs: type=image,name=${{ env.DOCKERHUB_IMAGE }},push-by-digest=true,name-canonical=true,push=true - name: Build and push to GHCR if: steps.ghcr_login.outcome == 'success' id: build_ghcr @@ -196,7 +200,7 @@ jobs: platforms: ${{ matrix.platform }} push: true labels: ${{ steps.ocean_node_meta.outputs.labels }} - outputs: type=image,name=ghcr.io/oceanprotocol/ocean-node,push-by-digest=true,name-canonical=true,push=true + outputs: type=image,name=${{ env.GHCR_IMAGE }},push-by-digest=true,name-canonical=true,push=true - name: Export digests run: | mkdir -p /tmp/digests @@ -236,8 +240,8 @@ jobs: uses: docker/metadata-action@v5 with: images: | - oceanprotocol/ocean-node - ghcr.io/oceanprotocol/ocean-node + ${{ env.DOCKERHUB_IMAGE }} + ${{ env.GHCR_IMAGE }} # generate Docker tags based on the following events/attributes tags: | type=ref,event=branch @@ -269,26 +273,30 @@ jobs: - name: Create manifest list and push to Docker Hub if: steps.dockerhub_login.outcome == 'success' working-directory: /tmp/digests + env: + DOCKERHUB_IMAGE: ${{ env.DOCKERHUB_IMAGE }} run: | if ls dockerhub-* 1> /dev/null 2>&1; then - TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') + TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E "^${DOCKERHUB_IMAGE}" | sed 's|^|-t |' | tr '\n' ' ') # Strip dockerhub-arm64- and dockerhub- so digest is always just the sha256 hex - DIGESTS=$(ls dockerhub-* | sed -e 's/dockerhub-arm64-/oceanprotocol\/ocean-node@sha256:/' -e 's/dockerhub-/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + DIGESTS=$(ls dockerhub-* | sed -e "s|dockerhub-arm64-|${DOCKERHUB_IMAGE}@sha256:|" -e "s|dockerhub-|${DOCKERHUB_IMAGE}@sha256:|" | tr '\n' ' ') docker buildx imagetools create $TAGS $DIGESTS fi - name: Create manifest list and push to GHCR if: steps.ghcr_login.outcome == 'success' working-directory: /tmp/digests + env: + GHCR_IMAGE: ${{ env.GHCR_IMAGE }} run: | - TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E '^ghcr.io/oceanprotocol/ocean-node' | sed 's/^/-t /' | tr '\n' ' ') + TAGS=$(echo "${{ steps.ocean_node_meta.outputs.tags }}" | grep -E "^${GHCR_IMAGE}" | sed 's|^|-t |' | tr '\n' ' ') # Strip ghcr-arm64- and ghcr- so digest is always just the sha256 hex - DIGESTS=$(ls ghcr-* | sed -e 's/ghcr-arm64-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' -e 's/ghcr-/ghcr.io\/oceanprotocol\/ocean-node@sha256:/' | tr '\n' ' ') + DIGESTS=$(ls ghcr-* | sed -e "s|ghcr-arm64-|${GHCR_IMAGE}@sha256:|" -e "s|ghcr-|${GHCR_IMAGE}@sha256:|" | tr '\n' ' ') docker buildx imagetools create $TAGS $DIGESTS - name: Inspect Docker Hub image if: steps.dockerhub_login.outcome == 'success' run: | - docker buildx imagetools inspect oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} + docker buildx imagetools inspect ${{ env.DOCKERHUB_IMAGE }}:${{ steps.ocean_node_meta.outputs.version }} - name: Inspect GHCR image if: steps.ghcr_login.outcome == 'success' run: | - docker buildx imagetools inspect ghcr.io/oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} + docker buildx imagetools inspect ${{ env.GHCR_IMAGE }}:${{ steps.ocean_node_meta.outputs.version }}