如何在所有自托管运行器不可用时默认使用GitHub托管运行器?
实现自托管运行器优先、无可用时自动切换至GitHub托管运行器的方案
你可以通过GitHub Actions内置的运行器匹配逻辑实现这个需求,具体方法如下:
核心配置:使用
runs-on数组指定优先级
将自托管运行器的标识放在数组的第一位,GitHub托管的运行器(如ubuntu-latest、windows-latest)放在第二位。GitHub Actions会按数组顺序查找第一个可用的运行器:当自托管运行器在线时优先选用,所有自托管运行器离线时,自动切换到托管运行器执行作业。示例工作流配置:
jobs: your-job-name: runs-on: [self-hosted, ubuntu-latest] steps: - name: 拉取代码 uses: actions/checkout@v4 # 这里添加你的作业步骤自定义标签的自托管运行器适配
如果你的自托管运行器设置了自定义标签(比如self-hosted-linux),只需将数组中的self-hosted替换为对应标签即可,确保只匹配你指定的自托管集群:runs-on: [self-hosted-linux, ubuntu-latest]跨操作系统的配对配置
若需要针对特定操作系统的自托管和托管运行器配对,比如Windows自托管 fallback 到Windows托管运行器,可以这样配置:runs-on: [self-hosted-windows, windows-latest]
这个方案无需额外的条件判断或复杂脚本,完全依赖GitHub Actions原生的运行器匹配逻辑,简洁可靠。
内容的提问来源于stack exchange,提问作者Diogo Melo
相关产品推荐
相关产品推荐

