Go Wiki: DashboardBuilders
LUCI Builders
Go 團隊已將其測試流水線從自定義解決方案(協調器)遷移到 LUCI。 LUCI 是由 Google Chrome 開源團隊建立的開源持續整合系統。Go 團隊採用 LUCI 是為了利用一個被更多開發者使用和支援的持續整合解決方案。這將使團隊能夠為社群提供功能更豐富的解決方案。
LUCI 系統要求構建器執行兩個應用程式,它們會向 LUCI 進行身份驗證並接收和處理構建。LUCI token daemon 生成進行身份驗證所需的令牌。swarming bot 使用該令牌連線到 LUCI 並處理構建。
構建器要求
- 能夠連線到以下地址的網際網路連線
- https://proxy.golang.org(或透過 GOPROXY 的替代代理)。
- https://luci-token-server.appspot.com
- https://chromium-swarm.appspot.com
- https://cr-buildbucket.appspot.com
- https://7419-34ac013-dot-chromium-swarm.appspot.com(未來可能更改?)
- https://remotebuildexecution.googleapis.com
- https://storage.googleapis.com(用於 gomote 建立)
- 資源
- 至少 512MB 記憶體。強烈推薦 1GB 或更多。
- 20GB 磁碟空間是理想的。
- 最好有 2 個或更多(虛擬)CPU。
- 安裝 Python 3,並使其在
PATH
(或等效路徑)下以python3
(或 Windows 上的python3.exe
)名稱可用。 - 許可權
- bot 應以
swarming
使用者身份執行(無 root 許可權)。 - bot 會自動更新自身。它應具有進行此操作的許可權。
- bot 會定期重啟機器。它應具有進行此操作的許可權(透過 sudo)。
- 在 Docker 中,您可以將關機命令替換為 從內部重啟容器的 shell 指令碼(示例)。
- 如果機器因某種原因無法重啟,請設定環境變數
SWARMING_NEVER_REBOOT
。
- bot 應以
如何設定構建器
-
在 Go Issue Tracker 上 建立一個 issue,請求新增一個新的構建器並自行分配。
- issue 的標題應為格式:
x/build: add LUCI <os-arch> builder
。 - 選擇一個主機名並在 issue 正文中說明其值。主機名應遵循以下格式:
<GOOS>-<GOOARCH>-<維護者的 GitHub handle>
。如果名稱有衝突,Go 團隊可能會要求更改。 - 新增“new-builder”標籤。(您可以在 issue 中釋出評論
@gopherbot, please add label new-builder.
,讓 gopherbot 為您新增。)
- issue 的標題應為格式:
-
使用
golang.org/x/build/cmd/genbotcert
生成證書籤名請求(hostname.csr)和 TLS 私鑰(hostname.key),並使用(預先選擇的)主機名作為輸入。為證書籤名請求新增 .txt 副檔名(hostname.csr.txt)並將其附加到 GitHub issue。團隊成員將把生成的證書(hostname.cert)附加到 GitHub issue。genbotcert -bot-hostname <hostname>
-
Go 團隊成員將在 LUCI 中定義您的新構建器。完成後將向 issue 新增評論。
-
Machine Token Daemon 與 Token Server 通訊,以生成和續訂 LUCI 機器令牌。安裝
go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend
並配置它透過 cron 每 10 分鐘執行一次。私鑰不應被swarming
使用者讀取,因此 cron 作業應以單獨的使用者身份執行。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
- 如果 /var/lib 不是令牌的合適位置,請根據需要進行更改,並在呼叫下面的
bootstrapswarm
時將環境變數LUCI_MACHINE_TOKEN
設定為檔案路徑。
-
安裝
golang.org/x/build/cmd/bootstrapswarm
並將其配置為在您的作業系統程序管理器(systemd 等)下作為swarming
使用者無限迴圈執行。Bootstrapswarm
下載 swarming bot 的初始版本並確保其始終執行。bootstrapswarm -hostname <hostname>
-
在日誌中驗證 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 的一部分。