From 07b36d6b751d14fca483d418a2b76263291a6637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20S=C3=A9hier?= Date: Mon, 13 Oct 2025 22:51:54 +0200 Subject: [PATCH 1/4] feat(gh-actions): allow to build image with different projectname (github username) --- .github/workflows/build_container.yml | 64 +++++++++++++-------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build_container.yml b/.github/workflows/build_container.yml index 5a46a19..bb3f5f4 100644 --- a/.github/workflows/build_container.yml +++ b/.github/workflows/build_container.yml @@ -61,7 +61,7 @@ jobs: build_context: openvoxserver buildfile: openvoxserver/Containerfile tags: | - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }} + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }} - name: Build Alpine OpenVox Server ${{ matrix.release }} container uses: voxpupuli/gha-build-and-publish-a-container@v2 @@ -78,7 +78,7 @@ jobs: build_context: openvoxserver buildfile: openvoxserver/Containerfile.alpine tags: | - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }}-alpine + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }}-alpine create-multi-arch-manifests: runs-on: ubuntu-latest @@ -113,58 +113,58 @@ jobs: - name: Create multi arch manifests run: | - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }} \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }} \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:latest \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:latest \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 # on docker.io we use the voxpupuli namespace because new organizations are not free anymore # docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ matrix.release }} \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:latest \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-arm64 \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-amd64 + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 - name: Create Alpine multi arch manifests run: | - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-alpine-beta \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine - docker buildx imagetools create -t ghcr.io/openvoxproject/openvoxserver:latest-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:latest-alpine-beta \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64-alpine # on docker.io we use the voxpupuli namespace because new organizations are not free anymore docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ matrix.release }}-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:latest-alpine-beta \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-arm64-alpine \ - ghcr.io/openvoxproject/openvoxserver:8-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64-alpine update-dockerhub-description: runs-on: ubuntu-latest From d44285fc88a0e5366ad8671f18256fadf03adf4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20S=C3=A9hier?= Date: Mon, 13 Oct 2025 22:51:54 +0200 Subject: [PATCH 2/4] feat(gh-actions): skip docker.io/voxpupuli login and manifests on forks --- .github/workflows/build_container.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_container.yml b/.github/workflows/build_container.yml index bb3f5f4..7c6a74d 100644 --- a/.github/workflows/build_container.yml +++ b/.github/workflows/build_container.yml @@ -99,6 +99,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Log in to the docker.io registry + if: github.actor == 'OpenVoxProject' uses: docker/login-action@v3 with: registry: docker.io @@ -111,7 +112,7 @@ jobs: - id: db_version run: echo "db_version=${{ matrix.db_version }}" | cut -d- -f1 >> $GITHUB_OUTPUT - - name: Create multi arch manifests + - name: Create Ubuntu multi arch manifests (GHCR) run: | docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ @@ -125,8 +126,10 @@ jobs: ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 + - name: Create Ubuntu multi arch manifests (DockerHub) + if: github.actor == 'OpenVoxProject' + run: | # on docker.io we use the voxpupuli namespace because new organizations are not free anymore - # docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 @@ -139,7 +142,7 @@ jobs: ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 - - name: Create Alpine multi arch manifests + - name: Create Alpine multi arch manifests (GHCR) run: | docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ @@ -153,6 +156,9 @@ jobs: ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64-alpine \ ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64-alpine + - name: Create Alpine multi arch manifests (DockerHub) + if: github.actor == 'OpenVoxProject' + run: | # on docker.io we use the voxpupuli namespace because new organizations are not free anymore docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ From 883d84fe54579db49fe1aafb9b743f36f9603f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20S=C3=A9hier?= Date: Tue, 14 Oct 2025 14:58:49 +0200 Subject: [PATCH 3/4] fix: use github.repository to build/push images --- .github/workflows/build_container.yml | 64 +++++++++++++-------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build_container.yml b/.github/workflows/build_container.yml index 7c6a74d..5491acd 100644 --- a/.github/workflows/build_container.yml +++ b/.github/workflows/build_container.yml @@ -61,7 +61,7 @@ jobs: build_context: openvoxserver buildfile: openvoxserver/Containerfile tags: | - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }} + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }} - name: Build Alpine OpenVox Server ${{ matrix.release }} container uses: voxpupuli/gha-build-and-publish-a-container@v2 @@ -78,7 +78,7 @@ jobs: build_context: openvoxserver buildfile: openvoxserver/Containerfile.alpine tags: | - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }}-alpine + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-${{ matrix.platform }}-alpine create-multi-arch-manifests: runs-on: ubuntu-latest @@ -114,63 +114,63 @@ jobs: - name: Create Ubuntu multi arch manifests (GHCR) run: | - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64 - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }} \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:${{ matrix.release }} \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64 - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:latest \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:latest \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-amd64 - name: Create Ubuntu multi arch manifests (DockerHub) if: github.actor == 'OpenVoxProject' run: | # on docker.io we use the voxpupuli namespace because new organizations are not free anymore docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }} \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64 docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ matrix.release }} \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64 + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64 docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:latest \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64 \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64 + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-arm64 \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-amd64 - name: Create Alpine multi arch manifests (GHCR) run: | - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64-alpine - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:${{ matrix.release }}-alpine-beta \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64-alpine - docker buildx imagetools create -t ghcr.io/${{ github.actor }}/openvoxserver:latest-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64-alpine + docker buildx imagetools create -t ghcr.io/${{ github.repository }}:latest-alpine-beta \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-amd64-alpine - name: Create Alpine multi arch manifests (DockerHub) if: github.actor == 'OpenVoxProject' run: | # on docker.io we use the voxpupuli namespace because new organizations are not free anymore docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ steps.server_version.outputs.server_version }}-${{ github.ref_name }}-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64-alpine docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:${{ matrix.release }}-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:${{ matrix.release }}-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:${{ matrix.release }}-${{ github.sha }}-amd64-alpine docker buildx imagetools create -t docker.io/voxpupuli/openvoxserver:latest-alpine-beta \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-arm64-alpine \ - ghcr.io/${{ github.actor }}/openvoxserver:8-${{ github.sha }}-amd64-alpine + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-arm64-alpine \ + ghcr.io/${{ github.repository }}:8-${{ github.sha }}-amd64-alpine update-dockerhub-description: runs-on: ubuntu-latest From f4d68880b38ee02591d039920c7d0b6144f8354c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20S=C3=A9hier?= Date: Tue, 14 Oct 2025 15:19:45 +0200 Subject: [PATCH 4/4] fix: do not update docker hub description on forks --- .github/workflows/build_container.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_container.yml b/.github/workflows/build_container.yml index 5491acd..56bd769 100644 --- a/.github/workflows/build_container.yml +++ b/.github/workflows/build_container.yml @@ -183,6 +183,7 @@ jobs: uses: actions/checkout@v5 - name: Update Docker Hub Description + if: github.actor == 'OpenVoxProject' uses: peter-evans/dockerhub-description@v5 with: username: voxpupulibot