https://github.com/jenkinsci/bitbucket-build-status-notifier-plugin
我们使用了Jenkinsfile的共享管道代码功能以及多分支管道-我们所有的Jenkinsfile代码都驻留在一个存储库中,并且每个应用程序仅对该存储库中的函数进行参数化调用。
问题出在插件时发布状态-它发布到共享管道代码的仓库中,而不是正在构建的应用程序中!否则它将无法正常工作,并快速进行身份验证和发布状态。
未对该插件进行参数化,以允许我传递一个提交ID,这意味着该ID是从环境变量派生的,大概是小说其他插件未使用的方式。该插件专门引用了更改,以简化Jenkinsfile和多分支管道。我怀疑我的scm checkout命令可能存在竞争状况,也许在对scm checkout进行任何调用之前已初始化bitbucket插件? jenkins.err不包含任何错误,因为没有任何异常。我是否可以更改环境变量,以强制从共享管道代码存储库到应用程序代码存储库的上下文切换?
#1 楼
这是一个已知的错误。参见JENKINS-42878和JENKINS-41996。该错误已在上游得到解决,这意味着您应该能够通过将插件升级到最新版本来修复该错误。评论
感谢您的回应。我正在使用此插件的最新版本-这两个错误似乎都与我遇到的问题有关,但仅是附带的副作用,我怀疑此修复程序可能尚未得到验证。不过,这是该问题的良好背景-谢谢!我还不清楚一个每月下载数千次的插件如何在没有开放bug的情况下出现如此明显的问题!
–esoterydactyl
17-10-28在1:39
#2 楼
基于此PR,添加了repoSlug
,现在状态被发送到正确的存储库。不工作时:
post {
success {
bitbucketStatusNotify(
buildState: 'SUCCESSFUL',
commitId: env.GIT_COMMIT
)
}
failure {
bitbucketStatusNotify(
buildState: 'FAILED',
commitId: env.GIT_COMMIT
)
}
}
现在有效:
post {
success {
bitbucketStatusNotify(
buildState: 'SUCCESSFUL',
repoSlug: 'repoSlug aka repositoryName, e.g. some-app',
commitId: env.GIT_COMMIT
)
}
failure {
bitbucketStatusNotify(
buildState: 'FAILED',
repoSlug: 'repoSlug aka repositoryName, e.g. some-app',
commitId: env.GIT_COMMIT
)
}
}
Github存储库中的自述文件强调:
请注意repoSlug和commitId参数仅在同时指定它们的情况下才能工作。
评论
repoSlug只是存储库的名称,我花了几个小时才弄清楚这一点。因此,如果您有此存储库:bitbucket.org/company/saas-frontend。仓库将是:saas-frontend
– Shahar Hamuzim Rajuan
19-09-3在8:47
@ShacharHamuzimRajuan是的,是的。我将更新答案。
– 030
19-09-3在10:31
评论
答案之一解决了这个问题吗?