2

我有几个 Jenkins 管道,都从 Bitbucket 导入了一个共享库,用于一些实用方法,我想将构建状态通知发送到每个项目自己的 Bitbucket 存储库。

我安装了Bitbucket 构建状态通知插件,但我遇到了一个奇怪的行为:当bitbucketStatusNotify在我的管道中被调用时,会发生这种情况:

Sending build status INPROGRESS for commit <sha> to BitBucket is done!

这没关系,但这<sha>是共享库上最后一次提交的提交 id,而不是正在构建的实际项目,因此构建状态通知实际上被发送到共享库 repo 而不是正确的。

我认为这是在 Jenkins 配置中将库设置为“隐式加载”的问题,因此我尝试@Library在我的 jenkinsfile 中显式加载它,但发生了相同的行为。

由于构建状态通知器插件无法指定要向其发送通知的提交 ID,因此我是否缺少将通知发送到正确的提交 ID 的东西?

4

1 回答 1

-1

以下是 Bitbucket Cloud 的示例:

首先在 Jenkins 上安装 HTTP Request 插件

然后使用以下管道代码:

void notifyBitbucket(state)
{
    def object_data = "{\"state\": \"${state}\",\"key\": \"${env.JOB_NAME} ${currentBuild.displayName}\",\"name\": \"${env.JOB_NAME} ${currentBuild.displayName}\",\"url\": \"https://jenkins/job/${env.JOB_NAME}/${currentBuild.number}/\",\"description\": \"\"}"
    def response = httpRequest authentication: '<credential ID>', acceptType: 'APPLICATION_JSON', contentType: 'APPLICATION_JSON', httpMode: 'POST', requestBody: object_data, url: "https://api.bitbucket.org/2.0/repositories/<user name>/<repo>/commit/<commit id>/statuses/build"
}
于 2018-02-23T12:47:39.693 回答