GitHub Actions 自主托管运行器:Runs-On 指南
项目介绍
Runs-On 是一个开源项目,旨在提供一种经济高效且高性能的解决方案来运行 GitHub Actions 的自主托管运行器。相比于官方提供的服务,它声称可以减少高达 90% 的持续集成(CI)成本,并实现快至 5 倍的缓存读取速度。Runs-On 支持在 Amazon Web Services (AWS) 上部署,通过自定义的 CloudFormation 模板,实现一键安装和升级,简化管理过程。此外,该框架兼容官方 GitHub 运行器的工作流配置,支持 Linux(包括 x64 和 arm64)、Windows 环境以及 GPU 支持,灵活运用 Spot 实例以降低成本并确保高可用性。
项目快速启动
安装准备
-
确保您有一个 AWS 账户,并配置好 AWS CLI。
-
克隆 Runs-On 仓库:
git clone https://github.com/runs-on/runs-on.git
-
配置 AWS 相关权限,确保您的 IAM 用户有足够权限创建和管理 AWS 资源。
部署到 AWS
- 修改配置(可选):如果需要对默认设置进行调整,根据
CloudFormation
模板文件进行相应配置。 - 执行部署命令:
cd runs-on make deploy
此命令将触发 AWS CloudFormation 模板的部署,自动构建您的自主托管运行环境。
在 GitHub 动作中使用 Runs-On
更新您的 .github/workflows/*yml
文件中的 runs-on
行,从使用官方运行器切换到 Runs-On:
jobs:
build:
runs-on: [runs-on, runner=2cpu-linux-x64, run-id=$[[ github.run_id ]]]
确保替换为适合您工作流程的具体配置标签。
应用案例与最佳实践
- CI/CD 流水线加速:利用 Runs-On 的高速缓存机制,大幅缩短依赖项下载和 Docker 层构建的时间。
- 成本优化:在资源需求波动大的场景下,通过 Spot 实例策略自动管理,节省计算成本。
- 安全性增强:通过限制 SSH 访问特定 IP 范围和私有网络配置,增加运行器的安全性。
典型生态项目结合
Runs-On 可无缝对接各种基于 GitHub Actions 的开发工作流,特别适用于那些需要高度定制化或有特殊性能要求的项目:
- 大型软件项目:如使用微服务架构的云原生应用,需要频繁且复杂的构建和测试流程。
- 机器学习研发:项目中涉及大量数据处理和模型训练,GPU支持成为重要优势。
- 多环境部署验证:在不同的 AWS 区域、环境变量配置下自动化部署测试。
通过 Runs-On 结合 AWS 的丰富服务(如 CodePipeline 和 CodeBuild),开发者能够构建更加健壮、高效且成本可控的DevOps流程。
本指南提供了基础框架以帮助开发者快速上手 Runs-On 项目,深入实践时建议参考其官方文档和社区讨论,获取最新信息和技术支持。