From 6a54e4c527b864513d2e5c9db6d28ce461cbd021 Mon Sep 17 00:00:00 2001 From: Zker67 Date: Mon, 25 May 2026 02:08:25 +0800 Subject: [PATCH 1/2] ci: default docker builds to single platform --- .github/workflows/docker-publish.yml | 36 ++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 9fd2336..e60be13 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -2,9 +2,16 @@ name: Publish Docker Image on: push: + branches: + - main tags: - "v*" workflow_dispatch: + inputs: + platforms: + description: "Comma-separated Docker platforms to build" + required: false + default: "linux/amd64" env: IMAGE_NAME: webchat2api @@ -22,7 +29,32 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Prepare Docker build settings + id: build_settings + shell: bash + env: + REQUESTED_PLATFORMS: ${{ github.event.inputs.platforms || '' }} + run: | + if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" && -n "${REQUESTED_PLATFORMS}" ]]; then + platforms="${REQUESTED_PLATFORMS}" + elif [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then + platforms="linux/amd64,linux/arm64" + else + platforms="linux/amd64" + fi + + platforms="${platforms//[[:space:]]/}" + if [[ "${platforms}" == *,* ]]; then + cache_mode="max" + else + cache_mode="min" + fi + + echo "platforms=${platforms}" >> "$GITHUB_OUTPUT" + echo "cache_mode=${cache_mode}" >> "$GITHUB_OUTPUT" + - name: Set up QEMU + if: ${{ contains(steps.build_settings.outputs.platforms, 'arm') }} uses: docker/setup-qemu-action@v3 with: platforms: arm64 @@ -64,9 +96,9 @@ jobs: context: . file: ./Dockerfile target: app - platforms: linux/amd64,linux/arm64 + platforms: ${{ steps.build_settings.outputs.platforms }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha - cache-to: type=gha,mode=max + cache-to: type=gha,mode=${{ steps.build_settings.outputs.cache_mode }} From 5bb07bc818a404ba579aaa21e1c734b009541f24 Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Mon, 25 May 2026 12:27:27 +0800 Subject: [PATCH 2/2] ci: validate docker publish platforms --- .github/workflows/docker-publish.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index e60be13..ade7595 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -44,6 +44,18 @@ jobs: fi platforms="${platforms//[[:space:]]/}" + if [[ -z "${platforms}" ]]; then + platforms="linux/amd64" + fi + + IFS=',' read -ra requested_platforms <<< "${platforms}" + for platform in "${requested_platforms[@]}"; do + if [[ "${platform}" != "linux/amd64" && "${platform}" != "linux/arm64" ]]; then + echo "Unsupported Docker platform: ${platform}. Supported platforms: linux/amd64,linux/arm64" >&2 + exit 1 + fi + done + if [[ "${platforms}" == *,* ]]; then cache_mode="max" else