我有一个要求让我解释一下场景,
-
他们是COMPUTER-A(Jenkins服务器),通过它我们触发了管道构建
-
第一步它将在vlab机器中创建VM(COMPUTER-B)并获取IP
-
第二步它将通过下面的ssh在COMPUTER-B中执行testsuites.sh是伪代码
steps {
script {
sh """
ssh -i id_rsa -o StrictHostKeyChecking=no ${USER}@${env.IP} "nohup /home/testsuites.sh > foo.out 2> foo.err < /dev/null & "
"""
}
}
这个脚本在后台“mvn clean test”中运行,它将运行所有测试用例并在构建结束时生成黄瓜报告 .
直到这个工作正常 .
由于它在背景中运行jenkins工作将不会等待并将进入下一阶段
- 第三步Jenkins服务器COMPUTER-A将发送成功邮件
现在的要求是,一旦构建成功,我需要通过另一个邮件发送黄瓜测试报告 . 如何通知COMPUTER-A中的jenkins作业(自已完成)发送带有黄瓜报告文件的邮件,这是他们在远程服务器COMPUTER-B中的文件 .
我可以运行玉米工作来检查构建成功,但是如何通知jenkins发送带有黄瓜测试报告的电子邮件 .
2 回答
你需要的是安静时期
那么上面的代码所做的就是它会在1分钟后触发
FetchCucumberReport
Job . 如果您大致知道测试用例需要多长时间才能完成所有任务(比方说4小时),然后设置quietPeriod:14400
(秒),它将在4小时后触发构建 .UPDATED
您将不得不查看API调用https://wiki.jenkins.io/display/JENKINS/Remote+access+API
例如
希望能帮助到你 :)
一旦长时间运行的作业完成,您就可以触发构建,这只是通过电子邮件发送结果:
如果作业可以在同一台机器上运行,那么收集结果应该很容易,如果没有,你可以通过scp复制工件 .
但我认为另一种方法可能更适合您的问题 . 只要让工作尽可能长时间运行,那么您可以更容易地发送电子邮件 . 如果您之前想要触发另一个作业,则可以触发另一个在同一台计算机上运行的作业 .
也许创造一个临时的詹金斯奴隶可能是最好的主意 . 您也可以通过REST API执行此操作:Creating-node-with-the-REST-API