diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3a7861d..65cee73 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -97,16 +97,13 @@ on: required: true jobs: - build-and-push-amd64: - name: Build and Push AMD64 - runs-on: ubuntu-latest # x86_64 runner - permissions: - packages: write - contents: read + build-amd64: + name: Build AMD64 Image + runs-on: ubuntu-latest + outputs: + image: ${{ steps.set-tags.outputs.amd64_image }} steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - uses: docker/setup-buildx-action@v3 @@ -115,36 +112,31 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Set tags + - name: Set image tag id: set-tags run: | REF_NAME=${GITHUB_REF#refs/tags/} - TAGS="${{ inputs.image_name }}:$REF_NAME" - if [[ "${{ inputs.add_latest }}" == "true" ]]; then - TAGS="$TAGS,${{ inputs.image_name }}:latest" - fi - echo "tags=$TAGS" >> $GITHUB_OUTPUT + AMD64_IMAGE="${{ inputs.image_name }}:$REF_NAME-amd64" + echo "amd64_image=$AMD64_IMAGE" >> $GITHUB_OUTPUT - - name: Build and push AMD64 image + - name: Build and push AMD64 uses: docker/build-push-action@v6 with: context: . file: ${{ inputs.dockerfile }} platforms: linux/amd64 push: true - tags: ${{ steps.set-tags.outputs.tags }} + tags: ${{ steps.set-tags.outputs.amd64_image }} target: ${{ inputs.target }} - build-and-push-arm64: - name: Build and Push ARM64 + build-arm64: + name: Build ARM64 Image runs-on: ubuntu-24.04-arm - permissions: - packages: write - contents: read + needs: build-amd64 + outputs: + image: ${{ steps.set-tags.outputs.arm64_image }} steps: - uses: actions/checkout@v4 - with: - fetch-depth: 0 - uses: docker/setup-buildx-action@v3 @@ -153,22 +145,46 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Set tags + - name: Set image tag id: set-tags run: | REF_NAME=${GITHUB_REF#refs/tags/} - TAGS="${{ inputs.image_name }}:$REF_NAME" - if [[ "${{ inputs.add_latest }}" == "true" ]]; then - TAGS="$TAGS,${{ inputs.image_name }}:latest" - fi - echo "tags=$TAGS" >> $GITHUB_OUTPUT + ARM64_IMAGE="${{ inputs.image_name }}:$REF_NAME-arm64" + echo "arm64_image=$ARM64_IMAGE" >> $GITHUB_OUTPUT - - name: Build and push ARM64 image + - name: Build and push ARM64 uses: docker/build-push-action@v6 with: context: . file: ${{ inputs.dockerfile }} platforms: linux/arm64 push: true - tags: ${{ steps.set-tags.outputs.tags }} + tags: ${{ steps.set-tags.outputs.arm64_image }} target: ${{ inputs.target }} + + create-manifest: + name: Create Multi-Arch Manifest + runs-on: ubuntu-latest + needs: + - build-amd64 + - build-arm64 + steps: + - uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Create Docker manifest + run: | + REF_NAME=${GITHUB_REF#refs/tags/} + IMAGE="${{ inputs.image_name }}:$REF_NAME" + AMD64_IMAGE="${{ needs.build-amd64.outputs.image }}" + ARM64_IMAGE="${{ needs.build-arm64.outputs.image }}" + + docker manifest create $IMAGE $AMD64_IMAGE $ARM64_IMAGE + docker manifest push $IMAGE + + if [ "${{ inputs.add_latest }}" = "true" ]; then + docker manifest create ${{ inputs.image_name }}:latest $AMD64_IMAGE $ARM64_IMAGE + docker manifest push ${{ inputs.image_name }}:latest + fi diff --git a/CITATION.cff b/CITATION.cff index d04d042..1f6b9bf 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -22,5 +22,5 @@ keywords: - self-hosted - portabase license: Apache-2.0 -version: 1.0.4-rc.11 +version: 1.0.4-rc.12 date-released: "2026-01-28" \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 20f649e..257b457 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1595,7 +1595,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portabase-agent" -version = "1.0.4-rc.10" +version = "1.0.4-rc.11" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 3c34978..b76ac20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "portabase-agent" -version = "1.0.4-rc.11" +version = "1.0.4-rc.12" edition = "2024" [dependencies]