首页/开发/CI/CD 与发布速查/GitHub Actions 自托管运行器
工具链要点63 条

GitHub Actions 自托管运行器

在内网或自有硬件上执行作业:注册 runner 后按标签调度,适合需要私网访问、特定硬件或大缓存的任务。

CI/CD 与发布速查开发更新于 2026-10-13

自托管运行器是什么

在内网或自有硬件上执行作业:注册 runner 后由 GitHub 按标签调度,适合需要私网访问、特定硬件(GPU)或大缓存的任务。runner 可注册在仓库、组织或企业层级,层级越高复用范围越大;临时机器可用 --ephemeral 模式做到一个作业一销毁,集群化可用 Actions Runner Controller 弹性伸缩。托管 runner 的弹性由 GitHub 提供,自托管把控制权与维护责任一起拿走:网络路径、工具链版本与缓存策略都能自己决定。

基本信息

调度方式runs-on: [self-hosted, linux, x64] 按标签匹配
注册层级仓库 / 组织 / 企业,决定复用范围
弹性方案--ephemeral 一次性 runner;ARC 控制器自动扩缩
工具链自备工具链与缓存,托管环境每次是干净实例
维护责任补丁、隔离、监控与扩容由自己负责
安全边界公开仓库不可信 PR 会在你控制的环境里执行代码

典型使用场景

  • 私网依赖:构建需要访问内网制品库、数据库或私有集群
  • 特殊硬件:GPU、大内存或特定架构机器上跑训练与构建
  • 大缓存场景:依赖与编译缓存留在本地磁盘,省去每次拉取
  • 合规限制:代码与构建产物不出公司网络
  • 多团队共享:组织级 runner 集中服务多条流水线,按标签划分用途
  • 重型流水线:托管 runner 时长费用高时,自建更划算

指定运行器

指定运行器
jobs:
  build:
    runs-on: [self-hosted, linux, x64]   # 按标签匹配自建运行器
    steps:
      - uses: actions/checkout@v4
      - run: make build   # 工具链需预装或由镜像提供

自管与托管对比

维度自托管运行器说明
网络可直连内网资源托管 runner 默认在公网侧
硬件可定制 GPU 与架构托管机型选择有限
维护自行补丁与清理包含监控、隔离与扩容
隔离需自建方案并行作业可能互相污染
公开仓库慎用自托管运行器:不可信 PR 的代码会在你控制的环境里执行,可能窃取凭据或植入后门。
--ephemeral 一次性 runner 能降低并行作业间的污染:作业结束即销毁,配合自动扩缩的集群更易维护。
迁移从小范围开始:先把一条对私网依赖最深的流水线迁到自托管,验证稳定后再扩大共享范围。

易错点

  • 运行器环境不隔离:并行作业互相污染缓存与工作目录
  • 镜像长期不更新:缺补丁且工具链悄悄漂移,构建结果不可复现
  • 注册令牌泄露进日志或仓库:按凭据事件处置并及时轮换
  • 公开仓库用自托管:不可信 PR 直接在你的环境里执行
  • 把自托管当省钱捷径:机器与人力总成本常高于托管,先算总账再迁移

数据来源与参考

  • GitHub Docs《About self-hosted runners》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌