如何共享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包发布,简化工作流步骤:
- 在
my-username/my-repo中初始化npm项目,配置package.json:
{ "name": "my-shared-script", "version": "1.0.0", "main": "my-script.js", "bin": "./my-script.js" }
- 发布到公开/私有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
相关产品推荐
相关产品推荐

