Skip to content

Commit d500cae

Browse files
committed
feat: 添加 GitHub Actions 工作流以自动发布 n8n-nodes-mineru 至 npm,并将版本更新至 0.1.8,修正仓库链接
1 parent f3b503f commit d500cae

File tree

2 files changed

+85
-2
lines changed

2 files changed

+85
-2
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# 工作流名称:将 n8n-nodes-mineru 包发布到 npm(当推送到 main 分支时)
2+
name: Publish n8n-nodes-mineru to npm (on main)
3+
4+
# 触发条件:当推送到 main 分支且指定路径下的文件发生变化时
5+
on:
6+
push:
7+
branches: [ main ] # 仅在 main 分支触发
8+
paths:
9+
- 'n8n-nodes-mineru/**' # n8n-nodes-mineru 目录下的任何文件变化
10+
- '.github/workflows/publish-n8n-nodes-mineru.yml' # 工作流文件本身的变化
11+
12+
# 权限设置:读取仓库内容和写入 ID 令牌(用于 OIDC 认证)
13+
permissions:
14+
contents: read # 读取仓库内容的权限
15+
id-token: write # 写入 ID 令牌的权限(用于 npm 发布的 OIDC 认证)
16+
17+
# 并发控制:确保同一分支的发布任务不会并发执行
18+
concurrency:
19+
group: publish-n8n-nodes-mineru-${{ github.ref }} # 使用分支引用作为并发组标识
20+
cancel-in-progress: true # 如果有新的任务,取消正在进行的任务
21+
22+
# 任务定义
23+
jobs:
24+
release: # 发布任务
25+
runs-on: ubuntu-latest # 运行环境:最新版 Ubuntu
26+
timeout-minutes: 15 # 任务超时时间:15分钟
27+
defaults:
28+
run:
29+
working-directory: n8n-nodes-mineru # 默认工作目录设置为 n8n-nodes-mineru
30+
31+
steps:
32+
# 步骤1:检出代码
33+
- name: Checkout
34+
uses: actions/checkout@v4 # 使用官方检出动作的 v4 版本
35+
36+
# 步骤2:设置 Node.js 环境
37+
- name: Setup Node
38+
uses: actions/setup-node@v4 # 使用官方 Node.js 设置动作的 v4 版本
39+
with:
40+
node-version: 20 # 使用 Node.js 20 版本
41+
registry-url: 'https://registry.npmjs.org' # 设置 npm 注册表 URL
42+
cache: 'npm' # 启用 npm 缓存
43+
cache-dependency-path: n8n-nodes-mineru/package-lock.json # 缓存依赖文件路径
44+
45+
# 步骤3:安装依赖
46+
- name: Install deps
47+
run: npm ci || npm i # 优先使用 npm ci(更快、更可靠),失败时回退到 npm i
48+
49+
# 步骤4:构建项目(健全性检查)
50+
- name: Build (sanity)
51+
run: npm run build --if-present # 如果存在 build 脚本则执行构建
52+
53+
# 步骤5:检查是否需要发布
54+
- name: Check if publish needed
55+
id: need # 设置步骤 ID,供后续步骤引用
56+
run: |
57+
# 从 package.json 中获取包名和版本
58+
PKG_NAME=$(node -p "require('./package.json').name")
59+
PKG_VER=$(node -p "require('./package.json').version")
60+
echo "package=$PKG_NAME version=$PKG_VER"
61+
62+
# 获取 npm 上已发布的最新版本(如果不存在则为空)
63+
PUBLISHED_VER=$(npm view "$PKG_NAME@latest" version || true)
64+
echo "published=$PUBLISHED_VER"
65+
66+
# 比较版本,决定是否需要发布
67+
if [ "$PKG_VER" = "$PUBLISHED_VER" ]; then
68+
echo "should_publish=false" >> $GITHUB_OUTPUT # 版本相同,不需要发布
69+
else
70+
echo "should_publish=true" >> $GITHUB_OUTPUT # 版本不同,需要发布
71+
fi
72+
73+
# 步骤6:发布到 npm(使用 OIDC 认证和来源证明)
74+
- name: Publish with provenance (OIDC)
75+
if: steps.need.outputs.should_publish == 'true' # 仅在需要发布时执行
76+
env:
77+
NPM_CONFIG_PROVENANCE: true # 启用来源证明配置
78+
run: npm publish --provenance --access public # 发布包,启用来源证明,设置为公开访问
79+
80+
# 步骤7:跳过发布(版本未变化)
81+
- name: Skip (version unchanged)
82+
if: steps.need.outputs.should_publish != 'true' # 仅在不需要发布时执行
83+
run: echo "Version already on npm, skip." # 输出跳过信息

n8n-nodes-mineru/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "n8n-nodes-mineru",
3-
"version": "0.1.7",
3+
"version": "0.1.8",
44
"description": "Free and comprehensive document parsing capabilities",
55
"keywords": [
66
"n8n-community-node-package"
@@ -13,7 +13,7 @@
1313
},
1414
"repository": {
1515
"type": "git",
16-
"url": "https://github.com/opendatalab/awsome-mineru.git"
16+
"url": "https://github.com/opendatalab/awesome-mineru.git"
1717
},
1818
"engines": {
1919
"node": ">=20.15"

0 commit comments

Comments
 (0)