diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 3aacf4f5..6207a10b 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -10,13 +10,11 @@ env: DOCKERHUB_REPO: eceasy/cli-proxy-api jobs: - docker: + docker_amd64: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to DockerHub @@ -29,18 +27,78 @@ jobs: echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV - - name: Build and push + - name: Build and push (amd64) uses: docker/build-push-action@v6 with: context: . - platforms: | - linux/amd64 - linux/arm64 + platforms: linux/amd64 push: true build-args: | VERSION=${{ env.VERSION }} COMMIT=${{ env.COMMIT }} BUILD_DATE=${{ env.BUILD_DATE }} tags: | - ${{ env.DOCKERHUB_REPO }}:latest - ${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }} + ${{ env.DOCKERHUB_REPO }}:latest-amd64 + ${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-amd64 + + docker_arm64: + runs-on: ubuntu-24.04-arm + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Generate Build Metadata + run: | + echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV + echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV + echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV + - name: Build and push (arm64) + uses: docker/build-push-action@v6 + with: + context: . + platforms: linux/arm64 + push: true + build-args: | + VERSION=${{ env.VERSION }} + COMMIT=${{ env.COMMIT }} + BUILD_DATE=${{ env.BUILD_DATE }} + tags: | + ${{ env.DOCKERHUB_REPO }}:latest-arm64 + ${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-arm64 + + docker_manifest: + runs-on: ubuntu-latest + needs: + - docker_amd64 + - docker_arm64 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Generate Build Metadata + run: | + echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV + echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV + echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV + - name: Create and push multi-arch manifests + run: | + docker buildx imagetools create \ + --tag "${DOCKERHUB_REPO}:latest" \ + "${DOCKERHUB_REPO}:latest-amd64" \ + "${DOCKERHUB_REPO}:latest-arm64" + docker buildx imagetools create \ + --tag "${DOCKERHUB_REPO}:${VERSION}" \ + "${DOCKERHUB_REPO}:${VERSION}-amd64" \ + "${DOCKERHUB_REPO}:${VERSION}-arm64"