From 6a5039a90eeebaa55a5178a198478a047201373d Mon Sep 17 00:00:00 2001 From: samanhappy Date: Fri, 18 Apr 2025 20:50:00 +0800 Subject: [PATCH] fix: consolidate build jobs and improve Docker image tagging logic (#23) --- .github/workflows/build.yml | 75 +++++++------------------------------ 1 file changed, 13 insertions(+), 62 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e8d4297..33bd1cd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,8 +6,11 @@ on: workflow_dispatch: jobs: - build-base: + build: runs-on: ubuntu-latest + strategy: + matrix: + variant: ${{ startsWith(github.ref, 'refs/tags/') && fromJSON('["base", "full"]') || fromJSON('["base"]') }} steps: - uses: actions/checkout@v4 with: @@ -28,73 +31,21 @@ jobs: with: images: samanhappy/mcphub tags: | - # edge 变体 - type=raw,value=edge,enable=${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} + type=raw,value=edge${{ matrix.variant == 'full' && '-full' || '' }},enable=${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} + type=semver,pattern={{version}}${{ matrix.variant == 'full' && '-full' || '' }},enable=${{ startsWith(github.ref, 'refs/tags/') }} + type=raw,value=latest${{ matrix.variant == 'full' && '-full' || '' }},enable=${{ startsWith(github.ref, 'refs/tags/') }} + flavor: | + latest=false - # semver - type=semver,pattern={{version}},enable=${{ startsWith(github.ref, 'refs/tags/') }} - - # latest - type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }} - - - name: Build and Push Base Docker Image + - name: Build and Push Docker Image uses: docker/build-push-action@v5 with: context: . push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha,scope=base-cache - cache-to: type=gha,mode=max,scope=base-cache + cache-from: type=gha + cache-to: type=gha,mode=max,scope=${{ matrix.variant }} platforms: linux/amd64,linux/arm64 build-args: | - INSTALL_EXT=false - # 确保构建完全独立,不共享缓存或中间层 - provenance: false - no-cache: true - - build-full: - needs: build-base - runs-on: ubuntu-latest - if: ${{ startsWith(github.ref, 'refs/tags/') }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Docker metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: samanhappy/mcphub - tags: | - # semver with full suffix - type=semver,pattern={{version}}-full,enable=${{ startsWith(github.ref, 'refs/tags/') }} - - # latest-full - type=raw,value=latest-full,enable=${{ startsWith(github.ref, 'refs/tags/') }} - - - name: Build and Push Full Docker Image - uses: docker/build-push-action@v5 - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha,scope=full-cache - cache-to: type=gha,mode=max,scope=full-cache - platforms: linux/amd64,linux/arm64 - build-args: | - INSTALL_EXT=true - # 确保构建完全独立,不共享缓存或中间层 - provenance: false - no-cache: true \ No newline at end of file + INSTALL_EXT=${{ matrix.variant == 'full' && 'true' || 'false' }}