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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 23:27:24