【问题标题】:Automatically remove Sonarqube branch projects when git branch merged / removedgit 分支合并/移除时自动移除 Sonarqube 分支项目
【发布时间】:2016-11-08 08:04:28
【问题描述】:

我们目前有一个使用 Multibranch Workflow plugin 的 jenkins 管道。每个 git 分支执行一个 sonarqube 分析,使用 sonar.branch 属性创建一个 sonarqube 项目。这非常有用,因为在合并之前正在分析每个分支,当分支与 master 合并并在 GIT 上消失时会出现问题,项目在 sonarqube 上继续,需要手动删除。 有没有办法自动完成?或任何其他建议?

【问题讨论】:

  • 有解决办法吗,请全面分享
  • 还没有,找到的唯一解决方案是使用商业解决方案。我仍在为社区版本寻找不同的解决方案。
  • 我找到了一个解决方案并在下面发布了答案,请检查它是否有帮助。

标签: jenkins sonarqube sonarqube-ops


【解决方案1】:

删除 SonarQube 分支项目的最佳方法是首先不将它们推送到服务器。以下是您的选择:

在 SonarSource,我们每天都使用 SonarLint 和 GitHub 插件。最后一种解决方案是使用api/projects/delete Web 服务手动删除项目。

【讨论】:

  • 如果你使用像Jenkins这样的持续集成系统,当你在git上从master创建一个分支时,jenkinsfile也会被复制,避免声纳分析意味着修改这个文件。在某些情况下,开发人员会忘记这一步。
  • 我们和 Travis 有同样的“问题”。这就是为什么我们的脚本在运行 SonarQube 分析之前会进行一些条件检查(我们是否在 master 分支上)。
  • 我希望我的分支在声纳上,但我希望在合并/删除分支时删除它们。所以你使用 git 钩子在分支合并/删除时调用声纳 api/删除?
【解决方案2】:

如果您碰巧使用 Bitbucket Server 和 Sonar for Bitbucket Server 插件,则可以使用自动方式执行此清理。要从 Bitbucket Server 启用此设置,请按照以下屏幕截图中显示的 3 个步骤操作。

Screenshot of 3 steps

【讨论】:

  • 如果可以购买插件,也许是最好的解决方案,但并不总是可行的。
  • 如果您不能投入 10 美元/10 个用户,您可能也不应该将时间投入到持续集成/代码 QA 上。对于这样的项目,您可能只需要极限编程和非常简单的 SCM。只是说。 SonarQube 之类的东西只有在面向业务的团队中才有意义——对于其他所有事情,一个简单的 cronjob 就可以解决问题。
  • 我的情况不同,bitbucket 的用户数量很大(+2000),但 sonarqube 的用户数量很少(小于 100)。也许检查项目和存储库的自定义计划任务是一种解决方案。
【解决方案3】:

您可以如下定义一个方法来完成这项工作,然后根据您的需要或在某些事件(如 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'"
}

【讨论】:

  • 有趣。当分支被删除或合并时,我应该启动这个脚本。我将审查该解决方案。非常感谢。
  • 对您有帮助吗?
  • 是的,这是我找到的最佳选择。谢谢
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
相关资源
最近更新 更多