chore(ci): 重构发布流程为手动触发方式并添加behavior-tree包发布支持

This commit is contained in:
YHH
2025-10-27 09:47:59 +08:00
parent d2ad295b48
commit 4cee396ea9
8 changed files with 387 additions and 160 deletions

View File

@@ -73,7 +73,8 @@ jobs:
path: |
packages/core/bin
packages/editor-core/dist
key: ${{ runner.os }}-ts-build-${{ hashFiles('packages/core/src/**', 'packages/editor-core/src/**') }}
packages/behavior-tree/bin
key: ${{ runner.os }}-ts-build-${{ hashFiles('packages/core/src/**', 'packages/editor-core/src/**', 'packages/behavior-tree/src/**') }}
restore-keys: |
${{ runner.os }}-ts-build-
@@ -85,6 +86,11 @@ jobs:
cd packages/editor-core
npm run build
- name: Build behavior-tree package
run: |
cd packages/behavior-tree
npm run build
- name: Build Tauri app
uses: tauri-apps/tauri-action@v0.5
env:

View File

@@ -1,30 +1,34 @@
name: Release
name: Release NPM Packages
on:
workflow_dispatch:
inputs:
dry_run:
description: 'Dry run (仅预览,不实际发布)'
type: boolean
default: false
required: false
package:
description: '选择要发布的包'
required: true
type: choice
options:
- core
- behavior-tree
version:
description: '版本号 (例如: 2.2.9 或 1.0.1)'
required: true
type: string
permissions:
contents: write
issues: write
pull-requests: write
id-token: write
jobs:
release-core:
name: Release Core Package
release-package:
name: Release ${{ github.event.inputs.package }} Package
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
@@ -37,32 +41,54 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Run tests
- name: Build core package (if needed)
if: ${{ github.event.inputs.package == 'behavior-tree' }}
run: |
cd packages/core
npm run build
- name: Run tests
run: |
cd packages/${{ github.event.inputs.package }}
npm run test:ci
- name: Update version
run: |
cd packages/${{ github.event.inputs.package }}
npm version ${{ github.event.inputs.version }} --no-git-tag-version
- name: Build package
run: |
cd packages/core
cd packages/${{ github.event.inputs.package }}
npm run build:npm
- name: Release (Dry Run)
if: ${{ github.event.inputs.dry_run == 'true' }}
- name: Publish to npm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
cd packages/core
npx semantic-release --dry-run
cd packages/${{ github.event.inputs.package }}/dist
npm publish
- name: Release
if: ${{ github.event.inputs.dry_run != 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
cd packages/core
npx semantic-release
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore(${{ github.event.inputs.package }}): release v${{ github.event.inputs.version }}"
branch: release/${{ github.event.inputs.package }}-v${{ github.event.inputs.version }}
delete-branch: true
title: "chore(${{ github.event.inputs.package }}): Release v${{ github.event.inputs.version }}"
body: |
## 🚀 Release v${{ github.event.inputs.version }}
此 PR 更新 `@esengine/${{ github.event.inputs.package }}` 包的版本号
### 变更
- ✅ 已发布到 npm: [@esengine/${{ github.event.inputs.package }}@${{ github.event.inputs.version }}](https://www.npmjs.com/package/@esengine/${{ github.event.inputs.package }}/v/${{ github.event.inputs.version }})
- ✅ 更新 `packages/${{ github.event.inputs.package }}/package.json` → `${{ github.event.inputs.version }}`
---
*此 PR 由发布工作流自动创建*
labels: |
release
${{ github.event.inputs.package }}
automated pr