From 174e8ec259f85c5a0de88f7802ea9d7458077446 Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 12:14:22 -0500 Subject: [PATCH 1/8] server container release --- .github/workflows/pgxn-release.yml | 5 +- .github/workflows/server_release.yml | 104 +++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/server_release.yml diff --git a/.github/workflows/pgxn-release.yml b/.github/workflows/pgxn-release.yml index 5af8fe6..e466e01 100644 --- a/.github/workflows/pgxn-release.yml +++ b/.github/workflows/pgxn-release.yml @@ -1,8 +1,9 @@ name: 🚀 Release on PGXN on: push: - # Release on semantic version tag. - tags: ['v[0-9]+.[0-9]+.[0-9]+'] + # Release only when the pushed tag is a semantic extension release like + # `extension-v1.2.3`. Keep the numeric pattern in the event trigger. + tags: ['extension-v[0-9]+.[0-9]+.[0-9]+'] jobs: release: name: Release on PGXN diff --git a/.github/workflows/server_release.yml b/.github/workflows/server_release.yml new file mode 100644 index 0000000..f0527d4 --- /dev/null +++ b/.github/workflows/server_release.yml @@ -0,0 +1,104 @@ +name: Vectorize Server Release (tag) + +on: + push: + tags: ['v[0-9]+.[0-9]+.[0-9]+'] + +jobs: + build_and_push_amd64: + name: Build and push AMD64 images (tag) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Extract tag + id: tag + run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + + - name: Set version strings + id: versions + run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push -- Tag + run: | + docker build \ + -f ./server/Dockerfile \ + -t ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 . + docker push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + + build_and_push_arm64: + name: Build and push ARM64 images (tag) + runs-on: ubicloud-standard-2-arm-ubuntu-2204 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Extract tag + id: tag + run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + + - name: Set version strings + id: versions + run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push -- Tag + run: | + docker build \ + -f ./server/Dockerfile \ + --platform linux/arm64 \ + -t ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 . + docker push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 + + create_manifest: + name: Create and Push Manifest (tag) + runs-on: ubuntu-latest + needs: [build_and_push_arm64, build_and_push_amd64] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Login to GHCR + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Extract tag + id: tag + run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + + - name: Create and push Docker manifest -- Tag + run: | + docker manifest create \ + ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} \ + ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 \ + ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + + docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 --arch arm64 --os linux + docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 --arch amd64 --os linux + docker manifest push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} From 15f687527c9e285e470a952f5e9ffdfcad9f5bf0 Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 12:22:34 -0500 Subject: [PATCH 2/8] filter --- .github/workflows/extension_ci.yml | 4 ++-- .github/workflows/pg-image-build.yml | 4 +--- .github/workflows/server_ci.yml | 8 ++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/extension_ci.yml b/.github/workflows/extension_ci.yml index f924549..966f0a6 100644 --- a/.github/workflows/extension_ci.yml +++ b/.github/workflows/extension_ci.yml @@ -12,14 +12,14 @@ on: paths-ignore: - "README.md" - docs/** - - ".github/workflows/server_ci.yml" + - ".github/workflows/extension_ci.yml" push: branches: - main paths-ignore: - "README.md" - docs/** - - ".github/workflows/server_ci.yml" + - ".github/workflows/extension_ci.yml" release: types: - created diff --git a/.github/workflows/pg-image-build.yml b/.github/workflows/pg-image-build.yml index 9668f34..75021f3 100644 --- a/.github/workflows/pg-image-build.yml +++ b/.github/workflows/pg-image-build.yml @@ -19,9 +19,7 @@ on: - "extension/**" - "images/vectorize-pg/**" - ".github/workflows/pg-image-build.yml" - release: - types: - - created + tags: ['extension-v[0-9]+.[0-9]+.[0-9]+'] jobs: build_and_push_amd64: name: Build and push AMD64 images diff --git a/.github/workflows/server_ci.yml b/.github/workflows/server_ci.yml index 5557d29..a89a83f 100644 --- a/.github/workflows/server_ci.yml +++ b/.github/workflows/server_ci.yml @@ -4,9 +4,17 @@ on: pull_request: branches: - main + paths: + - "server/**" + - "core/**" + - ".github/workflows/server_ci.yml" push: branches: - main + paths: + - "server/**" + - "core/**" + - ".github/workflows/server_ci.yml" jobs: lint: From 9a79fe24585ead32f3328724aea64ec2c559c121 Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 12:42:55 -0500 Subject: [PATCH 3/8] fix paths and ignores --- .github/workflows/extension_ci.yml | 10 ++++------ .github/workflows/server_ci.yml | 2 ++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/extension_ci.yml b/.github/workflows/extension_ci.yml index 966f0a6..79df542 100644 --- a/.github/workflows/extension_ci.yml +++ b/.github/workflows/extension_ci.yml @@ -9,17 +9,15 @@ on: pull_request: branches: - main - paths-ignore: - - "README.md" - - docs/** + paths: - ".github/workflows/extension_ci.yml" + - "extension/**" push: branches: - main - paths-ignore: - - "README.md" - - docs/** + paths: - ".github/workflows/extension_ci.yml" + - "extension/**" release: types: - created diff --git a/.github/workflows/server_ci.yml b/.github/workflows/server_ci.yml index a89a83f..a8dea98 100644 --- a/.github/workflows/server_ci.yml +++ b/.github/workflows/server_ci.yml @@ -6,6 +6,7 @@ on: - main paths: - "server/**" + - "worker/**" - "core/**" - ".github/workflows/server_ci.yml" push: @@ -13,6 +14,7 @@ on: - main paths: - "server/**" + - "worker/**" - "core/**" - ".github/workflows/server_ci.yml" From 56cf419fae6f74575343d65fe71fabbfe68a2f6b Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 13:12:18 -0500 Subject: [PATCH 4/8] add cache and update versions --- .github/workflows/server_release.yml | 50 ++++++++++++++-------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/server_release.yml b/.github/workflows/server_release.yml index f0527d4..b864938 100644 --- a/.github/workflows/server_release.yml +++ b/.github/workflows/server_release.yml @@ -16,26 +16,28 @@ jobs: id: tag run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Set version strings - id: versions - run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push -- Tag - run: | - docker build \ - -f ./server/Dockerfile \ - -t ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 . - docker push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + uses: docker/build-push-action@v6 + with: + context: . + file: ./server/Dockerfile + platforms: linux/amd64 + push: true + tags: ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: true + sbom: true build_and_push_arm64: name: Build and push ARM64 images (tag) @@ -48,27 +50,28 @@ jobs: id: tag run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Set version strings - id: versions - run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push -- Tag - run: | - docker build \ - -f ./server/Dockerfile \ - --platform linux/arm64 \ - -t ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 . - docker push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 + uses: docker/build-push-action@v6 + with: + context: . + file: ./server/Dockerfile + platforms: linux/arm64 + push: true + tags: ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: true + sbom: true create_manifest: name: Create and Push Manifest (tag) @@ -79,15 +82,12 @@ jobs: uses: actions/checkout@v4 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Extract tag id: tag run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT From b2a3a6c2aa070710ea4a2fd3adeec464fddf729c Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 13:29:57 -0500 Subject: [PATCH 5/8] cleanup workflows --- .github/workflows/server_ci.yml | 75 +++++++++++----------------- .github/workflows/server_release.yml | 18 ++++++- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/.github/workflows/server_ci.yml b/.github/workflows/server_ci.yml index a8dea98..b41b534 100644 --- a/.github/workflows/server_ci.yml +++ b/.github/workflows/server_ci.yml @@ -80,30 +80,30 @@ jobs: - name: Set version strings id: versions run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push -- Commit - run: | - docker build \ - -f ./server/Dockerfile \ - -t ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 . - docker push ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 - - - name: Build and push -- Release - if: github.ref == 'refs/heads/main' - run: | - docker build \ - -f ./server/Dockerfile \ - -t ghcr.io/chuckhend/vectorize-server:latest-amd64 . - docker push ghcr.io/chuckhend/vectorize-server:latest-amd64 + uses: docker/build-push-action@v6 + with: + context: . + file: ./server/Dockerfile + platforms: linux/amd64 + push: true + tags: | + ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: true + sbom: true build_and_push_arm64: name: Build and push ARM64 images @@ -122,28 +122,25 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push -- Commit - run: | - docker build \ - -f ./server/Dockerfile \ - --platform linux/arm64 \ - -t ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 . - docker push ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 - - - name: Build and push -- Release - if: github.ref == 'refs/heads/main' - run: | - docker build \ - -f ./server/Dockerfile \ - --platform linux/arm64 \ - -t ghcr.io/chuckhend/vectorize-server:latest-arm64 . - docker push ghcr.io/chuckhend/vectorize-server:latest-arm64 + uses: docker/build-push-action@v6 + with: + context: . + file: ./server/Dockerfile + platforms: linux/arm64 + push: true + tags: | + ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: true + sbom: true create_manifest: name: Create and Push Manifest @@ -157,15 +154,12 @@ jobs: uses: actions/checkout@v4 - name: Login to GHCR - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Set version string id: versions run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT @@ -180,16 +174,3 @@ jobs: docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 --arch arm64 --os linux docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 --arch amd64 --os linux docker manifest push ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} - - - name: Create and push Docker manifest -- latest (main) - # only push latest off main - if: github.ref == 'refs/heads/main' - run: | - docker manifest create \ - ghcr.io/chuckhend/vectorize-server:latest \ - ghcr.io/chuckhend/vectorize-server:latest-arm64 \ - ghcr.io/chuckhend/vectorize-server:latest-amd64 - - docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-arm64 --arch arm64 --os linux - docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-amd64 --arch amd64 --os linux - docker manifest push ghcr.io/chuckhend/vectorize-server:latest \ No newline at end of file diff --git a/.github/workflows/server_release.yml b/.github/workflows/server_release.yml index b864938..d603a42 100644 --- a/.github/workflows/server_release.yml +++ b/.github/workflows/server_release.yml @@ -33,7 +33,9 @@ jobs: file: ./server/Dockerfile platforms: linux/amd64 push: true - tags: ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + tags: | + ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 + ghcr.io/chuckhend/vectorize-server:latest-amd64 cache-from: type=gha cache-to: type=gha,mode=max provenance: true @@ -67,7 +69,9 @@ jobs: file: ./server/Dockerfile platforms: linux/arm64 push: true - tags: ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 + tags: | + ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 + ghcr.io/chuckhend/vectorize-server:latest-arm64 cache-from: type=gha cache-to: type=gha,mode=max provenance: true @@ -102,3 +106,13 @@ jobs: docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 --arch arm64 --os linux docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 --arch amd64 --os linux docker manifest push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} + + # Also create/push a "latest" multi-arch manifest pointing at the per-arch latest tags + docker manifest create \ + ghcr.io/chuckhend/vectorize-server:latest \ + ghcr.io/chuckhend/vectorize-server:latest-arm64 \ + ghcr.io/chuckhend/vectorize-server:latest-amd64 + + docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-arm64 --arch arm64 --os linux + docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-amd64 --arch amd64 --os linux + docker manifest push ghcr.io/chuckhend/vectorize-server:latest From 4cdf39cd466fa148ff2413b3b4a70ed01873ec0c Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 13:43:44 -0500 Subject: [PATCH 6/8] remove cache from ubicloud runners --- .github/workflows/server_ci.yml | 2 -- .github/workflows/server_release.yml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/server_ci.yml b/.github/workflows/server_ci.yml index b41b534..9107703 100644 --- a/.github/workflows/server_ci.yml +++ b/.github/workflows/server_ci.yml @@ -137,8 +137,6 @@ jobs: push: true tags: | ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 - cache-from: type=gha - cache-to: type=gha,mode=max provenance: true sbom: true diff --git a/.github/workflows/server_release.yml b/.github/workflows/server_release.yml index d603a42..6d189c6 100644 --- a/.github/workflows/server_release.yml +++ b/.github/workflows/server_release.yml @@ -72,8 +72,6 @@ jobs: tags: | ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 ghcr.io/chuckhend/vectorize-server:latest-arm64 - cache-from: type=gha - cache-to: type=gha,mode=max provenance: true sbom: true From dd51ecf114e2e932059b92b6af9c590da3c3fd49 Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 14:00:46 -0500 Subject: [PATCH 7/8] try using image tools --- .github/workflows/server_ci.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/server_ci.yml b/.github/workflows/server_ci.yml index 9107703..cd099f0 100644 --- a/.github/workflows/server_ci.yml +++ b/.github/workflows/server_ci.yml @@ -162,13 +162,16 @@ jobs: id: versions run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Create and push Docker manifest -- Commit run: | - docker manifest create \ - ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} \ + # Create a multi-arch image manifest from the two architecture-specific tags + docker buildx imagetools create \ + --tag ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} \ ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 \ ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 - docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-arm64 --arch arm64 --os linux - docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }}-amd64 --arch amd64 --os linux - docker manifest push ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} + # Inspect the created manifest to ensure it's correct + docker buildx imagetools inspect ghcr.io/chuckhend/vectorize-server:${{ steps.versions.outputs.SHORT_SHA }} From c1245432d497e35d19fda591c23cff888834785b Mon Sep 17 00:00:00 2001 From: Adam Hendel Date: Sat, 4 Oct 2025 14:22:28 -0500 Subject: [PATCH 8/8] fix release workflow --- .github/workflows/server_release.yml | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/server_release.yml b/.github/workflows/server_release.yml index 6d189c6..9f91c18 100644 --- a/.github/workflows/server_release.yml +++ b/.github/workflows/server_release.yml @@ -94,23 +94,26 @@ jobs: id: tag run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT - - name: Create and push Docker manifest -- Tag + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Create and push Docker manifest — Version and latest run: | - docker manifest create \ - ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} \ + # Create a multi-arch image manifest for the version tag + docker buildx imagetools create \ + --tag ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} \ ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 \ ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 - docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-arm64 --arch arm64 --os linux - docker manifest annotate ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }}-amd64 --arch amd64 --os linux - docker manifest push ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} + # Inspect the created version manifest to ensure it's correct + docker buildx imagetools inspect ghcr.io/chuckhend/vectorize-server:${{ steps.tag.outputs.TAG }} - # Also create/push a "latest" multi-arch manifest pointing at the per-arch latest tags - docker manifest create \ - ghcr.io/chuckhend/vectorize-server:latest \ + # Create/update the 'latest' multi-arch manifest pointing to the architecture-specific latest tags + docker buildx imagetools create \ + --tag ghcr.io/chuckhend/vectorize-server:latest \ ghcr.io/chuckhend/vectorize-server:latest-arm64 \ ghcr.io/chuckhend/vectorize-server:latest-amd64 - docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-arm64 --arch arm64 --os linux - docker manifest annotate ghcr.io/chuckhend/vectorize-server:latest ghcr.io/chuckhend/vectorize-server:latest-amd64 --arch amd64 --os linux - docker manifest push ghcr.io/chuckhend/vectorize-server:latest + # Inspect the created latest manifest + docker buildx imagetools inspect ghcr.io/chuckhend/vectorize-server:latest