Files
plugin-library/.gitea/workflows/.gitlab-ci.yml

91 lines
2.8 KiB
YAML

name: Plugin Library CI
on:
push:
branches: [ dev_run]
workflow_dispatch:
env:
SERVER_HOST: ${{ vars.SERVER_HOST }}
AuthToken: ${{ vars.AUTH_TOKEN }}
jobs:
publish:
runs-on: dev
container:
image: node:18-bookworm
strategy:
fail-fast: false
max-parallel: 4
matrix:
module:
- 00.StaryEvo
- 00.StaryEvoTools
- 00.BuildOriginality
- 01.HybridCLR
- 02.InformationSave
- 03.YooAsset
- 04.AudioCore
- 05.TableTextConversion
- 06.UIFarme
- 07.RKTools
- 08.UniTask
- 09.CodeChecker
- 10.StoryEditor
- 10.XNode
- 11.PointCloudTools
steps:
- name: Checkout
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
- name: Setup Node.js
run: |
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
- name: Complete
if: always()
run: echo "====== ${{ matrix.module }} 发布完成 ========="