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

如何为prod、dev分支分别配置Self Hosted Runner实现GitHub Actions自动部署

不同分支绑定独立Self Hosted Runner实现方案

1. 为两个自托管Runner配置专属自定义标签

标签是绑定Workflow和Runner的核心标识,你可以任选部署时配置或GitHub后台配置两种方式:

  • 部署新Runner时直接指定标签
    运行配置命令时新增--labels参数传入自定义标签即可,示例如下:
    # 给dev环境的Runner配置专属标签
    ./config.sh --url <你的GitHub仓库地址> --token <Runner注册token> --labels dev-deploy-runner
    # 给prod环境的Runner配置专属标签
    ./config.sh --url <你的GitHub仓库地址> --token <Runner注册token> --labels prod-deploy-runner
    
  • 已部署完成的Runner可直接在后台修改标签
    进入对应GitHub仓库的「Settings」→「Actions」→「Runners」页面,点击目标Runner进入详情页,在Labels模块直接添加/修改对应专属标签即可。

2. 修改对应分支的Workflow配置指定Runner

分别修改dev、prod分支的GitHub Actions YAML配置,将runs-on字段指定为对应Runner的标签组合即可:

# dev分支的配置文件示例
name: Dev环境自动部署
on:
  push:
    branches: [ dev ] # 仅触发dev分支推送
jobs:
  deploy-to-dev:
    # 这里指定匹配自托管+dev专属标签的Runner
    runs-on: [self-hosted, dev-deploy-runner]
    steps:
      # 你原有部署逻辑保持不变
      - uses: actions/checkout@v4
      # ... 其余部署步骤

prod分支的配置仅需要把runs-on中的标签替换为prod-deploy-runner,同时触发分支改为prod即可。

3. 可选校验配置

你可以在Workflow中新增校验步骤,避免标签配置错误导致的跨环境部署问题:

steps:
  - name: 校验Runner与分支匹配关系
    run: |
      if [[ "${{ github.ref }}" == "refs/heads/dev" && ! "${{ runner.labels }}" =~ "dev-deploy-runner" ]]; then
        echo "错误:dev分支不能使用非dev环境Runner"
        exit 1
      fi
      if [[ "${{ github.ref }}" == "refs/heads/prod" && ! "${{ runner.labels }}" =~ "prod-deploy-runner" ]]; then
        echo "错误:prod分支不能使用非prod环境Runner"
        exit 1
      fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:36:03