0

我正在尝试使用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参数处理如下:

if cause:
        build_params['cause'] = cause

我试图找出在定义自定义原因时使用什么格式。为了做到这一点,我首先提取了构建的原因,以使用jenkinsapi.Buildmethod来查看它的样子get_causes()

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

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

有了这些知识,我尝试在指定cause为相同格式的字典列表的同时调用构建,但这不起作用,从这个新构建中收集原因后,只有正常的默认原因存在。

所以,我的问题是我需要做什么来创建自定义原因?

4

1 回答 1

1

我找到了两种添加自定义原因的方法,但只有一种方法适用于 Jenkins 的 API。我仍然希望有一个替代解决方案。

为了使自定义cause设置起作用,我必须在每个 Jenkins 的工作中启用此设置:

在此处输入图像描述

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

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

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

我发现了一个很好的例子,它根据 REST 请求自定义构建消息是GitLab Jenkin's Plugin

于 2016-12-09T16:30:57.027 回答