当 Git 分支被合并/删除时自动删除 Sonarqube 分支项目

10

我们目前使用Jenkins的Multibranch Workflow插件来构建流水线。每个Git分支都会执行SonarQube分析,并使用sonar.branch属性创建一个SonarQube项目。这非常有用,因为在合并之前,每个分支都会被分析。但是,当一个分支与主分支合并并从GIT中消失时,该项目仍会存在于SonarQube上,需要手动删除。

是否有一种自动化的方法来解决这个问题?或者有其他推荐吗?


你有解决方案吗?如果有,请全面分享。 - Gentle
目前还没有找到其他解决方案,唯一找到的方法是使用商业解决方案。我仍在寻找社区版本的不同解决方案。 - Fernando Rosado
我已经找到了一个解决方案并在下面发布了答案,请检查是否有帮助。 - Gentle
3个回答

4
最好的方法是不要将SonarQube分支项目推送到服务器上。以下是您可以选择的选项: 在SonarSource,我们每天都使用SonarLint和GitHub插件。最后一种解决方案是使用api/projects/delete Web服务手动删除项目。

1
如果您使用像Jenkins这样的持续集成系统,当您从master上创建分支时,jenkinsfile也会被复制,避免sonarque分析意味着修改此文件。在某些情况下,开发者会忘记这一步。 - Fernando Rosado
2
我们在Travis上也遇到了同样的“问题”。这就是为什么我们的脚本在运行SonarQube分析之前会进行一些条件检查(我们是否在主分支上)。 - Julien H. - SonarSource Team
1
我希望我的分支在Sonar上,但是当分支被合并/删除时,我希望它们被删除。 所以你使用git hook来调用Sonar API / 删除分支合并/删除? - TheBakker

3
如果您正在使用Bitbucket Server和Sonar for Bitbucket Server插件,则有一种自动方式来执行此清理。要从Bitbucket Server启用此设置,请按照下面截图中显示的3个步骤进行操作。

3个步骤的屏幕截图


也许购买插件是最好的解决方案,但并非总是可行的。 - Fernando Rosado
如果你不能投资10美元/10个用户,那么你可能也不应该投入时间来进行持续集成/代码QA。极限编程和一个非常简单的SCM可能是你在这样的项目中所需要的全部。只是说一下。SonarQube等工具只有在面向商业团队时才有意义 - 对于其他所有情况,一个简单的cronjob可能就足够了。 - specializt
1
我的情况有所不同,Bitbucket的用户数量很大(+2000),但SonarQube的用户数量很少(不到100)。也许一个定制的定时任务来检查项目和仓库是一个解决方案。 - Fernando Rosado

2
您可以按照以下方式定义一个方法,来完成任务,然后根据您的需求或一些事件(例如git分支合并/删除等)随时调用该方法。
def deleteSonarProject() {
    def sonarToken = "-your admin credential token generate it from sonarServer-"
    def url = "http://yourBaseURL:portNumber/api/projects/delete"
    sh "curl -u ${sonarToken}: ${url} -d 'project=projectKey'"
}

有趣。当分支被删除或合并时,我应该启动这个脚本。我会审查那个解决方案。非常感谢。 - Fernando Rosado
1
它有帮助吗? - Gentle
是的,那是我找到的最佳选项。谢谢。 - Fernando Rosado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接