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

如何在GitHub Actions中根据标签名触发对应作业

GitHub Actions 标签条件作业配置方案

标签变量引用方式

GitHub Actions 内置的上下文变量 github.ref_name 可直接获取当前触发的引用名称:当触发事件为标签推送时,该变量值为完整标签名;分支推送、PR、手动触发等场景下,该变量值为对应分支名或触发引用名。

条件判断规则配置

你需要将两个作业重命名(同一工作流内不允许重名作业),分别为其添加互斥的if触发条件:

  • Azure专属作业触发条件:仅当触发事件为标签推送、且标签名包含azure时运行
  • 通用作业触发条件:所有不满足上述专属作业条件的场景下运行
    条件判断使用GitHub Actions内置的contains()函数匹配字符串,判断标签是否包含目标关键词。

完整配置示例

name: Build Image

on:
  push:
    # 可选:如果只希望监听标签推送,可移除下方branches配置
    tags:
      - '**'
    branches:
      - '**'
  pull_request:
  workflow_dispatch:

jobs:
  # Azure专属作业
  build-image-azure:
    name: Build Azure Image Job
    runs-on: [ self-hosted ]
    # 触发条件:推送标签+标签包含azure
    if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && contains(github.ref_name, 'azure') }}
    steps:
    - uses: actions/checkout@v4 # 建议升级到官方维护的最新版本

    - name: Run Build Step
      run: |
        ANSIBLE_VERSION=$(cat VERSION)
        docker images
        # 此处可添加azure专属构建逻辑

  # 通用作业
  build-image-general:
    name: Build General Image Job
    runs-on: [ self-hosted ]
    # 触发条件:不满足azure专属作业的所有场景
    if: ${{ ! (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && contains(github.ref_name, 'azure')) }}
    steps:
    - uses: actions/checkout@v4

    - name: Run Build Step
      run: |
        ANSIBLE_VERSION=$(cat VERSION)
        docker images
        # 此处可添加通用构建逻辑

额外说明

  • 条件表达式必须放在${{ }}包裹符内才能被GitHub Actions正确解析
  • 配置中使用startsWith(github.ref, 'refs/tags/')是为了严格限定仅标签推送场景生效,避免分支名包含azure时误触发专属作业
  • 如果需要在手动触发时也能选择运行azure版本,可以给workflow_dispatch增加输入参数,调整对应if条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:36:04