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

时间:2018-11-09 07:39:01

标签: jenkins cucumber jenkins-plugins jenkins-pipeline

我有一个要求让我解释一下情况,

  • 它们是COMPUTER-A(詹金斯服务器),我们通过它触发了管道构建
  • 第一步,它将在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测试”中运行,它将运行所有测试用例并在构建结束时生成黄瓜报告。

    直到工作正常。

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

  • 第三步Jenkins服务器COMPUTER-A将发送成功邮件

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

我可以运行玉米工作来检查构建是否成功,但是如何通知詹金斯与黄瓜测试报告一起发送电子邮件。

2 个答案:

答案 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