首页 文章

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

提问于
浏览
6

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

  • 他们是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 回答

  • 0

    你需要的是安静时期

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

    那么上面的代码所做的就是它会在1分钟后触发 FetchCucumberReport Job . 如果您大致知道测试用例需要多长时间才能完成所有任务(比方说4小时),然后设置 quietPeriod:14400 (秒),它将在4小时后触发构建 .

    UPDATED
    您将不得不查看API调用https://wiki.jenkins.io/display/JENKINS/Remote+access+API

    例如

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

    希望能帮助到你 :)

  • 0

    一旦长时间运行的作业完成,您就可以触发构建,这只是通过电子邮件发送结果:

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

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

    但我认为另一种方法可能更适合您的问题 . 只要让工作尽可能长时间运行,那么您可以更容易地发送电子邮件 . 如果您之前想要触发另一个作业,则可以触发另一个在同一台计算机上运行的作业 .

    也许创造一个临时的詹金斯奴隶可能是最好的主意 . 您也可以通过REST API执行此操作:Creating-node-with-the-REST-API

相关问题