Go Wiki:DashboardBuilders

LUCI 构建器

Go 团队已将测试管道从自定义解决方案(协调器)迁移到LUCILUCI 是 Google Chrome 开源团队创建的开源持续集成系统。Go 团队采用 LUCI 的目的是利用一个由更大范围的开发人员使用和支持的持续集成解决方案。这应该能够使团队为社区提供更具功能的解决方案。

LUCI 系统需要构建器运行两个应用程序,这两个应用程序向 LUCI 进行身份验证并接收和处理构建。LUCI 令牌守护程序生成进行身份验证所需的令牌。Swarming 机器人使用该令牌连接到 LUCI 并处理构建。

构建器要求

如何设置构建器

  1. 在 Go Issue 跟踪器上创建问题,请求添加新的构建器并将其分配给自己。

    1. 问题的标题应采用以下格式:x/build: add LUCI <os-arch> builder
    2. 选择一个主机名并在问题正文中说明其值。主机名应遵循以下格式:<GOOS>-<GOOARCH>-<维护者的 GitHub 句柄>。如果名称有任何冲突,Go 团队可能会要求更改它。
    3. 添加标签“new-builder”。(您可以在问题上发布一条评论,内容为 @gopherbot, please add label 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 并将其配置为每 10 分钟通过 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 <hostname>
  6. 验证机器人是否在日志中没有任何错误地启动。

安全注意事项

通常,低容量构建器仅运行已过审查和提交的代码(提交后测试)。我们仅为 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的一部分。