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

GitHub Actions workflow_run事件如何动态设置UI工作流显示名称

实现方案

该需求可通过GitHub Actions原生支持的动态运行标题能力实现,无需引入第三方工具,配置方式如下:

  • GitHub Actions 专门提供了顶层run-name字段用于定义每次工作流运行实例的显示标题,字段值支持完整的上下文表达式语法,工作流启动时会自动根据当前运行上下文、事件载荷渲染为对应文本,直接展示在GitHub UI的运行列表、运行详情页。
  • 注意区分两个顶层字段:
    • name:工作流的静态基础名称,展示在仓库的工作流列表页,不会随运行上下文变化
    • run-name:单次运行的动态标题,就是需要修改的UI展示字段

针对当前workflow_run触发场景的配置要点

cd工作流是被release工作流通过workflow_run事件触发的,这时候cd工作流默认上下文中的github.ref_name、github.ref等值指向的是cd工作流监听的master分支,不是触发release的标签,所以不能直接引用这些值,所有上游触发信息都需要从github.event.workflow_run事件载荷中获取:

  • 上游工作流触发时的git ref存放在github.event.workflow_run.ref字段:如果是tag触发,值为refs/tags/标签名;如果是分支触发,值为refs/heads/分支名
  • 可以直接在表达式中用内置字符串函数截取需要的版本/分支名,不需要在作业步骤中额外调用API获取

具体配置修改

1. 优化cd.yml配置

修改后的cd.yml核心配置如下,重点是新增run-name字段,同时修复现有配置中tag触发时checkout版本、构建版本号取值错误的问题:

name: cd
# 新增动态运行名配置:tag触发显示标签名,分支触发显示分支名
run-name: cd ${{ startsWith(github.event.workflow_run.ref, 'refs/tags/') && replace(github.event.workflow_run.ref, 'refs/tags/', '') || replace(github.event.workflow_run.ref, 'refs/heads/', '') }}

on:
  workflow_run:
    workflows: [ "ci release" ]
    types:
      - completed
    branch: [ master ]

jobs:
  deploy:
    name: "deploy to heroku"
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - uses: actions/checkout@v2
        with:
          # 修复原配置tag触发时head_branch为空导致checkout错误的问题
          ref: ${{ github.event.workflow_run.head_sha }} 
      - name: Terraform validate
        run: terraform validate
      - name: Terraform init - apply
        run: |
          cd terraform
          export HEROKU_API_KEY=${{ secrets.HEROKU_API_KEY }} HEROKU_EMAIL=${{ secrets.HEROKU_EMAIL }}
          terraform init -backend-config="conn_str=${{ secrets.TERRAFORM_BE }}"
          # 修复原配置tag触发时版本号取值为空的问题
          terraform apply -var build_version=${{ startsWith(github.event.workflow_run.ref, 'refs/tags/') && replace(github.event.workflow_run.ref, 'refs/tags/', '') || replace(github.event.workflow_run.ref, 'refs/heads/', '') }} --auto-approve

配置完成后,推送v0.0.3标签触发流程时,cd工作流的运行标题就会自动显示为cd v0.0.3,如果是分支触发的release流程,会自动显示为对应的分支名。

2. 可选优化:给release工作流也配置动态标题

如果需要release工作流的运行标题也动态显示对应标签,只要在release.yml顶层新增一行run-name配置即可:

name: ci release
# 新增:动态显示release对应的标签/分支名
run-name: ci release ${{ github.ref_name }}

on:
  push:
    tags:
      - 'v*'
# 其余原有配置保持不变

扩展用法

run-name支持引用所有初始上下文字段,可以根据需要拼接任意信息,比如显示触发人、提交信息等:

# 示例:显示为 cd v0.0.3 触发人:xxx 提交信息:initial layout
run-name: cd ${{ github.ref_name }} 触发人:${{ github.triggering_actor }} 提交信息:${{ github.event.head_commit.message }}

注意:run-name是在工作流初始化阶段渲染的,无法引用作业步骤中生成的变量,所有取值必须来自工作流启动时就已存在的事件、上下文对象。

内容的提问来源于stack exchange,提问作者Alberto Piñón Formoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:24:41