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

如何在GitHub共享Action中获取调用方仓库的全名(含所有者)

在GitHub共享Action中获取调用方仓库全名的方法

当然可以获取调用该Action的仓库全名(包含所有者),主要有两种实现方式,对应不同的调用场景:

1. 直接调用共享Action(跨仓库引用)

如果是直接通过uses: owner/called@main这种方式调用其他仓库的共享Action,无需额外配置——因为共享Action会在调用方的工作流环境中运行,GitHub内置的GITHUB_REPOSITORY环境变量直接就是调用方的仓库全名(比如你的例子里的owner/caller)。

修改共享Action的action.yml即可实现输出:

runs:
  using: "composite"
  steps:         
    - name: 输出调用方仓库全名
      shell: bash
      run: |
        echo "调用方仓库全名:${GITHUB_REPOSITORY}"

2. 通过复用工作流间接调用共享Action(如你的示例场景)

你的例子中,调用方仓库先拉取了共享仓库的代码,再调用其中的复用工作流。这种场景下,复用工作流默认会继承调用方的环境变量,所以共享Action依然可以直接用GITHUB_REPOSITORY拿到调用方仓库名。

如果遇到环境变量未正常传递的特殊情况,也可以通过显式传递参数的方式实现:

  • 第一步:在调用方的action1.yml中,调用复用工作流时传入当前仓库名
    - name: 使用复用工作流
      uses: ./shared-workflows/.github/workflows/shared
      with:
        caller_repo: ${{ github.repository }}
    
  • 第二步:在共享仓库的复用工作流shared.yml中定义输入参数
    on:
      workflow_call:
        inputs:
          caller_repo:
            type: string
            required: true
    
  • 第三步:在复用工作流中调用共享Action时传递该参数
    steps:
      - name: 调用共享Action
        uses: ./path/to/action.yml
        with:
          caller_repo: ${{ inputs.caller_repo }}
    
  • 第四步:在共享Action的action.yml中接收参数并输出
    inputs:
      caller_repo:
        type: string
        required: true
    
    runs:
      using: "composite"
      steps:         
        - name: 输出调用方仓库全名
          shell: bash
          run: |
            echo "调用方仓库全名:${{ inputs.caller_repo }}"
    

核心总结

绝大多数常规场景下,直接使用内置环境变量${GITHUB_REPOSITORY}就能满足需求,因为共享Action的运行上下文是属于调用方仓库的。只有在工作流需要环境隔离等特殊场景时,才需要通过参数传递的方式手动传递仓库名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:20:03