如何在Python JenkinsAPI中的invoke()上设置自定义构建原因

时间:2016-05-23 12:54:00

标签: python jenkins jenkins-api

我正在尝试使用jenkins api为Jenkins版本设置自定义原因。

jenkins api有一个invoke()方法,用于调用接收cause参数的新构建。

# this is a jenkinsapi.Job method
invoke(self, securitytoken=None, block=False,
           build_params=None, cause=None, files=None, delay=5):

cause param的处理如下:

if cause:
        build_params['cause'] = cause

我试图找出定义自定义原因时使用的格式。为了做到这一点,我首先使用jenkinsapi.Build方法get_causes()提取构建原因以查看其外观。

这会产生一个预期的字典列表(只有1个原因),例如:

[{'shortDescription': 'description of cause',
  'userId': 'userid',
  'userName': 'username'}]

有了这些知识,我尝试调用构建,同时将cause指定为相同格式的字典列表,但是在收集这个新构建的原因后,这​​没有用,只有正常的默认值原因在那里。

所以,我的问题是如何创建自定义原因?

1 个答案:

答案 0 :(得分:1)

我发现了两种添加自定义原因的方法,但只有一种方法适用于Jenkin的API。我仍然希望有另一种解决方案。

要使自定义cause设置生效,我必须在每个Jenkin的工作中启用此设置:

enter image description here

启用该设置后,我能够使用将在控制台中显示的自定义原因触发作业。

job.invoke(securitytoken="asecuretoken", cause="A custom cause.")

我对这条路线的主要问题是它没有填写我从自定义插件中看到的信息量。这是我发现以这种方式使用原因的替代方案,但它需要更多的工作来实现。

我找到了一个很好的例子,可以根据REST请求自定义构建消息GitLab Jenkin's Plugin