diff --git a/.gitea/workflows/.gitlab-ci.yml b/.gitea/workflows/.gitlab-ci.yml index 604f700..b5b8a7a 100644 --- a/.gitea/workflows/.gitlab-ci.yml +++ b/.gitea/workflows/.gitlab-ci.yml @@ -59,20 +59,38 @@ jobs: - name: Publish ${{ matrix.module }} working-directory: Assets/${{ matrix.module }} run: | - echo "开始发布 ${{ matrix.module }}" + 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 - # 获取当前版本 - 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 - - # 发布 - npm publish || echo "发布失败,继续执行" - - echo "${{ matrix.module }} 构建完成" - name: Complete if: always()