You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何共享Node脚本并在共享GitHub工作流中运行

共享GitHub工作流中的Node脚本解决方案

核心问题说明

调用共享工作流时,actions/checkout@v4默认检出的是调用方仓库的代码,而非存放共享工作流的仓库,因此无法直接访问my-script.js,需要额外处理来获取该脚本文件。

具体实现方案

方案一:额外检出共享工作流所在仓库

修改共享工作流文件,添加步骤检出存放my-script.js的仓库,指定独立目录避免覆盖调用方代码:

# my-username/my-repo/.github/workflows/my-workflow.yml
on:
  workflow_call:

jobs:
  my-job:
    runs-on: ubuntu-latest
    steps:
      - name: 检出调用方仓库(无需调用方代码可移除)
        uses: actions/checkout@v4
      
      - name: 检出存放共享脚本的仓库
        uses: actions/checkout@v4
        with:
          repository: my-username/my-repo
          path: shared-assets  # 指定脚本仓库的检出目录
      
      - uses: actions/setup-node@v4
      - run: npm install my-module
      - run: node shared-assets/my-script.js  # 从指定目录执行脚本

方案二:将脚本打包为npm包(推荐复用场景)

若脚本需长期复用,可将其封装为npm包发布,简化工作流步骤:

  1. 在my-username/my-repo中初始化npm项目,配置package.json:
{
  "name": "my-shared-script",
  "version": "1.0.0",
  "main": "my-script.js",
  "bin": "./my-script.js"
}
  1. 发布到公开/私有npm仓库后,在共享工作流中直接安装运行:
# my-username/my-repo/.github/workflows/my-workflow.yml
on:
  workflow_call:

jobs:
  my-job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-node@v4
      - run: npm install -g my-shared-script
      - run: my-shared-script

私有仓库注意事项

如果存放共享脚本的仓库是私有仓库,需在调用方仓库的Secrets中配置具备该私有仓库读取权限的个人访问令牌(GH_PAT),并在检出步骤中传入:

- name: 检出私有共享脚本仓库
  uses: actions/checkout@v4
  with:
    repository: my-username/my-repo
    path: shared-assets
    token: ${{ secrets.GH_PAT }}

内容的提问来源于stack exchange,提问作者Valentin Vignal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:52:36