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

标签 curl jenkins jenkins-cli

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

我遇到了一个解决方案( Adding text to the page of a build triggered by the Jenkins remote 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"

然而,问题是,如果我刚刚启动的构建被排队/没有立即启动,“lastBuild”将不会引用我刚刚启动的构建,而是它之前的构建(仍在构建)。

所以我尝试了这样的事情:
payload='json={""description"":""test description""}'
curl -v -X POST -H "Content-Type: application/json" -d $payload "http://[myServer]/job/[jobName]/build"

但它实际上并没有设置描述。

任何想法如何实现?

我找到了其他解决方案,但我对以下解决方案并不满意:
  • Changing Jenkins Build Name & Description through API in JAVA - 这也是一个“后触发解决方案”,它不会像在
  • 之后设置描述一样可靠地工作
  • Modifying Jenkins Description for a build - 我想我可以建立一个支票,只有在它为空时才修改描述,所以我不会覆盖它,但这似乎相当复杂。我认为必须有一个更简单的解决方案,不是吗?
  • 最佳答案

    您始终可以拥有一个变量,并在初始调用时将构建描述传递给该变量。然后在构建结束时,将变量输出到控制台并捕获 Description Setter plugin .

    编辑澄清:

  • 安装 Description Setter plugin .
  • 在 Job Configuration 中,配置一个 String 参数,命名为“ MyDescription ”,默认为空。
  • 在构建步骤的某个地方,“ 执行 Shell ” 或“ 执行 Windows 批处理命令 ” 输入 echo Desc: $MyDescriptionecho 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"(上面是一行)

    关于curl - 如何在通过 curl 触发构建时设置 Jenkins 构建描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503736/

    相关文章:

    google-app-engine - 如何以编程方式访问安全且经过身份验证的 Appengine 应用程序

    PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    Curl 内存缓冲区大小太小

    javascript - Google Drive API 使用 curl 调用创建文件而不是文件夹

    jenkins - 无法通过 SCM 跳过插件跳过 Jenkins 构建

    ubuntu - 如何远程配置 Jenkins?

    linux - Jenkins git fetch 返回状态码 143

    git - 推送到 CI 服务器中的 GitLab 存储库(部署 key )

    build - Jenkins maven 构建依赖项目?

    Jenkins 无法访问 java : localhost jenkins[807]: Starting Jenkins bash:/usr/bin/java: Permission denied