chore: 移除 GitHub Actions 工作流中的 npm 缓存配置,以简化工作流 #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 工作流名称:将 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." # 输出跳过信息 |