diff --git a/.gitea/workflows/.gitlab-ci.yml b/.gitea/workflows/.gitlab-ci.yml index b5b8a7a..9311c0f 100644 --- a/.gitea/workflows/.gitlab-ci.yml +++ b/.gitea/workflows/.gitlab-ci.yml @@ -3,22 +3,21 @@ 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 + runs-on: dev container: image: node:18-bookworm strategy: fail-fast: false - max-parallel: 4 # 关键:同时只跑 2 个模块,其余排队 + max-parallel: 4 matrix: module: - 00.StaryEvo @@ -39,59 +38,55 @@ 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 + uses: http://106.52.62.106:3000/unity-registry/checkout@v4 with: - fetch-depth: 1 # 只拉取最新提交,不拉历史 - single-branch: true # 只拉取当前分支 - sparse-checkout: Assets/${{ matrix.module }} # 关键:只拉这个目录 - sparse-checkout-cone-mode: false # 关键:关闭 cone 模式(更精确) + fetch-depth: 1 + single-branch: true + sparse-checkout: Assets/${{ matrix.module }} + sparse-checkout-cone-mode: false + - name: Setup Node.js run: | - ln -sf /srv/18-alpine/bin/node /usr/bin/node - ln -sf /srv/18-alpine/bin/npm /usr/bin/npm + ln -sf /srv/18-alpine/bin/node /usr/bin/node 2>/dev/null || true + ln -sf /srv/18-alpine/bin/npm /usr/bin/npm 2>/dev/null || true node -v + # 修正:所有 shell 命令必须缩进在 run: | 下面 - name: Publish ${{ matrix.module }} working-directory: Assets/${{ matrix.module }} run: | - echo "📦 开始处理 ${{ matrix.module }}" - - # 获取当前版本号 - CURRENT_VERSION=$(node -p "require('./package.json').version") - PACKAGE_NAME=$(node -p "require('./package.json').name") - REGISTRY_URL="http://${SERVER_HOST}/npm" - - echo "当前版本: $PACKAGE_NAME@$CURRENT_VERSION" - echo "Registry: $REGISTRY_URL" - - # 配置 npm - npm config set registry "$REGISTRY_URL" - npm config set "//${SERVER_HOST}/:_authToken" "${AuthToken}" - - # 关键:先检查远程是否已存在该版本 - echo "🔍 检查远程版本..." - if npm view "$PACKAGE_NAME@$CURRENT_VERSION" --registry="$REGISTRY_URL" version >/dev/null 2>&1; then - echo "⚠️ 版本 $CURRENT_VERSION 已存在,跳过发布" - echo "💡 提示:如需更新,请修改 package.json 中的 version 字段" - exit 0 # 正常退出,不算失败 - fi - - # 版本不存在,执行发布 - echo "🚀 版本 $CURRENT_VERSION 不存在,开始发布..." - if npm publish; then - echo "✅ $PACKAGE_NAME@$CURRENT_VERSION 发布成功" - else - echo "❌ 发布失败(非版本冲突错误)" - exit 1 # 真正的失败,终止 CI - fi - - + echo "📦 开始处理 ${{ matrix.module }}" + + # 获取当前版本号 + CURRENT_VERSION=$(node -p "require('./package.json').version") + PACKAGE_NAME=$(node -p "require('./package.json').name") + REGISTRY_URL="http://${SERVER_HOST}/npm" + + echo "当前版本: $PACKAGE_NAME@$CURRENT_VERSION" + echo "Registry: $REGISTRY_URL" + + # 配置 npm + npm config set registry "$REGISTRY_URL" + npm config set "//${SERVER_HOST}/:_authToken" "${AuthToken}" + + # 关键:先检查远程是否已存在该版本 + echo "🔍 检查远程版本..." + if npm view "$PACKAGE_NAME@$CURRENT_VERSION" --registry="$REGISTRY_URL" version >/dev/null 2>&1; then + echo "⚠️ 版本 $CURRENT_VERSION 已存在,跳过发布" + echo "💡 提示:如需更新,请修改 package.json 中的 version 字段" + exit 0 # 正常退出,不算失败 + fi + + # 版本不存在,执行发布 + echo "🚀 版本 $CURRENT_VERSION 不存在,开始发布..." + if npm publish; then + echo "✅ $PACKAGE_NAME@$CURRENT_VERSION 发布成功" + else + echo "❌ 发布失败(非版本冲突错误)" + exit 1 # 真正的失败,终止 CI + fi - name: Complete if: always() - run: echo "====== ${{ matrix.module }} 发布完成 =========" + run: echo "====== ${{ matrix.module }} 发布完成 =========" \ No newline at end of file