我有一个要求让我解释一下情况,
第二步,它将通过下面的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测试”中运行,它将运行所有测试用例并在构建结束时生成黄瓜报告。
直到工作正常。
由于它在后台詹金斯工作中运行,将不会等待并进入下一阶段
第三步Jenkins服务器COMPUTER-A将发送成功邮件
现在的要求是,一旦构建成功,我就需要通过另一封邮件发送黄瓜测试报告。如何通知COMPUTER-A中的jenkins作业(因为它已经完成)以发送带有黄瓜报告文件的邮件,该文件位于远程服务器COMPUTER-B中。
我可以运行玉米工作来检查构建是否成功,但是如何通知詹金斯与黄瓜测试报告一起发送电子邮件。答案 0 :(得分:0)
您需要的是安静期
node {
build job: 'FetchCucumberReport',
quietPeriod: 60,// in secs -->1min
wait: false
}
因此上述代码的作用是在一分钟后将触发FetchCucumberReport
作业。如果您大致知道测试用例要花多长时间才能完成所有任务(比如说4个小时),则设置quietPeriod:14400
(秒),它将在4个小时后触发构建。
已更新
您将不得不研究API调用https://wiki.jenkins.io/display/JENKINS/Remote+access+API
例如
curl -X POST -u user:password http://localhost:8080/job/FetchCucumberReport/build
希望它会有所帮助:)
答案 1 :(得分:0)
您可以在长期运行的工作完成后立即触发构建,这只会通过电子邮件发送结果:
curl -X POST http://user:password@<jenkins-url>:8080/job/test/build
如果该作业可以在同一台机器上运行,那么收集结果应该很容易,否则,您可以通过scp复制工件。
但是我认为另一种方法可能更适合您的问题。只需让该作业运行所需的时间,然后您就可以更轻松地发送电子邮件了。如果您想之前触发另一个作业,则可以触发在同一台计算机上运行的另一个作业。
也许创建一个临时的詹金斯奴隶可能是最好的主意。您也可以通过REST API执行此操作: Creating-node-with-the-REST-API