Jenkins 使用带有管道的凭据的bitbucket生成状态通知插件

Jenkins 使用带有管道的凭据的bitbucket生成状态通知插件,jenkins,jenkins-pipeline,jenkins-plugins,bitbucket-api,bcbsn,Jenkins,Jenkins Pipeline,Jenkins Plugins,Bitbucket Api,Bcbsn,我一直在尝试让Jenkins的“Bitbucket构建状态通知程序”插件通知Bitbucket提交后的Maven构建是否成功 可用的文档非常好地解释了如何创建凭据并将其添加到Jenkins(我将它们全局添加到Jenkins master) 不幸的是,无论是插件页面()还是GitHub项目()都没有描述如何在notifier()的管道版本中使用Bitbucket凭据 我尝试在Jenkins文件中使用它,如下所示: pipeline { agent { label 'jenkins-sla

我一直在尝试让Jenkins的“Bitbucket构建状态通知程序”插件通知Bitbucket提交后的Maven构建是否成功

可用的文档非常好地解释了如何创建凭据并将其添加到Jenkins(我将它们全局添加到Jenkins master)

不幸的是,无论是插件页面()还是GitHub项目()都没有描述如何在notifier()的管道版本中使用Bitbucket凭据

我尝试在Jenkins文件中使用它,如下所示:

pipeline {

agent {
    label 'jenkins-slave'
}

stages {
    stage ('Build') {
        steps {
            script {
                withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '050a0876-fb6b-....',
                usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                    bitbucketStatusNotify(buildState: 'INPROGRESS')

                    sh '''#!/bin/bash
                        mvn clean package
                        ...
                      '''
                    bitbucketStatusNotify(buildState: 'SUCCESSFUL')
                }
            }
        }
    }
}
不幸的是,我似乎总是以

[Pipeline] // node
[Pipeline] End of Pipeline
java.lang.Exception: Credentials could not be found!
at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper.sendBuildStatusNotification(BitbucketBuildStatusHelper.java:262)
at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper.notifyBuildStatus(BitbucketBuildStatusHelper.java:252)
at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusNotifierStep$Execution.run(BitbucketBuildStatusNotifierStep.java:189)
at org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusNotifierStep$Execution.run(BitbucketBuildStatusNotifierStep.java:140)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
at hudson.security.ACL.impersonate(ACL.java:221)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Finished: FAILURE

这些凭据确实存在,但我不确定如何告诉管道脚本如何使用它们。

在阅读了更多关于Jenkins管道语法的内容并查看了代码段生成器语法提示(可在Jenkins主机上通过http://…/pipeline syntax/)后,我明白错误不在于使用凭据步骤,而在于使用“credentialsId”选项可用于此插件

pipeline {

agent {
    label 'jenkins-slave'
}

stages {
    stage ('Build') {
        steps {
            script {
                bitbucketStatusNotify(buildState: 'INPROGRESS', credentialsId: '050a0876-fb6b-....')
                sh '''#!/bin/bash
                    mvn clean package
                    ...
                  '''
                bitbucketStatusNotify(buildState: 'SUCCESSFUL', credentialsId: '050a0876-fb6b-....')

                }
            }
        }
    }
}
当您使用控制面板查看感兴趣的凭证时,它可能会帮助您从Jenkins中的URL获取凭证

似乎有点奇怪,每次都需要传递凭证id,也许有人可以发布如何定义默认凭证id