一尘不染

从Jenkins中的pom文件自动派生强制性SonarQube属性

jenkins

情况:

我想用由詹金斯(1.642.4)触发的SonarQube(5.4)分析我的项目。它是使用maven构建的Java项目。

我看到两种触发分析的方法:

  1. 发布构建操作“使用maven进行SonarQube分析”,但 已弃用 ,所以我不想使用它
  2. 推荐的构建后步骤是“执行SonarQube扫描仪”。

问题:

如果我使用了不赞成使用的Post Build Action,那么声纳项目配置的属性会自动从项目pom派生。

我使用推荐的后期构建步骤,但收到异常

您必须为“未知”定义以下必需属性:sonar.projectKey,sonar.projectName,sonar.projectVersion,sonar.sources

不希望的解决方案

解决方案是通过java项目中的sonar-project.properties文件或Jenkins步骤中的参数提供所需的属性。

恕我直言:这是重复的。所有相关信息都在Maven
pom中定义:projectKey可以从artifactId派生,projectName和projectVerstion是maven中的相同属性。特别是projectVersion至关重要。我不想在每个发行版之后更新项目版本(或在发行插件中编写一些代码以自动更新它)。

我想要的是

我想在Jenkins中使用推荐的Post Build
Step,而无需为我的所有项目重新定义所有项目属性以使声纳开心。相反,声纳/詹金斯/插件/无论应该从我的Maven
pom文件中获取属性。我可以使用其他插件吗?我可以重新配置我的Jenkins-Sonar-Plugin吗?

我不想在pom /项目中提供任何声纳特定的信息,因为该项目不应该关心声纳。它应仅包含构建项目所需的信息。


阅读 258

收藏
2020-07-25

共1个答案

一尘不染

该文档(尽管有些混乱,请参见下面的编辑)说明了如何使用通用的生成后步骤(利用环境变量),而不是不建议使用的生成后操作。简而言之:

  • 在Jenkins中安装最新的SonarQube插件(截至目前为v2.4)
  • 在SonarQube服务器下的System Config中: Enable injection of SonarQube server configuration as build environment variables
  • 在您的Maven项目的配置中:
    • 检查 Prepare SonarQube Scanner environment
    • 添加一个构建后步骤,Invoke top-level Maven targets并在Goals字段中利用注入的环境变量,例如:

$ SONAR_MAVEN_GOAL -Dsonar.host.url = $ SONAR_HOST_URL -Dsonar.login = $
SONAR_AUTH_TOKEN

编辑
:当文档说时The Post-build Action for Maven analysis is deprecated.,它是指 不再记录的旧的构建后 操作
。该警告之后的段落(对此答案进行了总结)确实是推荐的步骤。如果仍不清楚,请在此处进行说明。

2020-07-25