Go Wiki:DashboardBuilders
LUCI 构建器
Go 团队已将测试管道从自定义解决方案(协调器)迁移到LUCI。LUCI 是 Google Chrome 开源团队创建的开源持续集成系统。Go 团队采用 LUCI 的目的是利用一个由更大范围的开发人员使用和支持的持续集成解决方案。这应该能够使团队为社区提供更具功能的解决方案。
LUCI 系统需要构建器运行两个应用程序,这两个应用程序向 LUCI 进行身份验证并接收和处理构建。LUCI 令牌守护程序生成进行身份验证所需的令牌。Swarming 机器人使用该令牌连接到 LUCI 并处理构建。
构建器要求
- 能够连接到以下地址的互联网连接
- 资源
- 至少 512MB 内存。强烈建议使用 1GB 或更多内存。
- 20GB 磁盘空间是理想的。
- 最好有 2 个或更多 (V)CPU。
- 已安装 Python3 并在
PATH
中。 - 权限
- 机器人应以
swarming
用户身份运行(无 root 权限)。 - 机器人会自动更新自身。它应该具有执行此操作的权限。
- 机器人会定期重新启动机器。它应该具有执行此操作的权限(通过 sudo)。
- 在 Docker 中,您可以将关机命令替换为重新启动容器的 shell 脚本(示例)。
- 如果机器由于某种原因无法重新启动,请设置环境变量
SWARMING_NEVER_REBOOT
。
- 机器人应以
如何设置构建器
-
在 Go Issue 跟踪器上创建问题,请求添加新的构建器并将其分配给自己。
- 问题的标题应采用以下格式:
x/build: add LUCI <os-arch> builder
。 - 选择一个主机名并在问题正文中说明其值。主机名应遵循以下格式:
<GOOS>-<GOOARCH>-<维护者的 GitHub 句柄>
。如果名称有任何冲突,Go 团队可能会要求更改它。 - 添加标签“new-builder”。(您可以在问题上发布一条评论,内容为
@gopherbot, please add label new-builder.
,让gopherbot 为您添加它。)
- 问题的标题应采用以下格式:
-
使用
golang.org/x/build/cmd/genbotcert
使用主机名(事先选择)作为输入生成证书签名请求 (hostname.csr) 和 TLS 私钥 (hostname.key)。将 .txt 文件扩展名添加到证书签名请求 (hostname.csr.txt) 并将其附加到 GitHub 问题中。团队成员会将生成的证书 (hostname.cert) 附加到 GitHub 问题中。genbotcert -bot-hostname <hostname>
-
Go 团队成员将在LUCI 中定义您的新构建器。完成此操作后,将向问题添加一条评论。
-
机器令牌守护程序与令牌服务器通信以生成和更新 LUCI 机器令牌。安装
go.chromium.org/luci/tokenserver/cmd/luci_machine_tokend
并将其配置为每 10 分钟通过 cron 运行一次。私钥不应被swarming
用户读取,因此 cron 作业应以单独的用户身份运行。luci_machine_tokend -backend luci-token-server.appspot.com -cert-pem <证书路径> -pkey-pem <私钥路径> -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 机器人的初始版本并确保它始终运行。bootstrapswarm -hostname <hostname>
-
验证机器人是否在日志中没有任何错误地启动。
安全注意事项
通常,低容量构建器仅运行已过审查和提交的代码(提交后测试)。我们仅为 Go 团队运行且拥有大量可用硬件的构建器启用提交前测试。但是,Gomote 工具 可供 Go 团队和 Go 社区中的许多人使用,使他们能够任意访问构建器进行开发和调试。
出于谨慎起见,您可能希望在无法访问任何内部资源的隔离网络中运行构建器。
协调器构建器(旧版)
本节介绍 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.ac.cn/s/builderplan
有关构建器机器的信息、正在运行的数量及其状态,请访问https://farmer.golang.org/
此内容是Go Wiki的一部分。