在 RISC-V 软件生态的构建过程中,持续集成(CI)一直是开发者面临的核心挑战之一。传统方案要么依赖 QEMU 等软件模拟,面临显著的性能开销;要么自行维护自托管 runner,运维成本高昂。RISE 项目近期发布的 RISC-V Runners 服务为这一困境提供了开源友好的解决方案 —— 直接在物理 RISC-V 硬件上运行 GitHub Actions 工作流,绕过模拟层带来的额外延迟与资源消耗。

RISC-V CI 的现实困境

当前 RISC-V 项目的 CI 基础设施选择非常有限。主流 CI 平台(如 GitHub Actions、GitLab CI)尚未原生支持 RISC-V 架构,导致开发者不得不采用两种妥协方案:一是使用跨编译(cross-compilation)在 x86_64 平台上构建 RISC-V 目标文件,随后在模拟器中进行测试;二是自行搭建自托管 runner,在有限的 RISC-V 开发板上部署 GitHub Actions 代理。

第一种方案的问题在于,跨编译无法验证二进制文件在目标架构上的真实执行行为,尤其是涉及指令级特性、内存对齐或硬件加速单元时,模拟器的行为可能与真实硬件存在细微差异。第二种方案虽然解决了真实硬件执行的问题,但要求开发者自行管理硬件采购、 runner 生命周期、 runner 注册与注销等复杂逻辑,对于个人开发者或小型开源项目而言门槛过高。RISE RISC-V Runners 的出现正是为了填补这一基础设施空白。

RISE Runners 的架构设计

RISE RISC-V Runners 是一个托管式 GitHub Actions runner 服务,由 RISE 项目免费向开源社区提供。其核心设计理念是将物理 RISC-V 硬件通过 Kubernetes 集群进行抽象管理,对用户屏蔽底层的资源调度细节。

整个系统的工作流程可以概括为五个关键步骤。当用户的 GitHub Actions 工作流触发时,系统首先接收 workflow_job webhook 事件;随后 webhook handler 对请求进行验证并将需求记录到 Redis 队列中;后台 worker 感知到需求后,在具备 RISC-V 计算能力的 Kubernetes 节点上调度一个 ephemeral pod;该 pod 注册为即时(just-in-time)runner 并执行用户定义的任务;任务完成后,pod 自动清理,释放硬件资源。这种设计确保了硬件资源的动态复用,同时每个 job 获得完全隔离的全新环境。

值得注意的是,RISE Runners 在每个 runner 中默认启用 Docker-in-Docker(DinD)支持,这对于需要构建容器镜像的 RISC-V 项目尤为重要 —— 开发者可以在同一个 job 中完成代码编译、单元测试以及容器镜像构建等全流程操作,无需额外部署独立的 Docker registry 或构建节点。

快速上手指南

使用 RISE RISC-V Runners 的门槛极低,整个接入过程分为两个步骤。首先,在 GitHub 组织的设置页面中安装 RISE RISC-V Runners GitHub App(个人账户或组织级别均可),完成授权后项目即获得使用 RISE 托管 runner 的权限。其次,在现有或新建的 GitHub Actions 工作流文件中,将 runs-on 参数设置为 ubuntu-24.04-riscv,即可将任务调度至真实的 RISC-V 硬件上执行。

一个典型的配置示例如下:工作流在检测到推送事件后,触发一个使用 ubuntu-24.04-riscv runner 的 job,该 job 执行 actions/checkout 检出代码,随后运行针对 RISC-V 架构的编译与测试命令。由于 runner 预装了标准的 Ubuntu 24.04 RISC-V 镜像,常见的构建工具链(如 GCC、Clang、CMake)均已就绪,开发者几乎无需额外的环境配置工作。

目前 RISE 提供的托管 runner 基于 Scaleway EM-RV1 物理服务器,用户无需关心底层硬件的采购与运维。但需要留意的是,当前托管服务仅提供 ubuntu-24.04-riscv 一种标签,对于有特殊硬件需求(如特定外设、特定内核版本)的项目,可以参考 RISE 开源的四个核心仓库(riscv-runner-app、riscv-runner-device-plugin、riscv-runner-images、riscv-runner-sample)自行部署私有实例。

开源生态的意义

RISE RISC-V Runners 的推出对整个 RISC-V 开源生态具有重要的基础设施意义。它降低了 RISC-V 软件开发的验证门槛 —— 开发者无需自行搭建硬件实验室即可获得真实硬件上的 CI 验证能力,这有助于提高 RISC-V 软件包的质量与可靠性。与此同时,由于托管服务完全免费且无需复杂的审批流程,个人开发者和小型项目也能平等地享受这一资源,这对于鼓励更多社区成员参与 RISC-V 生态建设起到了积极的推动作用。

从技术演进的角度看,RISE Runners 的架构为未来支持更多 RISC-V 硬件变体提供了可扩展的范式。随着 RISC-V 硬件平台的丰富,托管服务可以逐步引入针对不同性能层级、不同外设配置的 runner 类型,进一步满足从嵌入式固件到高性能计算的多样化 CI 需求。对于正在建设 RISC-V 生态的开发者而言,现在正是将 CI 流程迁移至真实硬件、提前发现架构相关问题的最佳时机。

资料来源:RISE RISC-V Runners 官方文档(https://riseproject-dev.github.io/riscv-runner/)