![](/img/trans.png)
[英]Multi branch pipeline with bitbucket build status notifier plugin in jenkins
[英]bitbucket-build-status-notifier-plugin using credentials with pipeline
我一直在嘗試使用 Jenkins 的“Bitbucket Build Status Notifier”插件來通知 Bitbucket 提交后 Maven 構建是否成功。
可用的文檔很好地解釋了如何創建憑據並將它們添加到 Jenkins(我將它們全局添加到 Jenkins master)
不幸的是,插件頁面( https://wiki.jenkins-ci.org/display/JENKINS/Bitbucket+Cloud+Build+Status+Notifier+Plugin )和 GitHub 項目( https://github.com/jenkinsci/ bitbucket-build-status-notifier-plugin ) 沒有描述如何將 Bitbucket 憑據與通知程序的管道版本一起使用 ( https://issues.jenkins-ci.org/browse/JENKINS-33841 )
我曾嘗試在 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 管道語法的更多信息並查看了代碼段生成器語法提示(可通過 http://.../pipeline-syntax/ 在您的 Jenkins 主機上獲得)后,我明白錯誤不是使用 withCredentials 步驟,而是使用“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 似乎有點奇怪,也許有人可以發布如何定義默認值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.