From e708524a41db715d77ae4bbf80e34d0036cecb50 Mon Sep 17 00:00:00 2001 From: jiangrui Date: Thu, 6 Mar 2025 16:41:54 +0800 Subject: [PATCH] =?UTF-8?q?build:=E5=AE=8C=E5=96=84=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker-build-test.yml | 17 +++++++++++------ .github/workflows/docker-image.yml | 23 +++++++++++++++++------ package.json | 3 +++ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker-build-test.yml b/.github/workflows/docker-build-test.yml index 8d92ede..e40eda6 100644 --- a/.github/workflows/docker-build-test.yml +++ b/.github/workflows/docker-build-test.yml @@ -1,17 +1,15 @@ name: Build and Push Multi-Arch Docker Image for Test on: - push: - branches: - - dev - workflow_dispatch: # 添加手动触发 + workflow_dispatch: # 添加手动触发 jobs: build-and-push: runs-on: ubuntu-latest permissions: contents: read - packages: write # 必须授权以推送镜像 + packages: write # 必须授权以推送镜像 env: REPO_NAME: ${{ github.repository }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} steps: - name: 检出代码 uses: actions/checkout@v4 @@ -28,6 +26,12 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: 登录到 Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: 设置 QEMU 支持多架构 uses: docker/setup-qemu-action@v2 @@ -38,7 +42,8 @@ jobs: uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64 # 指定架构:x86_64 和 ARM64 + platforms: linux/amd64,linux/arm64 # 指定架构:x86_64 和 ARM64 push: true tags: | ghcr.io/${{ env.LOWER_NAME }}:test + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.LOWER_NAME }}:test diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 364d4c0..e46fd50 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,24 +1,27 @@ name: Docker Image CI/CD on: push: - tags: [ "v*.*.*" ] # 支持标签触发(如 v1.0.0) - workflow_dispatch: # 添加手动触发 + tags: ["v*.*.*"] # 支持标签触发(如 v1.0.0) + workflow_dispatch: # 添加手动触发 jobs: build-and-push: runs-on: ubuntu-latest permissions: contents: read - packages: write # 必须授权以推送镜像 + packages: write # 必须授权以推送镜像 env: REPO_NAME: ${{ github.repository }} + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} steps: - name: 检出代码 uses: actions/checkout@v4 - - name: 设置小写镜像名称 + - name: 设置小写镜像名称和版本 run: | LOWER_NAME=$(echo "$REPO_NAME" | tr '[:upper:]' '[:lower:]') echo "LOWER_NAME=$LOWER_NAME" >> $GITHUB_ENV + VERSION=${GITHUB_REF#refs/tags/v} + echo "VERSION=$VERSION" >> $GITHUB_ENV - name: 登录到 GitHub Container Registry uses: docker/login-action@v2 @@ -27,6 +30,12 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: 登录到 Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: 设置 QEMU 支持多架构 uses: docker/setup-qemu-action@v2 @@ -37,8 +46,10 @@ jobs: uses: docker/build-push-action@v4 with: context: . - platforms: linux/amd64,linux/arm64 # 指定架构:x86_64 和 ARM64 + platforms: linux/amd64,linux/arm64 # 指定架构:x86_64 和 ARM64 push: true tags: | ghcr.io/${{ env.LOWER_NAME }}:latest - ghcr.io/${{ env.LOWER_NAME }}:${{ github.sha }} + ghcr.io/${{ env.LOWER_NAME }}:${{ env.VERSION }} + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.LOWER_NAME }}:latest + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.LOWER_NAME }}:${{ env.VERSION }} diff --git a/package.json b/package.json index 0d707d8..56b8b60 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,9 @@ "build:frontend": "cd frontend && npm run build", "build:backend": "cd backend && npm run build", "clean": "rimraf **/node_modules **/dist", + "version:patch": "npm version patch -w frontend && npm version patch", + "version:minor": "npm version minor -w frontend && npm version minor", + "version:major": "npm version major -w frontend && npm version major", "format": "prettier --write \"**/*.{js,ts,vue,json,css,scss}\"", "format:check": "prettier --check \"**/*.{js,ts,vue,json,css,scss}\"", "format:all": "npm run format && npm run lint:fix",