From eb544df65f05c7f05879e5d11bed53bf28877f57 Mon Sep 17 00:00:00 2001 From: root <834207172@qq.com> Date: Thu, 2 Apr 2026 21:43:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/.gitlab-c?= =?UTF-8?q?i.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/.gitlab-ci.yml | 74 +++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/.gitlab-ci.yml b/.gitea/workflows/.gitlab-ci.yml index 8bb6412..bf6ad85 100644 --- a/.gitea/workflows/.gitlab-ci.yml +++ b/.gitea/workflows/.gitlab-ci.yml @@ -3,19 +3,47 @@ name: Plugin Library CI on: push: branches: [master, main] - workflow_dispatch: # 支持手动触发 + workflow_dispatch: env: SERVER_HOST: ${{ vars.SERVER_HOST }} AuthToken: ${{ vars.AUTH_TOKEN }} jobs: - # 定义所有模块矩阵 - publish: - runs-on: dev # 对应你的 GitLab runner tag + # ========== 第一阶段:准备(只执行一次)========== + prepare: + runs-on: dev container: image: node:18-alpine + steps: + - name: Checkout Code + uses: http://106.52.62.106:3000/unity-registry/checkout@v4 + + - name: Setup Node.js Environment + run: | + ln -sf /srv/18-alpine/bin/node /usr/bin/node + ln -sf /srv/18-alpine/bin/npm /usr/bin/npm + node -v + npm -v + echo "Node.js 环境配置完成" + + # 将代码打包成 Artifact,供后续 Job 使用 + - name: Upload Workspace + uses: http://106.52.62.106:3000/unity-registry/upload-artifact@v4 + with: + name: plugin-workspace + path: | + . + !.git/ + retention-days: 1 + # ========== 第二阶段:并行发布(复用准备阶段的结果)========== + publish: + runs-on: dev + container: + image: node:18-alpine + needs: prepare # 关键:依赖 prepare Job 完成 + strategy: fail-fast: false matrix: @@ -38,36 +66,40 @@ jobs: - 11.PointCloudTools steps: - #- name: Install Git - # run: | - # apk add --no-cache git - # git --version # 验证 - - name: Checkout - uses: http://106.52.62.106:3000/unity-registry/checkout@v4 - - name: Setup Node.js + # 下载之前准备好的代码(代替 Checkout) + - name: Download Workspace + uses: http://106.52.62.106:3000/unity-registry/download-artifact@v4 + with: + name: plugin-workspace + + # 恢复 Node.js 软链接(容器内每次都需要,因为每个 Job 是独立的容器实例) + - name: Restore Node.js Links run: | ln -sf /srv/18-alpine/bin/node /usr/bin/node ln -sf /srv/18-alpine/bin/npm /usr/bin/npm - node -v - + - name: Publish ${{ matrix.module }} working-directory: Assets/${{ matrix.module }} run: | echo "开始发布 ${{ matrix.module }}" - - # 获取当前版本 + CURRENT_VERSION=$(node -p "require('./package.json').version") echo "当前版本: $CURRENT_VERSION" - + # 配置 npm registry echo "registry=http://${SERVER_HOST}/npm" > .npmrc - echo "//${SERVER_HOST}/:_authToken=${AuthToken}" >> .npmrc - - # 发布 + echo "//${{ vars.SERVER_HOST }}/:_authToken=${AuthToken}" >> .npmrc + + # 检查版本是否已存在(避免 409 错误) + PACKAGE_NAME=$(node -p "require('./package.json').name") + if npm view $PACKAGE_NAME@$CURRENT_VERSION version &>/dev/null; then + echo "⚠️ 版本 $CURRENT_VERSION 已存在,跳过发布" + exit 0 + fi + npm publish || echo "发布失败,继续执行" - echo "${{ matrix.module }} 构建完成" - name: Complete if: always() - run: echo "====== ${{ matrix.module }} 发布完成 =========" + run: echo "====== ${{ matrix.module }} 发布完成 =========" \ No newline at end of file