openpreflight icon

openpreflight

openpreflight 是可自架的 GitHub 儲存庫 CI 服務,部署於您掌控的基礎架構,以 Go 二進位檔與 SQLite 執行安裝、測試及建置流程,並以原生 GitHub Check Runs 回報結果,無需 Runner 叢集或付費 GitHub Actions 分鐘。

openpreflight

專注於 GitHub 檢查的自架 CI

openpreflight 是 GitHub 儲存庫的自架持續整合服務。它會以 Go 二進位檔的形式在您掌控的基礎架構上執行,透過 GitHub App 接收 GitHub webhook,並為已設定的 commit 發布原生 Check Runs。

此服務專為需要根據 install、test 和 build 指令設定簡單拉取請求或分支閘門的儲存庫而設計。設定可放在 .ci.yml 或儲存庫繫結中,而執行則使用主機程序或明確選取的 Docker 執行環境。產品刻意不提供更廣泛的 Pipeline 編排功能,例如矩陣、成品和並行階段。

功能

單一程序 CI 服務

單一 Go 二進位檔整合網頁介面、JSON API、webhook 接收器和作業執行器,不需要獨立的訊息代理程式或前端部署。

原生 GitHub Check Runs

建立或註冊 GitHub App、繫結儲存庫,並從網頁介面啟用分支和選用的路徑模式。每個作業都會鑄造安裝權杖。

簡易指令 Pipeline

在根目錄的 .ci.yml 檔案中定義 install、test 和 build 指令,或依儲存庫繫結覆寫。非空白的執行環境映像會使用 docker run --rm 執行步驟。

指定 Commit 的執行

Worker 會擷取確切的 commit、使用 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 會處理確切 commit 的 checkout、憑證清理、逾時、加密機密儲存和保留記錄。

Cons

  • Pipeline 模型刻意保持精簡:不提供矩陣、平行階段、條件式步驟、快取或步驟間的成品。
  • 執行與持久化以您營運的基礎架構為核心,包括主機、SQLite 狀態、webhook 端點,以及選用的 Docker 引擎。
  • 網站未公布定價資訊;目前定價 URL 會返回找不到頁面。

FAQ

如何安裝 openpreflight?

使用 Docker Compose 安裝 Go 二進位檔,或執行發布版本的二進位檔;開啟網頁介面,完成首次啟動精靈,註冊 GitHub App,並啟用儲存庫繫結。產品網站提供 Docker Compose 範例。

執行作業如何從 GitHub 事件轉變為 Check Run?

GitHub App 會在設定的主機接收 check-suite webhook,驗證 HMAC 後將傳送內容加入佇列。Worker 會建立 Check Run、擷取確切的 commit、執行已設定的指令,並將結果回報至 GitHub;完整記錄則保留在詳細資料頁面。

Pipeline 可以執行哪些內容?

Pipeline 支援 install、test 和 build shell 指令、選用的執行環境容器映像,以及逾時設定。設定可來自 .ci.yml、繫結覆寫,或從 package.json 推斷出的有限 Node 預設值。

什麼情況下不適合使用 openpreflight?

不適合。文件所述範圍不包含 stages 或 needs、分流與平行步驟、條件式步驟、執行間的快取、步驟間的成品、建置矩陣,以及 install、test 和 build 以外的步驟。若需要這些功能或多平台 Runner,GitHub Actions 仍是較合適的選擇。

團隊可以在多個儲存庫間共用一個 GitHub App 嗎?

單一 Worker 會為一個作業產生一個 Check Run,可在分支保護中選取。單一 GitHub App 可以涵蓋多個儲存庫,但每個儲存庫仍需各自啟用繫結。

Quick Facts

類別
開發者工具/自架 CI
主要平台
GitHub 儲存庫與 Check Runs
部署方式
Docker Compose 或發布版本二進位檔,部署於您掌控的基礎架構
核心執行環境
含 SQLite 狀態的 Go 二進位檔
Pipeline 模型
Install、test 和 build 指令;選用 Docker 執行環境
來源網域
openpreflight.xyz