如何通过curl触发构建时设置Jenkins构建描述?

mac*_*mac 8 curl jenkins jenkins-cli

我正在尝试设置我正在触发的构建的构建描述,因为我正在开始构建,到目前为止我没有运气.

我遇到了一个解决方案(将文本添加到由Jenkins远程API触发的构建页面中),我有点让它以这种方式工作(第一个命令将启动构建,第二个将设置最后一个的描述)建立):

curl -v -X POST "http://[myServer]/job/[jobName]/build"
curl -v -X POST "http://[myServer]/job/[jobName/lastBuild/submitDescription" --data-urlencode "description=test description"
Run Code Online (Sandbox Code Playgroud)

然而,问题是如果我刚刚开始的构建排队/不立即踢,"lastBuild"将不会引用我刚刚开始的构建,而是它之前的构建(仍在构建).

所以我尝试过这样的事情:

payload='json={""description"":""test description""}'
curl -v -X POST -H "Content-Type: application/json" -d $payload "http://[myServer]/job/[jobName]/build"
Run Code Online (Sandbox Code Playgroud)

但它实际上没有设置描述.

任何想法如何实现这一目标?

我找到的其他解决方案,但我并不满意:

Sla*_*lav 11

您始终可以拥有一个变量,并将构建描述传递给初始调用中的变量.然后在构建结束时,将变量输出到console并使用Description Setter插件捕获.

编辑澄清:

  • 安装说明Setter插件.
  • 在"作业配置"中,配置String参数,将其命名为" MyDescription ",将默认值保留为空.
  • 在构建步骤的某处," 执行Shell "或" 执行Windows批处理命令 "类型,echo Desc: $MyDescription或者echo Desc: %MyDescription%,取决于您的操作系统.
  • 在Post-Build步骤中,选择" Set Build Description ".
    • 正则表达式设置为^Desc: (.*)
    • 设置描述\1
  • 从命令行触发:

curl -v -X POST --data-urlencode "MyDescription=This is my desc" "http://[myServer]/job/[jobName]/buildWithParameters"
(以上是一行)

  • 成功了,谢谢!虽然我必须说我想出了一种方法,如何在触发远程构建时“正确”使用“原因”参数,所以现在我只是使用它而不是描述(原因也可以包含一个 http 链接,也是如此这对我来说是诀窍) (2认同)