4

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

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

4

1 回答 1

6

一种选择是使用 Jenkins Groovy 脚本来完成这样的任务。Groovy 插件提供了Jenkins 脚本控制台(一种有用的实验方式)以及将 groovy 脚本作为构建步骤运行的能力。如果您打算使用 Script Console 进行定期维护,您还需要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})" 
}

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

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

于 2016-01-07T20:58:04.063 回答