我正在尝试实现Jenkins bitbucket-build-status-notifier-plugin,可在此处找到:
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



#3 楼

也可以使用bcbsn作为替代。该工具将构建状态与正确的提交相关联,并将构建状态发送到正确的存储库。