Jenkins电子邮件发送远程服务器黄瓜报告



我有一个要求,让我解释一下场景,

  • 它们是COMPUTER-A(Jenkins Server(,我们通过它触发了管道构建
  • 第一步,它将在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"中运行,它将运行所有测试用例,并在构建结束时生成cucumber报告。

    直到这一切顺利。

    由于它在后台运行,詹金斯的工作将不会等待&将进入下一阶段

  • 第三步詹金斯服务器计算机-A将发送成功邮件

现在的要求是,一旦构建成功,我需要通过另一封邮件发送黄瓜测试报告。如何通知COMPUTER-A中的jenkins作业(由于它已经完成(发送带有黄瓜报告文件的邮件,而黄瓜报告文件是他们在远程服务器COMPUTER-B中的。

我可以运行corn作业来检查构建是否成功,但如何通知jenkins发送带有黄瓜测试报告的电子邮件。

您需要的是静默期

node {
build job: 'FetchCucumberReport',
quietPeriod: 60,// in secs -->1min
wait: false
}

所以上面的代码会在1分钟后触发FetchCucumberReport作业。如果您大致知道测试用例完成所有任务需要多长时间(比如说4小时(,那么设置quietPeriod:14400(秒(,它将在4小时后触发构建。

更新
您必须查看API调用https://wiki.jenkins.io/display/JENKINS/Remote+访问+API

例如

curl -X POST -u user:password http://localhost:8080/job/FetchCucumberReport/build

希望有帮助:(

您可以在长期运行的作业完成后立即触发构建,它只会通过电子邮件发送结果:

curl -X POST http://user:password@<jenkins-url>:8080/job/test/build

如果作业可以在同一台机器上运行,那么收集结果应该很容易,如果不能,则可以通过scp复制工件。

但我认为另一种方法可能更适合你的问题。只要让工作持续多久,然后你就可以更容易地发送电子邮件。如果你想在之前触发另一个作业,你可以触发在同一台机器上运行的另一个工作。

也许创建一个临时的詹金斯奴隶可能是最好的主意。您也可以通过REST API来实现这一点:创建带有REST-API 的节点

最新更新