Some checks failed
Plugin Library CI / publish (01.HybridCLR) (push) Has been cancelled
Plugin Library CI / publish (02.InformationSave) (push) Has been cancelled
Plugin Library CI / publish (06.UIFarme) (push) Has been cancelled
Plugin Library CI / cleanup (push) Has been cancelled
Plugin Library CI / publish (00.StaryEvoTools) (push) Has been cancelled
Plugin Library CI / publish (04.AudioCore) (push) Has been cancelled
Plugin Library CI / publish (05.TableTextConversion) (push) Has been cancelled
Plugin Library CI / publish (09.CodeChecker) (push) Has been cancelled
Plugin Library CI / publish (00.ARMazTools) (push) Has been cancelled
Plugin Library CI / publish (00.StaryEvo) (push) Has been cancelled
Plugin Library CI / publish (07.RKTools) (push) Has been cancelled
Plugin Library CI / publish (10.StoryEditor) (push) Has been cancelled
Plugin Library CI / publish (00.BuildOriginality) (push) Has been cancelled
Plugin Library CI / publish (11.PointCloudTools) (push) Has been cancelled
Plugin Library CI / publish (03.YooAsset) (push) Has been cancelled
Plugin Library CI / publish (08.UniTask) (push) Has been cancelled
Plugin Library CI / publish (10.XNode) (push) Has been cancelled
Plugin Library CI / prepare (push) Has been cancelled
123 lines
3.9 KiB
YAML
123 lines
3.9 KiB
YAML
name: Plugin Library CI
|
||
|
||
on:
|
||
push:
|
||
branches: [master, main]
|
||
workflow_dispatch:
|
||
|
||
env:
|
||
SERVER_HOST: ${{ vars.SERVER_HOST }}
|
||
AuthToken: ${{ vars.AUTH_TOKEN }}
|
||
# 定义本地缓存路径:按仓库+Commit ID 组织,避免冲突
|
||
CACHE_PATH: /srv/ci-cache/${{ github.repository }}/${{ github.sha }}
|
||
|
||
jobs:
|
||
# ========== 阶段1:一次性准备代码包 ==========
|
||
prepare:
|
||
runs-on: dev
|
||
container:
|
||
image: node:18-alpine
|
||
steps:
|
||
- name: Install Tools
|
||
run: apk add --no-cache git tar gzip
|
||
|
||
- name: Checkout Repository
|
||
uses: http://106.52.62.106:3000/unity-registry/checkout@v4
|
||
with:
|
||
fetch-depth: 1
|
||
single-branch: true
|
||
|
||
- name: Pack Code to /srv
|
||
run: |
|
||
# 创建目录结构(按仓库和 Commit 分层,防止冲突)
|
||
mkdir -p ${{ env.CACHE_PATH }}
|
||
|
||
# 打包当前工作区到 /srv(排除 .git 节省空间)
|
||
tar czf ${{ env.CACHE_PATH }}/source.tar.gz --exclude='.git' -C ${{ github.workspace }} .
|
||
|
||
echo "✅ 代码已打包到: ${{ env.CACHE_PATH }}/source.tar.gz"
|
||
ls -lh ${{ env.CACHE_PATH }}/source.tar.gz
|
||
|
||
# ========== 阶段2:并行发布(直接从 /srv 加载) ==========
|
||
publish:
|
||
needs: prepare
|
||
runs-on: dev
|
||
container:
|
||
image: node:18-alpine
|
||
strategy:
|
||
fail-fast: false
|
||
max-parallel: 2
|
||
matrix:
|
||
module:
|
||
- 00.StaryEvo
|
||
- 00.StaryEvoTools
|
||
- 00.BuildOriginality
|
||
- 00.ARMazTools
|
||
- 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:
|
||
# 关键优化:从本地 /srv 解压,无需任何网络操作
|
||
- name: Extract Source from /srv
|
||
run: |
|
||
echo "📦 从本地缓存解压: ${{ env.CACHE_PATH }}/source.tar.gz"
|
||
|
||
# 直接解压到 Gitea 默认工作目录(通常是 /workspace)
|
||
mkdir -p ${{ github.workspace }}
|
||
tar xzf ${{ env.CACHE_PATH }}/source.tar.gz -C ${{ github.workspace }}
|
||
|
||
# 验证文件存在(调试用,稳定后可删除)
|
||
ls -la ${{ github.workspace }}/Assets/${{ matrix.module }}/package.json
|
||
|
||
- 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
|
||
node -v
|
||
|
||
- name: Publish ${{ matrix.module }}
|
||
working-directory: ${{ github.workspace }}/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
|
||
|
||
# 发布(失败不阻断其他任务)
|
||
npm publish || echo "⚠️ 发布失败,继续执行"
|
||
|
||
echo "✅ ${{ matrix.module }} 处理完成"
|
||
|
||
- name: Job Complete
|
||
if: always()
|
||
run: echo "======== ${{ matrix.module }} 发布 Job 结束 ========"
|
||
|
||
# ========== 阶段3:清理(可选但推荐) ==========
|
||
cleanup:
|
||
needs: publish
|
||
runs-on: dev
|
||
if: always() # 即使发布失败也清理,防止磁盘堆积
|
||
container:
|
||
image: alpine:latest
|
||
steps:
|
||
- name: Remove Local Cache
|
||
run: |
|
||
echo "🧹 清理临时文件: ${{ env.CACHE_PATH }}"
|
||
rm -rf ${{ env.CACHE_PATH }}
|
||
# 如果上层目录为空,也一并删除
|
||
rmdir $(dirname ${{ env.CACHE_PATH }}) 2>/dev/null || true
|
||
echo "✅ 清理完成" |