如何通过workflow_run获取触发依赖工作流的原工作流输入参数
如何在workflow_run触发的依赖工作流中获取原工作流的输入参数
当通过workflow_run触发依赖工作流时,无法直接通过inputs上下文访问原工作流的参数,需要借助GitHub REST API获取原工作流的运行详情,从中提取输入参数。以下是具体实现方案:
步骤1:修改依赖工作流(depend.yml)
添加调用GitHub API的步骤,获取并解析原trigger工作流的输入参数:
name: depend on: workflow_run: workflows: ["trigger"] types: - completed jobs: test: name: test-on-dependent runs-on: ubuntu-latest permissions: actions: read # 必须授予该权限,否则GITHUB_TOKEN无法调用Actions API steps: - name: 获取原工作流输入参数 id: extract-trigger-inputs run: | # 调用GitHub API获取原工作流的运行详情 RUN_DETAILS=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}") # 用jq解析出limit参数的值 LIMIT_VALUE=$(echo "$RUN_DETAILS" | jq -r '.inputs.limit.value') # 将参数存入输出变量,供后续步骤使用 echo "limit=$LIMIT_VALUE" >> $GITHUB_OUTPUT - name: 输出原工作流的limit参数 run: echo "原trigger工作流传入的limit参数是:${{ steps.extract-trigger-inputs.outputs.limit }}"
关键说明
- 权限配置:必须在jobs中声明
permissions: { actions: read },否则默认的GITHUB_TOKEN没有权限访问Actions运行数据。 - API参数:通过
github.event.workflow_run.id拿到原工作流的运行ID,以此为标识调用API获取完整运行信息。 - 数据解析:使用
jq工具解析API返回的JSON结构,精准提取inputs下的目标参数值。
原工作流(trigger.yml)无需修改
保持你原本的workflow_dispatch配置即可,它负责接收输入参数并触发后续依赖流。
内容的提问来源于stack exchange,提问作者Bnaya
相关产品推荐
相关产品推荐

