Go Wiki:DashboardBuilders

LUCI 建構器

Go 團隊已將測試管線從自訂解決方案(協調器)移轉到 LUCILUCI 是由 Google 的 Chrome 開源團隊所建立的開放原始碼持續整合系統。Go 團隊已採用使用 LUCI,目的是要充分利用較大型開發人員群體所使用和支援的持續整合解決方案。這應能讓團隊為社群提供更豐富功能的解決方案。

LUCI 系統需要建構器執行兩個應用程式,它們會驗證到 LUCI 然後接收並處理建置。LUCI 令牌守護程式會產生一個驗證所需的令牌。群聚機器人會使用此令牌連線到 LUCI 和處理建置。

建構器需求

如何設定建置模組

  1. 在 Go Issue 追蹤器上建立問題,要求新增一個建置模組,並將其自身指派給自己。

    1. 問題標題應採用以下格式:x/build: add LUCI <os-arch> builder
    2. 選擇一個主機名稱,並在問題本文中說明其值。主機名稱應符合以下格式:<GOOS>-<GOOARCH>-<維護人員的 GitHub 帳戶>。如果名稱有任何衝突,Go 小組可能會要求你更改名稱。
    3. 新增標籤「new-builder」。(您可以在問題中發布一條留言,說明 @gopherbot,請新增標籤 new-builder。,讓 gopherbot 為您新增標籤。)
  2. 使用 golang.org/x/build/cmd/genbotcert 產生憑證簽署要求(hostname.csr)和 TLS 私密金鑰(hostname.key),並將先前選擇的主機名稱作為輸入。為憑證簽署要求新增副檔名 .txt(hostname.csr.txt),並附加在 GitHub 問題中。小組成員將將產生的憑證(hostname.cert)附加在 GitHub 問題中。

    1. genbotcert -bot-hostname <hostname>
  3. Go 小組成員將在 LUCI 中定義新的建置模組。完成此項操作後,將在問題中新增留言。

  4. 機器代幣守護處理程序與代幣伺服器通訊,以產生並更新 LUCI 機器代幣。安裝 go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend,並設定每十分鐘透過 cron 執行一次。私密金鑰不應該是 swarming 使用者可讀取的,所以 cron 工作應該以不同的使用者身份執行。

    1. luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <路徑至憑證> -pkey-pem <路徑至私密金鑰> -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 機器人,並確保它始終執行中。

    1. bootstrapswarm -hostname <主機名稱>
  6. 驗證機器人啟動時記錄檔中沒有任何錯誤訊息。

安全性備註

通常,低容量產生器只會執行已經審查和提交 (提交後測試) 的程式碼。我們只為 Go 團隊在有大量可用硬體的情況下執行的產生器啟用提交前測試。不過,Go 團隊及 Go 社群中的許多人可以使用 Gomote 工具,讓他們可以隨意存取產生器以進行開發和除錯。

基於偏執的理由,您可能希望在無法存取任何內部資源的隔離網路中執行您的產生器。

協調器產生器 (傳統)

此區段說明 Go 專案先前在移轉至 LUCI 之前的自訂測試解決方案。

在此處列出產生器設定檔 (頂端) 和主機設定檔 (底部)

https://farmer.golang.org/builders

產生器會在特定主機類型上執行。(例如,linux-386-387 是產生器類型。它在基於 Kubernetes 的 linux/amd64 主機 host-linux-kubestd 上執行)

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

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

有關產生器機器、執行中的數量及其狀態的資訊,請參閱 https://farmer.golang.org/


此內文是 Go Wiki 的一部分。