詹金斯:如何测试奴隶
Posted
技术标签:
【中文标题】詹金斯:如何测试奴隶【英文标题】:Jenkins: how to test the slaves 【发布时间】:2016-01-05 21:29:30 【问题描述】:我正在为我们的 Jenkins 构建环境的健全性测试创建一个 Jenkins 作业列表。我想创建多层工作。第一层作业将检查环境,例如如果所有 slave 都启动了,第二层可以检查与其他工具的集成,例如 GitHub、TFS、SonarQube,然后第三层可以运行一些典型的构建项目。此健全性测试还可用于在对 Jenkins 服务器进行任何重大更改后验证环境。
我们在两台服务器上创建了大约 10 个从属服务器,一台 Windows 和一台 Linux。我知道我可以创建一个在特定从站上运行的作业,因此测试从站是否在线,但是这样我需要创建 10 个作业来测试所有从站。是否有最好的方法来检查所有从站是否都在线?
【问题讨论】:
你可能会在 master 上运行一个作业,这只是一个脚本,它抓取 API 以获得“每个奴隶都在线”的基本概念......jenkins_url/computer/api/json...... Jenkins 公开了其中的一些属性,例如“在线奴隶”。 【参考方案1】:一种选择是使用 Jenkins Groovy 脚本来完成这样的任务。 Groovy plugin 提供了Jenkins Script Console(一种有用的实验方式)以及运行 groovy 脚本作为构建步骤的能力。如果您打算使用脚本控制台进行定期维护,您还需要Scriptler plugin,它允许您管理您运行的脚本。
从Manage Jenkins -> Script Console,你可以编写一个 groovy 脚本,遍历 slave 并检查它们是否在线:
for (node in Jenkins.instance.nodes)
println "$node.name, $node.numExecutors"
def computer = node.computer
println "Online: $computer.online, $computer.connectTime ($computer.offlineCauseReason)"
完成基本检查后,您可以在 Scriptler 中创建一个独立的脚本,或者创建一个特殊的版本来定期运行这些检查。
通常需要进行一些迭代才能找出要检查的正确属性集。正如我在another answer 中描述的那样,您可以编写函数来内省可用于脚本的对象。因此,通过一些试验和错误,您可以开发一个脚本来执行您想要运行的检查。
【讨论】:
以上是关于詹金斯:如何测试奴隶的主要内容,如果未能解决你的问题,请参考以下文章