From b3a6432742e71fbba11b43139b6c5622c15c23b6 Mon Sep 17 00:00:00 2001 From: engigu Date: Fri, 6 Feb 2026 21:52:28 +0800 Subject: [PATCH] feat: add more image tag --- .github/workflows/deploy.yml | 27 +++++++++++---- .github/workflows/docker-amd64.yml | 24 +++++++++++--- .github/workflows/docker-arm64.yml | 24 +++++++++++--- .github/workflows/release.yml | 53 ++++++++++++++++++++++++++---- docker/Dockerfile | 3 +- 5 files changed, 108 insertions(+), 23 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9eda06e..cc9b70e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,6 +12,19 @@ env: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + base_type: [debian, alpine, debian13] + include: + - base_type: debian + base_tag: base + tag_suffix: "" + - base_type: alpine + base_tag: base-alpine + tag_suffix: "-alpine" + - base_type: debian13 + base_tag: base-debian13 + tag_suffix: "-debian13" permissions: contents: read @@ -38,10 +51,9 @@ jobs: images: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} tags: | - type=semver,pattern={{version}}-amd64 - type=raw,value=latest-amd64,enable={{is_default_branch}} - type=ref,event=branch,suffix=-amd64 - type=sha,prefix={{branch}}-,suffix=-amd64 + type=raw,value=latest-amd64${{ matrix.tag_suffix }},enable={{is_default_branch}} + type=ref,event=branch,suffix=-amd64${{ matrix.tag_suffix }} + type=sha,prefix={{branch}}-,suffix=-amd64${{ matrix.tag_suffix }} - name: Get build time id: build_time @@ -59,11 +71,13 @@ jobs: build-args: | VERSION=${{ github.ref_name }} BUILD_TIME=${{ steps.build_time.outputs.time }} - cache-from: type=gha,scope=linux-amd64 - cache-to: type=gha,scope=linux-amd64,mode=max + BASE_TAG=${{ matrix.base_tag }} + cache-from: type=gha,scope=linux-amd64-${{ matrix.base_type }} + cache-to: type=gha,scope=linux-amd64-${{ matrix.base_type }},mode=max provenance: false - name: Deploy to Demo server + if: github.ref == 'refs/heads/main' && matrix.base_type == 'debian' uses: appleboy/ssh-action@v1.2.0 with: host: ${{ secrets.DEPLOY_HOST }} @@ -76,6 +90,7 @@ jobs: docker-compose -f docker/docker-compose.yml up -d - name: Deploy to X server + if: github.ref == 'refs/heads/main' && matrix.base_type == 'debian' uses: appleboy/ssh-action@v1.2.0 with: host: ${{ secrets.DEPLOY_HOST }} diff --git a/.github/workflows/docker-amd64.yml b/.github/workflows/docker-amd64.yml index 5d4a30d..8f5b081 100644 --- a/.github/workflows/docker-amd64.yml +++ b/.github/workflows/docker-amd64.yml @@ -12,6 +12,19 @@ env: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + base_type: [debian, alpine, debian13] + include: + - base_type: debian + base_tag: base + tag_suffix: "" + - base_type: alpine + base_tag: base-alpine + tag_suffix: "-alpine" + - base_type: debian13 + base_tag: base-debian13 + tag_suffix: "-debian13" permissions: contents: read @@ -38,9 +51,9 @@ jobs: images: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} tags: | - type=semver,pattern={{version}}-amd64 - type=raw,value=latest-amd64,enable={{is_default_branch}} - type=ref,event=branch,suffix=-amd64 + type=semver,pattern={{version}}-amd64${{ matrix.tag_suffix }} + type=raw,value=latest-amd64${{ matrix.tag_suffix }},enable={{is_default_branch}} + type=ref,event=branch,suffix=-amd64${{ matrix.tag_suffix }} - name: Get build time id: build_time @@ -58,6 +71,7 @@ jobs: build-args: | VERSION=${{ github.ref_name }} BUILD_TIME=${{ steps.build_time.outputs.time }} - cache-from: type=gha,scope=linux-amd64 - cache-to: type=gha,scope=linux-amd64,mode=max + BASE_TAG=${{ matrix.base_tag }} + cache-from: type=gha,scope=linux-amd64-${{ matrix.base_type }} + cache-to: type=gha,scope=linux-amd64-${{ matrix.base_type }},mode=max provenance: false diff --git a/.github/workflows/docker-arm64.yml b/.github/workflows/docker-arm64.yml index 084fe99..83cde29 100644 --- a/.github/workflows/docker-arm64.yml +++ b/.github/workflows/docker-arm64.yml @@ -12,6 +12,19 @@ env: jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + base_type: [debian, alpine, debian13] + include: + - base_type: debian + base_tag: base + tag_suffix: "" + - base_type: alpine + base_tag: base-alpine + tag_suffix: "-alpine" + - base_type: debian13 + base_tag: base-debian13 + tag_suffix: "-debian13" permissions: contents: read @@ -41,9 +54,9 @@ jobs: images: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} tags: | - type=semver,pattern={{version}}-arm64 - type=raw,value=latest-arm64,enable={{is_default_branch}} - type=ref,event=branch,suffix=-arm64 + type=semver,pattern={{version}}-arm64${{ matrix.tag_suffix }} + type=raw,value=latest-arm64${{ matrix.tag_suffix }},enable={{is_default_branch}} + type=ref,event=branch,suffix=-arm64${{ matrix.tag_suffix }} - name: Get build time id: build_time @@ -61,6 +74,7 @@ jobs: build-args: | VERSION=${{ github.ref_name }} BUILD_TIME=${{ steps.build_time.outputs.time }} - cache-from: type=gha,scope=linux-arm64 - cache-to: type=gha,scope=linux-arm64,mode=max + BASE_TAG=${{ matrix.base_tag }} + cache-from: type=gha,scope=linux-arm64-${{ matrix.base_type }} + cache-to: type=gha,scope=linux-arm64-${{ matrix.base_type }},mode=max provenance: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4ce69d4..c5c026f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,10 +14,39 @@ jobs: runs-on: ubuntu-latest strategy: matrix: + base_type: [debian, alpine, debian13] platform: - linux/amd64 - linux/arm64 - - linux/arm/v7 + include: + - base_type: debian + platform: linux/arm/v7 + base_tag: base + tag_suffix: "" + - base_type: debian + platform: linux/amd64 + base_tag: base + tag_suffix: "" + - base_type: debian + platform: linux/arm64 + base_tag: base + tag_suffix: "" + - base_type: alpine + platform: linux/amd64 + base_tag: base-alpine + tag_suffix: "-alpine" + - base_type: alpine + platform: linux/arm64 + base_tag: base-alpine + tag_suffix: "-alpine" + - base_type: debian13 + platform: linux/amd64 + base_tag: base-debian13 + tag_suffix: "-debian13" + - base_type: debian13 + platform: linux/arm64 + base_tag: base-debian13 + tag_suffix: "-debian13" permissions: contents: read @@ -31,7 +60,7 @@ jobs: id: platform run: | platform=${{ matrix.platform }} - echo "pair=${platform//\//-}" >> $GITHUB_OUTPUT + echo "pair=${platform//\//-}-${{ matrix.base_type }}" >> $GITHUB_OUTPUT - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -67,6 +96,7 @@ jobs: build-args: | VERSION=${{ github.ref_name }} BUILD_TIME=${{ steps.build_time.outputs.time }} + BASE_TAG=${{ matrix.base_tag }} labels: ${{ steps.meta.outputs.labels }} outputs: type=image,name=${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true cache-from: type=gha,scope=${{ steps.platform.outputs.pair }} @@ -90,6 +120,16 @@ jobs: merge: runs-on: ubuntu-latest needs: build + strategy: + matrix: + base_type: [debian, alpine, debian13] + include: + - base_type: debian + tag_suffix: "" + - base_type: alpine + tag_suffix: "-alpine" + - base_type: debian13 + tag_suffix: "-debian13" permissions: contents: write @@ -103,7 +143,7 @@ jobs: uses: actions/download-artifact@v4 with: path: /tmp/digests - pattern: digests-* + pattern: digests-*-${{ matrix.base_type }} merge-multiple: true - name: Set up Docker Buildx @@ -123,8 +163,8 @@ jobs: images: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }} tags: | - type=semver,pattern={{version}} - type=raw,value=latest + type=semver,pattern={{version}}${{ matrix.tag_suffix }} + type=raw,value=latest${{ matrix.tag_suffix }} - name: Create manifest list and push working-directory: /tmp/digests @@ -134,9 +174,10 @@ jobs: - name: Inspect image run: | - docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }} + docker buildx imagetools inspect ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ steps.meta.outputs.version }}${{ matrix.tag_suffix }} - name: Create GitHub Release + if: matrix.base_type == 'debian' uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} diff --git a/docker/Dockerfile b/docker/Dockerfile index c29a99d..e7d8fa8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -104,7 +104,8 @@ RUN VERSION_VAL=$(cat /build-info/version.txt) && \ # ================================ # Stage 4: Final image # ================================ -FROM ghcr.io/engigu/baihu:base +ARG BASE_TAG=base +FROM ghcr.io/engigu/baihu:${BASE_TAG} ENV TZ=Asia/Shanghai ENV PATH="/app/envs/node/bin:/app/envs/python/bin:$PATH"