自托管运行器是什么
在内网或自有硬件上执行作业:注册 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 能降低并行作业间的污染:作业结束即销毁,配合自动扩缩的集群更易维护。
迁移从小范围开始:先把一条对私网依赖最深的流水线迁到自托管,验证稳定后再扩大共享范围。