From fbca2561e3c07d2950a1a48e4ded97366118bf84 Mon Sep 17 00:00:00 2001 From: CaIon Date: Tue, 17 Mar 2026 17:44:19 +0800 Subject: [PATCH] feat: add nightly branch trigger to Docker image workflow --- .github/workflows/docker-image-nightly.yml | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 .github/workflows/docker-image-nightly.yml diff --git a/.github/workflows/docker-image-nightly.yml b/.github/workflows/docker-image-nightly.yml new file mode 100644 index 00000000..2125fa9d --- /dev/null +++ b/.github/workflows/docker-image-nightly.yml @@ -0,0 +1,113 @@ +name: Publish Docker image (nightly) + +on: + push: + branches: + - nightly + workflow_dispatch: + inputs: + name: + description: "reason" + required: false + +jobs: + build_single_arch: + name: Build & push (${{ matrix.arch }}) [native] + strategy: + fail-fast: false + matrix: + include: + - arch: amd64 + platform: linux/amd64 + runner: ubuntu-latest + - arch: arm64 + platform: linux/arm64 + runner: ubuntu-24.04-arm + runs-on: ${{ matrix.runner }} + + permissions: + contents: read + + steps: + - name: Check out (shallow) + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Determine nightly version + id: version + run: | + VERSION="nightly-$(date +'%Y%m%d')-$(git rev-parse --short HEAD)" + echo "$VERSION" > VERSION + echo "value=$VERSION" >> $GITHUB_OUTPUT + echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Publishing version: $VERSION for ${{ matrix.arch }}" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Extract metadata (labels) + id: meta + uses: docker/metadata-action@v5 + with: + images: | + calciumion/new-api + + - name: Build & push single-arch + uses: docker/build-push-action@v6 + with: + context: . + platforms: ${{ matrix.platform }} + push: true + tags: | + calciumion/new-api:nightly-${{ matrix.arch }} + calciumion/new-api:${{ steps.version.outputs.value }}-${{ matrix.arch }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: false + sbom: false + + create_manifests: + name: Create multi-arch manifests (Docker Hub) + needs: [build_single_arch] + runs-on: ubuntu-latest + + steps: + - name: Check out (shallow) + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Determine nightly version + id: version + run: | + VERSION="nightly-$(date +'%Y%m%d')-$(git rev-parse --short HEAD)" + echo "value=$VERSION" >> $GITHUB_OUTPUT + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Create & push manifest (Docker Hub - nightly) + run: | + docker buildx imagetools create \ + -t calciumion/new-api:nightly \ + calciumion/new-api:nightly-amd64 \ + calciumion/new-api:nightly-arm64 + + - name: Create & push manifest (Docker Hub - versioned nightly) + run: | + docker buildx imagetools create \ + -t calciumion/new-api:${VERSION} \ + calciumion/new-api:${VERSION}-amd64 \ + calciumion/new-api:${VERSION}-arm64