用 Docker 私有化部署 GitHub Actions Runner(Runner Fleet)
内容提要
我整理了 GitHub 自托管 Runner 的经验,开发了开源工具 Runner Fleet,旨在简化 Runner 的管理与维护,提供轻量级 Web 管理界面,支持多种运行模式,帮助用户高效部署和扩容。
关键要点
-
开发了开源工具 Runner Fleet,旨在简化 GitHub 自托管 Runner 的管理与维护。
-
Runner Fleet 提供轻量级 Web 管理界面,支持多种运行模式。
-
目标是将自托管 Runner 的部署、扩容、维护收敛成可复用的流程。
-
自托管 Runner 的管理难点在于长期稳定性,而非简单的启动。
-
多个 Runner 的管理会导致 Token 分散、环境污染和任务混乱等问题。
-
Runner Fleet 提供安装、注册、启停、编辑、状态聚合及自愈巡检功能。
-
支持两种运行模式:宿主机模式和容器模式,便于环境隔离。
-
推荐将 Runner 拆分为通用、容器和重任务三类,以提高管理效率。
-
容器模式解决了 Runner 之间环境污染和升级回滚的问题。
-
提供详细的服务器环境准备和容器部署步骤。
-
通过 GitHub 获取 Runner Token,初始化 Fleet Runner 并配置 GitHub CI。
-
修改 CI 配置文件以启用自部署的 Runner,简化使用流程。
-
Fleet 还支持裸金属和 Dind 模式,后续将分享更多使用方法。
延伸解读
自托管 Runner 的管理挑战
自托管 Runner 的管理不仅仅是启动和运行,更在于长期的稳定性和高效性。多个 Runner 的管理可能导致 Token 分散、环境污染等问题,因此使用 Runner Fleet 这样的工具可以有效简化管理流程,提升整体效率。
容器模式的优势
Runner Fleet 提供的容器模式能够有效解决 Runner 之间的环境污染问题。通过将每个 Runner 运行在独立的容器中,可以确保不同任务之间的环境不互相干扰,从而提高 CI/CD 流程的稳定性和可靠性。
推荐的 Runner 拆分策略
为了提高管理效率,建议将 Runner 拆分为通用、容器和重任务三类。这样的拆分不仅能清晰界定每个 Runner 的职责,还能在出现问题时快速定位,便于后续的维护和扩容。
延伸问答
什么是 Runner Fleet?
Runner Fleet 是一个开源工具,旨在简化 GitHub 自托管 Runner 的管理与维护,提供轻量级的 Web 管理界面。
如何在服务器上准备环境以部署 Runner Fleet?
需要更新 Ubuntu、安装 Docker Engine 和 Compose 插件,并确保当前用户可以免 sudo 使用 Docker。
Runner Fleet 支持哪些运行模式?
Runner Fleet 支持宿主机模式和容器模式,便于环境隔离和资源管理。
如何使用 Runner Fleet 管理多个 Runner?
Runner Fleet 提供安装、注册、启停、编辑、状态聚合及自愈巡检功能,帮助用户高效管理多个 Runner。
为什么自托管 Runner 的管理难点在于长期稳定性?
因为在维护多个 Runner 时,Token 分散、环境污染和任务混乱等问题会导致管理复杂,影响稳定性。
如何修改 CI 配置文件以启用自部署的 Runner?
在 CI 文件中,将 runs-on 的配置从 ubuntu-latest 修改为 self-hosted,以使用自部署的 Runner。