Skip to content

chore: 移除 GitHub Actions 工作流中的 npm 缓存配置,以简化工作流 #2

chore: 移除 GitHub Actions 工作流中的 npm 缓存配置,以简化工作流

chore: 移除 GitHub Actions 工作流中的 npm 缓存配置,以简化工作流 #2

# 工作流名称:将 n8n-nodes-mineru 包发布到 npm(当推送到 main 分支时)
name: Publish n8n-nodes-mineru to npm (on main)
# 触发条件:当推送到 main 分支且指定路径下的文件发生变化时
on:
push:
branches: [ main ] # 仅在 main 分支触发
paths:
- 'n8n-nodes-mineru/**' # n8n-nodes-mineru 目录下的任何文件变化
- '.github/workflows/publish-n8n-nodes-mineru.yml' # 工作流文件本身的变化
# 权限设置:读取仓库内容和写入 ID 令牌(用于 OIDC 认证)
permissions:
contents: read # 读取仓库内容的权限
id-token: write # 写入 ID 令牌的权限(用于 npm 发布的 OIDC 认证)
# 并发控制:确保同一分支的发布任务不会并发执行
concurrency:
group: publish-n8n-nodes-mineru-${{ github.ref }} # 使用分支引用作为并发组标识
cancel-in-progress: true # 如果有新的任务,取消正在进行的任务
# 任务定义
jobs:
release: # 发布任务
runs-on: ubuntu-latest # 运行环境:最新版 Ubuntu
timeout-minutes: 15 # 任务超时时间:15分钟
defaults:
run:
working-directory: n8n-nodes-mineru # 默认工作目录设置为 n8n-nodes-mineru
steps:
# 步骤1:检出代码
- name: Checkout
uses: actions/checkout@v4 # 使用官方检出动作的 v4 版本
# 步骤2:设置 Node.js 环境
- name: Setup Node
uses: actions/setup-node@v4 # 使用官方 Node.js 设置动作的 v4 版本
with:
node-version: 20 # 使用 Node.js 20 版本
registry-url: 'https://registry.npmjs.org' # 设置 npm 注册表 URL
# 步骤3:安装依赖
- name: Install deps
run: npm ci || npm i # 优先使用 npm ci(更快、更可靠),失败时回退到 npm i
# 步骤4:构建项目(健全性检查)
- name: Build (sanity)
run: npm run build --if-present # 如果存在 build 脚本则执行构建
# 步骤5:检查是否需要发布
- name: Check if publish needed
id: need # 设置步骤 ID,供后续步骤引用
run: |
# 从 package.json 中获取包名和版本
PKG_NAME=$(node -p "require('./package.json').name")
PKG_VER=$(node -p "require('./package.json').version")
echo "package=$PKG_NAME version=$PKG_VER"
# 获取 npm 上已发布的最新版本(如果不存在则为空)
PUBLISHED_VER=$(npm view "$PKG_NAME@latest" version || true)
echo "published=$PUBLISHED_VER"
# 比较版本,决定是否需要发布
if [ "$PKG_VER" = "$PUBLISHED_VER" ]; then
echo "should_publish=false" >> $GITHUB_OUTPUT # 版本相同,不需要发布
else
echo "should_publish=true" >> $GITHUB_OUTPUT # 版本不同,需要发布
fi
# 步骤6:发布到 npm(使用 OIDC 认证和来源证明)
- name: Publish with provenance (OIDC)
if: steps.need.outputs.should_publish == 'true' # 仅在需要发布时执行
env:
NPM_CONFIG_PROVENANCE: true # 启用来源证明配置
run: npm publish --provenance --access public # 发布包,启用来源证明,设置为公开访问
# 步骤7:跳过发布(版本未变化)
- name: Skip (version unchanged)
if: steps.need.outputs.should_publish != 'true' # 仅在不需要发布时执行
run: echo "Version already on npm, skip." # 输出跳过信息