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

如何在.gitlab-ci.yml文件中排除指定Runner处理作业

Solution to Exclude Specific Runners for GitLab CI Job

直接来说,GitLab CI 本身没有提供直接的「排除指定 Runner」的配置项,但我们可以利用预定义变量和规则(rules)来实现你想要的效果——让作业仅被无标签的 Runner C、D 处理,同时排除有标签的 A、B。

Step-by-Step Implementation

假设 Runner A 的标签是 runner-a,Runner B 的标签是 runner-b(请替换成你实际给这两个 Runner 设置的标签名称),你可以修改 build 作业的配置如下:

build:
  image: nexus.ngidev.com:5000/system/jdk8
  stage: build
  script:
    - mvn clean package
  artifacts:
    paths:
      - target/*.jar
      - target/lib
  rules:
    # 排除带有 runner-a 或 runner-b 标签的 Runner
    - if: '$RUNNER_TAGS =~ /runner-a|runner-b/'
      when: never
    # 允许其他所有 Runner 执行该作业
    - when: always

How It Works

  • $RUNNER_TAGS 是 GitLab CI 的预定义变量,它以逗号分隔的字符串形式存储当前 Runner 的所有标签。
  • 正则表达式 /runner-a|runner-b/ 会匹配任何包含 runner-a 或 runner-b 标签的 Runner,规则里的 when: never 会让这类 Runner 直接跳过该作业。
  • 最后一条规则 when: always 确保没有上述标签的 Runner(也就是你的 C、D)可以正常接收并随机执行该作业,完全符合你「随机选择可用 Runner 但排除 A、B」的需求。

Notes

  1. 请务必将 runner-a 和 runner-b 替换为你实际给 Runner A、B 设置的标签名称,否则规则不会生效。
  2. 如果后续你给 C、D 添加了标签,只要这些标签不在排除列表里,作业依然会正常分配给它们。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:59:09