支持 GitHub Actions self-hosted runner scale set #18

Open
opened 2026-09-17 08:14:23 +00:00 by panxiao81 · 0 comments
Owner

背景

部分项目托管在 GitHub,需要复用本项目的 Pod/microVM 执行后端运行 CD。GitHub Actions Runner Scale Set 支持 listener 主动向 GitHub 长轮询,因此不要求 GitHub webhook 访问内网,也不需要额外部署 Cloudflare Tunnel。

该能力应与 Gitea 调度入口解耦:复用相同的 provider、容量管理、回收与观测能力,但使用 GitHub 官方 runner scale-set/JIT 协议接入任务。

目标

  • 支持 GitHub 仓库或组织通过 runs-on 选择动态 self-hosted runner
  • 使用 GitHub Runner Scale Set 的 message session 与 JIT runner config
  • listener 仅建立出站连接,不依赖入站 webhook
  • 每个 job 创建独立的 Pod 或 microVM runner,任务结束后销毁
  • 复用现有 label 到执行环境/provider 的映射及并发容量控制
  • 适用于需要访问 homelab 内部服务的 CD 工作流

认证与安全

  • 优先支持 GitHub App,必要时可先支持细粒度 PAT 完成 PoC
  • runner 使用 ephemeral/JIT 注册,不持久化长期 runner registration token
  • GitHub 凭据由控制面持有,不注入 job 环境
  • 明确私有仓库、fork PR 与 CD secret 的权限边界

验收标准

  • GitHub workflow 可使用指定 scale-set 名称排队并触发动态 runner
  • 无任何公网入站端口或 webhook 时仍可正常领取任务
  • 至少跑通 Pod provider smoke test
  • 至少跑通 microVM provider smoke test
  • job 成功、失败、取消和超时后均能可靠回收 runner
  • controller 重启后可恢复 session,并清理遗留实例
  • README 记录 GitHub App/PAT 权限、安装步骤和 runs-on 示例

非目标

  • 不要求 Gitea 模拟 GitHub scale-set API
  • 不将 GitHub 官方 runner 用于执行 Gitea Actions job;两种控制协议分别接入,共享执行后端
## 背景 部分项目托管在 GitHub,需要复用本项目的 Pod/microVM 执行后端运行 CD。GitHub Actions Runner Scale Set 支持 listener 主动向 GitHub 长轮询,因此不要求 GitHub webhook 访问内网,也不需要额外部署 Cloudflare Tunnel。 该能力应与 Gitea 调度入口解耦:复用相同的 provider、容量管理、回收与观测能力,但使用 GitHub 官方 runner scale-set/JIT 协议接入任务。 ## 目标 - 支持 GitHub 仓库或组织通过 `runs-on` 选择动态 self-hosted runner - 使用 GitHub Runner Scale Set 的 message session 与 JIT runner config - listener 仅建立出站连接,不依赖入站 webhook - 每个 job 创建独立的 Pod 或 microVM runner,任务结束后销毁 - 复用现有 label 到执行环境/provider 的映射及并发容量控制 - 适用于需要访问 homelab 内部服务的 CD 工作流 ## 认证与安全 - 优先支持 GitHub App,必要时可先支持细粒度 PAT 完成 PoC - runner 使用 ephemeral/JIT 注册,不持久化长期 runner registration token - GitHub 凭据由控制面持有,不注入 job 环境 - 明确私有仓库、fork PR 与 CD secret 的权限边界 ## 验收标准 - [ ] GitHub workflow 可使用指定 scale-set 名称排队并触发动态 runner - [ ] 无任何公网入站端口或 webhook 时仍可正常领取任务 - [ ] 至少跑通 Pod provider smoke test - [ ] 至少跑通 microVM provider smoke test - [ ] job 成功、失败、取消和超时后均能可靠回收 runner - [ ] controller 重启后可恢复 session,并清理遗留实例 - [ ] README 记录 GitHub App/PAT 权限、安装步骤和 `runs-on` 示例 ## 非目标 - 不要求 Gitea 模拟 GitHub scale-set API - 不将 GitHub 官方 runner 用于执行 Gitea Actions job;两种控制协议分别接入,共享执行后端
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: panxiao81/gitea-dynamic-runner#18