【问题标题】:Sonar analysis using multiple git branches in Jenkins在 Jenkins 中使用多个 git 分支进行声纳分析
【发布时间】:2013-03-13 20:31:10
【问题描述】:

我已经设置 Jenkins 来自动构建我项目的几个 git 分支。构建还会触发声纳分析,作为构建后操作。

问题是所有分支都指向同一个 Sonar 项目。我知道有一个 sonar.branch 属性。是否可以让 Jenkins 自动将 sonar.branch 属性设置为正在构建的当前 git 分支(无需更改项目的 pom.xml)?

【问题讨论】:

    标签: git maven jenkins sonarqube


    【解决方案1】:

    这应该可以工作

    mvn sonar:sonar -U -Dsonar.branch.name=$BRANCH_NAME
    

    【讨论】:

      【解决方案2】:

      您可以尝试在 jenkins 构建后操作(高级配置)的 MAVEN_OPTS 字段中添加-Dsonar.branch.name=something

      我不知道如何解决 something,因为我不知道您如何配置您的 jenkins 作业...但它可能类似于 $git.branch

      我没有尝试,所以我不确定它是否会起作用。

      在 Jenkins 多分支管道中,变量为 BRANCH_NAME

      附言 在阅读您的问题时,很难说您是否使用 Maven 来触发声纳。如果你没有使用 maven:there is a project properties field in the Jenkins config where you can define sonar.branch.

      【讨论】:

      • 我最终使用了您建议的方法,为每个分支使用不同的工作。我确实使用 Jenkins 来触发声纳,所以我为每个作业相应地设置了 sonar.branch 属性。我认为这还有一个优点,即只有在为该特定分支进行提交时才会触发构建作业,并且您还可以为更重要的分支等创建更细粒度的构建计划控制/通知。
      • 不适合我 :-( 我在 MAVEN_OPTS 中添加了 $GIT_BRANCH。仍然当我通过其他工作从其他分支构建时 - 显示覆盖范围的仪表板正在更改为最新分支运行的结果. 我希望它在我的分支中保持不变。
      • 分支名称将被专家化为环境变量或脚本插值。
      • 我认为sonar.branch.name 属性仅在商业版中可用,而在社区版中不可用。
      • @Datz,在 7 年前提出这个问题时,它在社区版中可用。你是对的,它现在只在开发者版及更高版本中。
      【解决方案3】:

      您是否使用构建参数来指定分支?

      如果是,您可以轻松告诉 Sonar 它是哪个分支,只需添加配置文本区域:

      sonar.branch=${branch}
      

      其中 branch 是构建参数的名称。

      【讨论】:

        【解决方案4】:

        我不确定这是否有助于您自动执行 Jenkins,但是要运行具有正确分支集的 mvn sonar:sonar,如果您在 Unix 中,您可以运行命令(注意反引号)基于环境:

        mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-03
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          • 2013-10-30
          • 1970-01-01
          相关资源
          最近更新 更多