From 32826b49bc545bc9842bd5e6178b605ed463014b Mon Sep 17 00:00:00 2001 From: Merith Date: Fri, 9 May 2025 13:19:33 -0700 Subject: [PATCH] multiarch support --- .forgejo/workflows/build-on-commit.yml | 31 ++++++++++++++++---------- .forgejo/workflows/build-on-tag.yml | 29 +++++++++++++++--------- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/.forgejo/workflows/build-on-commit.yml b/.forgejo/workflows/build-on-commit.yml index e8f0d2e..fba6d8f 100644 --- a/.forgejo/workflows/build-on-commit.yml +++ b/.forgejo/workflows/build-on-commit.yml @@ -4,7 +4,7 @@ on: push: branches: - main - tags: + tags: - '!' # Exclude tags jobs: @@ -21,20 +21,27 @@ jobs: echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + driver-opts: | + network=host + - name: Login to OCI registry run: | echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin - - name: Build and push Docker images + - name: Build and push multi-arch Docker images run: | - # Build Docker image with commit SHA - docker build -t $REPO_HOST/$REPO_PATH:${{ github.sha }} . - docker push $REPO_HOST/$REPO_PATH:${{ github.sha }} + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag $REPO_HOST/$REPO_PATH:${{ github.sha }} \ + --tag $REPO_HOST/$REPO_PATH:nightly \ + --push \ + . - # Build Docker image with nightly tag - docker tag $REPO_HOST/$REPO_PATH:${{ github.sha }} $REPO_HOST/$REPO_PATH:nightly - docker push $REPO_HOST/$REPO_PATH:nightly - - # Remove local images to save storage - docker rmi $REPO_HOST/$REPO_PATH:${{ github.sha }} - docker rmi $REPO_HOST/$REPO_PATH:nightly + - name: Cleanup + run: | + docker buildx prune -f + docker logout $REPO_HOST \ No newline at end of file diff --git a/.forgejo/workflows/build-on-tag.yml b/.forgejo/workflows/build-on-tag.yml index 888102b..012b946 100644 --- a/.forgejo/workflows/build-on-tag.yml +++ b/.forgejo/workflows/build-on-tag.yml @@ -18,20 +18,29 @@ jobs: run: | echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV + echo "TAG=${{ github.ref_name }}" >> $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + driver-opts: | + network=host - name: Login to OCI registry run: | echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin - - name: Build and push Docker image + - name: Build and push Docker images run: | - TAG=${{ github.ref_name }} # Get the tag name from the context - # Build and push multi-platform Docker images - docker build -t $REPO_HOST/$REPO_PATH:$TAG --push . - # Tag and push latest - docker tag $REPO_HOST/$REPO_PATH:$TAG $REPO_HOST/$REPO_PATH:latest - docker push $REPO_HOST/$REPO_PATH:latest + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag $REPO_HOST/$REPO_PATH:$TAG \ + --tag $REPO_HOST/$REPO_PATH:latest \ + --push \ + . - # Remove the local image to save storage - docker rmi $REPO_HOST/$REPO_PATH:$TAG - docker rmi $REPO_HOST/$REPO_PATH:latest \ No newline at end of file + - name: Cleanup + run: | + docker buildx prune -f + docker logout $REPO_HOST \ No newline at end of file