Go Wiki: DashboardBuilders

LUCI Builders

Go 團隊已將其測試流水線從自定義解決方案(協調器)遷移到 LUCILUCI 是由 Google Chrome 開源團隊建立的開源持續整合系統。Go 團隊採用 LUCI 是為了利用一個被更多開發者使用和支援的持續整合解決方案。這將使團隊能夠為社群提供功能更豐富的解決方案。

LUCI 系統要求構建器執行兩個應用程式,它們會向 LUCI 進行身份驗證並接收和處理構建。LUCI token daemon 生成進行身份驗證所需的令牌。swarming bot 使用該令牌連線到 LUCI 並處理構建。

構建器要求

如何設定構建器

  1. 在 Go Issue Tracker 上 建立一個 issue,請求新增一個新的構建器並自行分配。

    1. issue 的標題應為格式:x/build: add LUCI <os-arch> builder
    2. 選擇一個主機名並在 issue 正文中說明其值。主機名應遵循以下格式:<GOOS>-<GOOARCH>-<維護者的 GitHub handle>。如果名稱有衝突,Go 團隊可能會要求更改。
    3. 新增“new-builder”標籤。(您可以在 issue 中釋出評論 @gopherbot, please add label new-builder.,讓 gopherbot 為您新增。)
  2. 使用 golang.org/x/build/cmd/genbotcert 生成證書籤名請求(hostname.csr)和 TLS 私鑰(hostname.key),並使用(預先選擇的)主機名作為輸入。為證書籤名請求新增 .txt 副檔名(hostname.csr.txt)並將其附加到 GitHub issue。團隊成員將把生成的證書(hostname.cert)附加到 GitHub issue。

    1. genbotcert -bot-hostname <hostname>
  3. Go 團隊成員將在 LUCI 中定義您的新構建器。完成後將向 issue 新增評論。

  4. Machine Token Daemon 與 Token Server 通訊,以生成和續訂 LUCI 機器令牌。安裝 go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend 並配置它透過 cron 每 10 分鐘執行一次。私鑰不應被 swarming 使用者讀取,因此 cron 作業應以單獨的使用者身份執行。

    1. luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <path-to-the-certificate> -pkey-pem <path-to-the-private-key> -token-file=/var/lib/luci_machine_tokend/token.json
    2. 如果 /var/lib 不是令牌的合適位置,請根據需要進行更改,並在呼叫下面的 bootstrapswarm 時將環境變數 LUCI_MACHINE_TOKEN 設定為檔案路徑。
  5. 安裝 golang.org/x/build/cmd/bootstrapswarm 並將其配置為在您的作業系統程序管理器(systemd 等)下作為 swarming 使用者無限迴圈執行。Bootstrapswarm 下載 swarming bot 的初始版本並確保其始終執行。

    1. bootstrapswarm -hostname <hostname>
  6. 在日誌中驗證 bot 是否在沒有錯誤的情況下啟動。

安全注意事項

通常,低容量構建器僅執行已審查並已提交的程式碼(post-submit 測試)。我們僅為 Go 團隊執行且擁有大量可用硬體的構建器啟用 pre-submit 測試。但是,Gomote 工具 可供 Go 團隊和 Go 社群中的許多人使用,該工具允許他們對構建器進行任意訪問,用於開發和除錯。

出於安全考慮,您可能希望在無法訪問任何內部資源的隔離網路中執行構建器。

Coordinator Builders (遺留)

本節介紹了 Go 專案在遷移到 LUCI 之前使用的自定義測試解決方案。

此處列出了構建配置(頂部)和主機配置(底部)

https://farmer.golang.org/builders

構建器執行在特定的主機型別上。(例如,linux-386-387 是一個構建型別。它執行在 host-linux-kubestd,一個基於 Kubernetes 的 linux/amd64 主機上)

它們來自檔案 https://cs.opensource.google/go/x/build/+/master:dashboard/builders.go

有關協調器的設計詳細資訊,請參閱 https://golang.org.tw/s/builderplan

有關構建器機器、執行數量及其狀態的資訊,請訪問 https://farmer.golang.org/


此內容是 Go Wiki 的一部分。