詹金斯 - 如何在收到通知之前停止工作?

时间:2016-12-20 19:16:45

标签: http curl jenkins automation

无论如何,在收到通知之前,可以暂停Jenkins作业。理想情况下还有一个有效载荷?

我有一个"测试"做了大量远程测试的工作,我希望等到测试完成后,我通过curl发送带有包含测试成功代码的有效负载的HTTP通知。

这是否可以使用任何默认的Jenkins插件?

1 个答案:

答案 0 :(得分:0)

如果Jenkins 2.x是您的选择,我考虑考虑编写管道工作。

请参阅https://jenkins.io/doc/book/pipeline/

也许你可以创建一个包含多个阶段的管道,其中:

  • 第一批工作(您的测试工作)由第一个管道阶段启动。
  • 该阶段已配置(通过Groovy代码),等待测试完成后再继续。如果运行测试阻止的命令当然很容易,但是如果你的测试启动然后分离而没有提供一个简单的方法来确定它们何时退出,你可以在你的阶段添加额外的Groovy代码以使其在机器中进行轮询测试正在运行,以发现工作是否完成。
  • 第一阶段退出后,可以运行后续阶段。

至于将有效负载从一个阶段传递到另一个阶段,这也是可能的 - 对于退出代码和字符串,您可以使用Groovy变量,对于文件,我相信您可以将阶段归档文件作为神器;然后,后续阶段可以访问工件。

或者,正如Hani在评论中提到的那样,您可以创建两个Jenkins作业,并让您的测试(由第一个作业启动)使用Jenkins API在成功完成后启动第二个作业。

正如您所建议的那样,curl可用于通过API触发作业,或者您可以将Jenkins API包装程序包用于您的首选语言(我已成功使用Python jenkinsapi包进行此类工作:http://pythonhosted.org/jenkinsapi/

如果您需要将API客户端代码中的参数传递给第二个Jenkins作业,可以使用Jenkins内置的参数化构建功能将参数添加到第二个作业:https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build