openpreflight icon

openpreflight

openpreflight 是面向 GitHub 仓库的自托管 CI 服务,以 Go 二进制运行并用 SQLite 保存状态,在自有基础设施上执行安装、测试和构建流水线,将结果作为原生 GitHub Check Runs 报告,无需运行器集群或付费 GitHub Actions 分钟数。

openpreflight

面向专注型 GitHub 检查的自托管 CI

openpreflight 是面向 GitHub 仓库的自托管持续集成服务。它以 Go 二进制的形式运行在你控制的基础设施上,通过 GitHub App 接收 GitHub webhook,并为已配置的提交发布原生 Check Runs。

它面向需要基于 install、test 和 build 命令执行简单拉取请求或分支门禁的仓库。配置可以放在 .ci.yml 中,也可以放在仓库绑定中;执行则使用主机进程或明确选择的 Docker 运行时。该产品有意不提供更广泛的流水线编排功能,例如矩阵、构件和并行阶段。

功能

单进程 CI 服务

一个 Go 二进制整合 Web UI、JSON API、webhook 接收器和作业运行器,无需单独的消息代理或前端部署。

原生 GitHub Check Runs

创建或注册 GitHub App,绑定仓库,并通过 Web UI 启用分支和可选的路径模式。每个作业都会单独生成安装令牌。

简单命令流水线

在根目录的 .ci.yml 文件中定义 install、test 和 build 命令,或按仓库绑定进行覆盖。非空的运行时镜像会使用 docker run --rm 运行各步骤。

针对特定提交执行

Worker 获取确切的提交,使用 detached checkout,在执行前移除远程凭据,并强制执行运行超时。

运行状态和日志

标准输出会发送到 GitHub Check Run,而完整日志可在产品详情页面查看。运行支持 passed、failed、skipped、error 和 cancelled 状态,界面中会显示重新运行控件。

基于 SQLite 的存储

状态存储在一个 SQLite 文件中,机密列使用 AES-256-GCM 进行静态加密。运行历史和日志会根据保留期限进行清理。

使用场景

  • 私有仓库门禁

    将私有仓库绑定到 GitHub App,定义其测试和构建命令,并将生成的 Check Run 用作必需的分支保护检查。

  • 小型自托管团队

    在团队已经运营的 VPS 或其他主机上运行专注型 CI,使用一个进程和一个 SQLite 文件,而不是部署独立的 CI 平台栈。

  • 开源贡献检查

    为贡献者提供针对简单仓库命令的自动化检查,同时保留对 Worker 主机和仓库绑定的控制。

  • 混合仓库规范

    将仓库特定的命令保存在 .ci.yml 中,并为需要不同分支、路径、命令或超时设置的仓库提供绑定级覆盖。

Pros and Cons

Pros

  • 原生 GitHub Check Runs 可作为单一的分支保护门禁。
  • 单个 Go 二进制包含主要服务组件,减少了需要部署的服务数量。
  • 仓库命令可以保存在简短的 .ci.yml 文件中,无需 GitHub Actions 工作流样板代码。
  • Worker 负责确切提交检出、凭据清理、超时控制、加密机密存储和日志保留。

Cons

  • 流水线模型有意保持精简:不提供矩阵、并行阶段、条件步骤、缓存或步骤之间的构件传递。
  • 执行和持久化集中在你运营的基础设施上,包括主机、SQLite 状态、webhook 端点和可选的 Docker 引擎。
  • 网站未公布定价信息;当前定价 URL 返回未找到页面。

FAQ

如何安装 openpreflight?

使用 Docker Compose 安装 Go 二进制,或运行发布二进制文件;打开 Web UI,完成首次启动向导,注册 GitHub App,并启用仓库绑定。产品网站提供 Docker Compose 示例。

一次运行如何从 GitHub 事件变成 Check Run?

GitHub App 在配置的主机上接收 check-suite webhook,系统验证 HMAC 后将交付内容加入队列。Worker 创建 Check Run,获取确切提交,运行已配置的命令,并将结果报告给 GitHub;完整日志仍可在详情页面查看。

流水线可以运行什么?

流水线支持 install、test 和 build shell 命令、可选的运行时容器镜像以及超时设置。配置可以来自 .ci.yml、绑定覆盖项,或从 package.json 推断出的有限 Node 默认值。

什么时候不适合使用 openpreflight?

不适合。文档所述范围不包括 stages 或 needs、扇出和并行步骤、条件步骤、运行之间的缓存、步骤之间的构件、构建矩阵,以及 install、test 和 build 之外的步骤。当需要这些能力或多平台运行器时,GitHub Actions 仍然更合适。

团队可以在多个仓库之间使用同一个 GitHub App 吗?

一个 Worker 会为一个作业生成一个 Check Run,可在分支保护中选择该 Check Run。一个 GitHub App 可以覆盖多个仓库,但每个仓库仍需单独启用自己的绑定。

Quick Facts

类别
开发者工具 / 自托管 CI
主要平台
GitHub 仓库和 Check Runs
部署方式
Docker Compose 或发布二进制,运行在你控制的基础设施上
核心运行时
带 SQLite 状态的 Go 二进制
流水线模型
Install、test 和 build 命令;可选 Docker 运行时
源站域名
openpreflight.xyz