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

如何将GitHub Actions上游工作流的提交消息传递给下游触发的工作流并同步运行名称?

如何将GitHub Actions上游工作流的提交消息传递给下游触发的工作流并同步运行名称?

当然可以实现!我来一步步教你怎么把上游infra工作流的提交消息传递给下游build工作流,让两者的运行名称保持一致,解决你现在build运行名称只是单调“build”的问题。

核心思路

当build被workflow_run事件触发时,GitHub会把上游infra工作流的所有运行信息都放到github.event.workflow_run上下文中,其中就包含了infra的运行名称(也就是你说的提交消息)。我们只需要拿到这个名称,再调用GitHub的API修改当前build工作流的运行名称就行。

具体配置步骤

1. 修改build工作流文件

把你的build.yml改成下面这样,重点是新增一个同步运行名称的job:

name: build

on:
  workflow_run:
    workflows: [ infra ]
    types: [ completed ]
    branches: [ main ]

jobs:
  sync-run-name:
    runs-on: ubuntu-latest
    # 只在infra运行成功时执行,符合你“成功的infra触发build”的需求
    if: github.event.workflow_run.conclusion == 'success'
    steps:
      - name: 提取上游infra的运行名称
        run: |
          # 从上下文里拿到上游工作流的名称(也就是提交消息)
          echo "UPSTREAM_NAME=${{ github.event.workflow_run.name }}" >> $GITHUB_ENV
      
      - name: 修改当前build的运行名称
        uses: actions/github-script@v6
        with:
          script: |
            # 调用GitHub API更新工作流运行名称
            github.rest.actions.updateWorkflowRun({
              owner: context.repo.owner,
              repo: context.repo.repo,
              run_id: context.runId,
              name: "${{ env.UPSTREAM_NAME }}"
            })
          # 默认的GITHUB_TOKEN已经有修改工作流名称的权限,不用额外配置
          github-token: ${{ secrets.GITHUB_TOKEN }}

2. (可选)确保infra的运行名称确实是提交消息

如果你之前是靠GitHub默认行为让infra用提交消息命名,其实可以主动在infra工作流里加一步明确设置,避免后续默认行为变化:

name: infra

on:
  push:
    branches: [ main ]

jobs:
  setup:
    runs-on: ubuntu-latest
    steps:
      - name: 设置运行名称为提交消息
        uses: actions/github-script@v6
        with:
          script: |
            github.rest.actions.updateWorkflowRun({
              owner: context.repo.owner,
              repo: context.repo.repo,
              run_id: context.runId,
              name: "${{ github.event.head_commit.message }}"
            })
          github-token: ${{ secrets.GITHUB_TOKEN }}
      # 你的其他infra步骤...

关键说明

  • 权限问题:默认的GITHUB_TOKEN已经拥有actions:write权限,足够修改工作流的运行名称,不需要额外创建个人访问令牌(PAT)。
  • 触发时机:我们给build的job加了if: github.event.workflow_run.conclusion == 'success',确保只有infra运行成功时才会执行build的任务,完全符合你的需求。
  • 名称同步时机:这个同步步骤会在build工作流启动后立刻执行,用户几乎看不到默认的“build”名称,体验更连贯。

备注:内容来源于stack exchange,提问作者Blair Nangle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:22:58