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

如何在GitHub Actions中排除特定标签的自托管运行器?

解决方案:排除指定标签的自托管运行器选择

GitHub Actions本身不支持直接的标签排除语法,但可以通过以下两种方式实现你需要的「排除xsmall,选择其他带devops标签的自托管运行器」需求:

方法1:用矩阵策略实现OR逻辑

通过矩阵定义多组合法的标签集合,每个集合对应一组AND条件,作业会自动选择满足任意一组条件的运行器,间接实现OR逻辑。

示例Workflow配置:

jobs:
  your-job-name:
    runs-on: ${{ matrix.runner-labels }}
    strategy:
      matrix:
        runner-labels:
          - [self-hosted, devops, small]
          - [self-hosted, devops, large]
          - [self-hosted, devops, xlarge]
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      # 后续作业步骤...

注:矩阵会生成多个作业实例,但GitHub会优先选择第一个可用的运行器执行,不会同时触发多个实例(除非手动设置fail-fast: false)。

方法2:用运行器组集中管理

在GitHub组织或仓库层面创建专属运行器组,只将带small/large/xlarge+devops标签的运行器加入该组,排除xsmall运行器。之后在Workflow中指定使用该组:

示例Workflow配置:

jobs:
  your-job-name:
    runs-on:
      group: devops-non-xsmall-group # 替换为你创建的组名
      labels: [self-hosted, devops]
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      # 后续作业步骤...

这种方式更适合长期固定的运行器选择规则,无需在每个Workflow中重复定义矩阵逻辑。

两种方案对比

  • 矩阵策略:无需改动运行器配置,灵活适配单一Workflow的特殊需求;
  • 运行器组:管理更集中,适合多个Workflow共享同一运行器选择规则的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:02:32