Skip to content

Commit 57ccbbf

Browse files
committed
ci:更新 GitHub Actions 工作流,简化发布流程,移除多余步骤,添加 npm 和 corepack 的设置,改用新的发布工具。
1 parent 7eff60a commit 57ccbbf

1 file changed

Lines changed: 28 additions & 107 deletions

File tree

.github/workflows/release.yml

Lines changed: 28 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,49 @@
1+
# This action will publish the package to npm and create a GitHub release.
12
name: Release
23

34
on:
5+
# Run `npm run bump` to bump the version and create a git tag.
46
push:
57
tags:
6-
- 'v*'
8+
- "v*"
9+
710
workflow_dispatch:
8-
inputs:
9-
version:
10-
description: '发布版本 (例如: 1.0.0)'
11-
required: true
12-
type: string
11+
12+
permissions:
13+
contents: write
14+
id-token: write
1315

1416
jobs:
15-
release:
17+
publish:
1618
runs-on: ubuntu-latest
17-
permissions:
18-
contents: write
19-
packages: write
20-
id-token: write
21-
19+
environment: npm
2220
steps:
23-
- name: 检出代码
21+
- name: Checkout
2422
uses: actions/checkout@v4
25-
with:
26-
fetch-depth: 0
2723

28-
- name: 设置 Node.js
24+
- name: Setup Node.js
2925
uses: actions/setup-node@v4
3026
with:
3127
node-version: 22
32-
registry-url: 'https://registry.npmjs.org'
33-
34-
- name: 安装 pnpm
35-
uses: pnpm/action-setup@v4
36-
with:
37-
version: 10
38-
39-
- name: 获取 pnpm store 目录
40-
shell: bash
41-
run: |
42-
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
43-
44-
- name: 设置 pnpm 缓存
45-
uses: actions/cache@v4
46-
with:
47-
path: ${{ env.STORE_PATH }}
48-
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
49-
restore-keys: |
50-
${{ runner.os }}-pnpm-store-
5128

52-
- name: 安装依赖
29+
# Update npm to the latest version to enable OIDC
30+
# Use corepack to install pnpm
31+
- name: Setup Package Managers
5332
run: |
54-
# 尝试使用 frozen lockfile,如果失败则更新 lockfile
55-
pnpm install --frozen-lockfile || {
56-
echo "⚠️ Lockfile 不匹配,正在更新..."
57-
pnpm install --no-frozen-lockfile
58-
}
33+
npm install -g npm@latest
34+
npm --version
35+
npm install -g corepack@latest --force
36+
corepack enable
5937
60-
- name: 格式检查
61-
run: pnpm run lint
38+
- name: Install Dependencies
39+
run: pnpm install
6240

63-
- name: 构建项目
64-
run: pnpm run build
65-
66-
- name: 获取版本号
67-
id: get_version
68-
run: |
69-
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
70-
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
71-
echo "tag_name=v${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
72-
else
73-
echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
74-
echo "tag_name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
75-
fi
76-
77-
- name: 更新版本号 (手动触发时)
78-
if: github.event_name == 'workflow_dispatch'
79-
run: |
80-
npm version ${{ steps.get_version.outputs.version }} --no-git-tag-version
81-
git config --local user.email "action@github.com"
82-
git config --local user.name "GitHub Action"
83-
git add package.json
84-
git commit -m "chore: bump version to ${{ steps.get_version.outputs.version }}"
85-
git tag ${{ steps.get_version.outputs.tag_name }}
86-
git push origin HEAD:${{ github.ref_name }}
87-
git push origin ${{ steps.get_version.outputs.tag_name }}
88-
89-
- name: 生成变更日志
90-
id: changelog
91-
run: |
92-
# 获取上一个标签
93-
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
94-
95-
if [ -z "$PREV_TAG" ]; then
96-
# 如果没有上一个标签,获取所有提交
97-
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
98-
else
99-
# 获取两个标签之间的提交
100-
CHANGELOG=$(git log ${PREV_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges)
101-
fi
102-
103-
# 保存到文件以避免特殊字符问题
104-
echo "$CHANGELOG" > changelog.txt
105-
echo "changelog_file=changelog.txt" >> $GITHUB_OUTPUT
106-
107-
- name: 发布到 npm
108-
run: pnpm publish --no-git-checks
109-
env:
110-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
111-
112-
- name: 创建 GitHub Release
113-
uses: actions/create-release@v1
114-
env:
115-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41+
- name: Publish
42+
uses: JS-DevTools/npm-publish@v3
11643
with:
117-
tag_name: ${{ steps.get_version.outputs.tag_name }}
118-
release_name: Release ${{ steps.get_version.outputs.tag_name }}
119-
body_path: ${{ steps.changelog.outputs.changelog_file }}
120-
draft: false
121-
prerelease: false
44+
token: empty
12245

123-
- name: 通知发布成功
124-
run: |
125-
echo "🎉 发布成功!"
126-
echo "📦 版本: ${{ steps.get_version.outputs.version }}"
127-
echo "🏷️ 标签: ${{ steps.get_version.outputs.tag_name }}"
128-
echo "📝 npm: https://www.npmjs.com/package/winjs-plugin-template"
46+
- name: Create GitHub Release
47+
uses: ncipollo/release-action@v1
48+
with:
49+
generateReleaseNotes: "true"

0 commit comments

Comments
 (0)