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

use*_*777 8 cucumber jenkins jenkins-plugins jenkins-pipeline

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

  • 他们是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 & "
        """
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这个脚本在后台"mvn clean test"中运行,它将运行所有测试用例并在构建结束时生成黄瓜报告.

    直到这个工作正常.

    由于它在背景中运行jenkins工作将不会等待并将进入下一阶段

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

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

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

roh*_*mas 0

你需要的是安静期

node {
    build job: 'FetchCucumberReport',
          quietPeriod: 60,// in secs -->1min
          wait: false
}
Run Code Online (Sandbox Code Playgroud)

FetchCucumberReport所以上面的代码的作用是1分钟后触发Job。如果您大致知道测试用例完成所有任务需要多长时间(假设 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
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 :)