詹金斯:如何测试奴隶

Jir*_* Hu 4 jenkins jenkins-slave

我正在创建一份 Jenkins 工作列表,用于对我们的 Jenkins 构建环境进行健全性测试。我想创造多层工作。第一层jobs会检查环境,例如如果所有slave都启动了,那么第二层可以检查与其他工具的集成,比如GitHub,TFS,SonarQube,然后第三层可以运行一些典型的构建项目。此健全性测试还可用于在对 Jenkins 服务器进行任何重大更改后验证环境。

我们在两台服务器上创建了大约 10 个从服务器,一台 Windows 和一台 Linux。我知道我可以创建一个在特定从站上运行的作业,因此测试从站是否在线,但这样我需要创建 10 个作业来测试所有从站。有没有最好的方法来检查所有奴隶是否在线?

Dav*_*her 6

一种选择是使用 Jenkins Groovy 脚本来完成这样的任务。在Groovy插件提供了詹金斯脚本控制台(以实验的有效途径)和运行Groovy脚本为构建步骤的能力。如果您打算使用脚本控制台进行定期维护,您还需要使用Scriptler 插件来管理您运行的脚本。

Manage Jenkins -> Script Console,您可以编写一个 groovy 脚本,它遍历从属设备并检查它们是否在线:

for (node in Jenkins.instance.nodes) {
  println "${node.name}, ${node.numExecutors}"
  def computer = node.computer
  println "Online: ${computer.online}, ${computer.connectTime} (${computer.offlineCauseReason})" 
}
Run Code Online (Sandbox Code Playgroud)

完成基本检查后,您可以在 Scriptler 中创建一个独立的脚本,或者创建一个特殊的构建来定期运行这些检查。

通常需要一些迭代才能找出要检查的正确属性集。正如我在另一个答案中所描述的,您可以编写函数来内省可用于脚本编写的对象。因此,通过反复试验,您可以开发一个脚本来执行您想要运行的检查。