更新 .gitea/workflows/.gitlab-ci.yml
Some checks failed
Plugin Library CI / prepare (push) Failing after 29m30s
Plugin Library CI / publish (00.ARMazTools) (push) Has been skipped
Plugin Library CI / publish (00.BuildOriginality) (push) Has been skipped
Plugin Library CI / publish (00.StaryEvo) (push) Has been skipped
Plugin Library CI / publish (00.StaryEvoTools) (push) Has been skipped
Plugin Library CI / publish (01.HybridCLR) (push) Has been skipped
Plugin Library CI / publish (02.InformationSave) (push) Has been skipped
Plugin Library CI / publish (03.YooAsset) (push) Has been skipped
Plugin Library CI / publish (04.AudioCore) (push) Has been skipped
Plugin Library CI / publish (05.TableTextConversion) (push) Has been skipped
Plugin Library CI / publish (06.UIFarme) (push) Has been skipped
Plugin Library CI / publish (07.RKTools) (push) Has been skipped
Plugin Library CI / publish (08.UniTask) (push) Has been skipped
Plugin Library CI / publish (09.CodeChecker) (push) Has been skipped
Plugin Library CI / publish (10.StoryEditor) (push) Has been skipped
Plugin Library CI / publish (10.XNode) (push) Has been skipped
Plugin Library CI / publish (11.PointCloudTools) (push) Has been skipped
Plugin Library CI / cleanup (push) Successful in 1s

This commit is contained in:
2026-04-02 22:12:59 +08:00
parent cd72209222
commit 15d4f31fbe

View File

@@ -3,22 +3,50 @@ name: Plugin Library CI
on: on:
push: push:
branches: [master, main] branches: [master, main]
workflow_dispatch: # 支持手动触发 workflow_dispatch:
env: env:
SERVER_HOST: ${{ vars.SERVER_HOST }} SERVER_HOST: ${{ vars.SERVER_HOST }}
AuthToken: ${{ vars.AUTH_TOKEN }} AuthToken: ${{ vars.AUTH_TOKEN }}
# 定义本地缓存路径:按仓库+Commit ID 组织,避免冲突
CACHE_PATH: /srv/ci-cache/${{ github.repository }}/${{ github.sha }}
jobs: jobs:
# 定义所有模块矩阵 # ========== 阶段1一次性准备代码包 ==========
prepare:
runs-on: dev
container:
image: alpine:latest
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: publish:
runs-on: dev # 对应你的 GitLab runner tag needs: prepare
runs-on: dev
container: container:
image: node:18-alpine image: node:18-alpine
strategy: strategy:
fail-fast: false fail-fast: false
max-parallel: 2 # 关键:同时只跑 2 个模块,其余排队 max-parallel: 2
matrix: matrix:
module: module:
- 00.StaryEvo - 00.StaryEvo
@@ -39,15 +67,18 @@ jobs:
- 11.PointCloudTools - 11.PointCloudTools
steps: steps:
#- name: Install Git # 关键优化:从本地 /srv 解压,无需任何网络操作
# run: | - name: Extract Source from /srv
# apk add --no-cache git run: |
# git --version # 验证 echo "📦 从本地缓存解压: ${{ env.CACHE_PATH }}/source.tar.gz"
- name: Checkout
uses: http://106.52.62.106:3000/unity-registry/checkout@v4 # 直接解压到 Gitea 默认工作目录(通常是 /workspace
with: mkdir -p ${{ github.workspace }}
fetch-depth: 1 # 只拉取最新提交,不拉历史 tar xzf ${{ env.CACHE_PATH }}/source.tar.gz -C ${{ github.workspace }}
single-branch: true # 只拉取当前分支
# 验证文件存在(调试用,稳定后可删除)
ls -la ${{ github.workspace }}/Assets/${{ matrix.module }}/package.json
- name: Setup Node.js - name: Setup Node.js
run: | run: |
ln -sf /srv/18-alpine/bin/node /usr/bin/node ln -sf /srv/18-alpine/bin/node /usr/bin/node
@@ -55,11 +86,10 @@ jobs:
node -v node -v
- name: Publish ${{ matrix.module }} - name: Publish ${{ matrix.module }}
working-directory: Assets/${{ matrix.module }} working-directory: ${{ github.workspace }}/Assets/${{ matrix.module }}
run: | run: |
echo "开始发布 ${{ matrix.module }}" echo "🚀 开始发布 ${{ matrix.module }}"
# 获取当前版本
CURRENT_VERSION=$(node -p "require('./package.json').version") CURRENT_VERSION=$(node -p "require('./package.json').version")
echo "当前版本: $CURRENT_VERSION" echo "当前版本: $CURRENT_VERSION"
@@ -67,11 +97,27 @@ jobs:
echo "registry=http://${SERVER_HOST}/npm" > .npmrc echo "registry=http://${SERVER_HOST}/npm" > .npmrc
echo "//${SERVER_HOST}/:_authToken=${AuthToken}" >> .npmrc echo "//${SERVER_HOST}/:_authToken=${AuthToken}" >> .npmrc
# 发布 # 发布(失败不阻断其他任务)
npm publish || echo "发布失败,继续执行" npm publish || echo "⚠️ 发布失败,继续执行"
echo "${{ matrix.module }} 构建完成" echo "${{ matrix.module }} 处理完成"
- name: Complete - name: Job Complete
if: always() if: always()
run: echo "====== ${{ matrix.module }} 发布完成 =========" 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 "✅ 清理完成"