GitHub Actions中如何检出可复用工作流的仓库
解决可复用工作流检出自身仓库失败的问题
问题原因
从repoA触发repoB的可复用工作流时,默认的GITHUB_TOKEN仅拥有触发仓库(repoA)的访问权限,无权访问同组织的repoB,导致actions/checkout无法找到目标仓库。同时原脚本中执行Python文件的路径也存在错误。
解决方案
1. 配置权限并修正checkout步骤
步骤一:修改repoA的调用工作流,添加权限声明
在调用可复用工作流时,赋予token读取repoB内容的权限:
jobs: test: uses: myorg/repoB/.github/workflows/test.yml@master permissions: contents: read
步骤二:修改repoB的可复用工作流
- 显式指定使用
github.token完成checkout - 修正Python脚本的执行路径(代码被检出到
workflows目录下,需对应调整路径)
name: test on: workflow_call: jobs: test: runs-on: [self-hosted] steps: - name: Checkout repoB uses: actions/checkout@v3 with: repository: myorg/repoB ref: master path: workflows token: ${{ github.token }} - name: Run Python script from repoB run: python workflows/test.py
2. 更灵活的写法(利用工作流上下文)
如果不想硬编码仓库名,可使用GitHub上下文变量github.repository(在可复用工作流中,该变量指向定义工作流的repoB):
name: test on: workflow_call: jobs: test: runs-on: [self-hosted] permissions: contents: read steps: - name: Checkout repoB uses: actions/checkout@v3 with: repository: ${{ github.repository }} ref: ${{ github.ref_name }} path: workflows - name: Run Python script from repoB run: python workflows/test.py
3. 检查组织权限设置(企业版GitHub)
若上述方法无效,需确认组织的Actions权限配置:
- 进入组织设置 →
Actions→General - 在
Workflow permissions区域,确认跨仓库访问权限已开启 - 检查repoB的设置,确保未限制外部工作流的访问
内容的提问来源于stack exchange,提问作者Dibom
相关产品推荐
相关产品推荐

