如何在jenkins中动态更改sonarqube projectVersion编号

时间:2018-05-07 06:55:28

标签: jenkins sonarqube sonarqube-scan

我尝试在jenkins中动态更新sonarqube版本,方法是在https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle添加sonar.projectVersion = $ {project.version}或在此处添加sonar.projectVersion = $ {$ APP_BUILD_NUMBER} APP_BUILD_NUMBER环境变量但不考虑使用它是版本名称。

完整分析属性

# required metadata
sonar.projectKey=myproject
sonar.projectName=myproject
sonar.projectVersion=2.0.2
sonar.sourceEncoding=UTF-8


# path to source directories (required)
sonar.sources=src/main/java

# List of the module identifiers
sonar.modules=app,ui
ui.sonar.projectBaseDir=ui
# Properties can obviously be overriden for
# each module - just prefix them with the module ID
app.sonar.projectName=App

# Uncomment this line to analyse a project which is not a java project.
# The value of the property must be the key of the language.
sonar.language=java

# java version used by source files:
sonar.java.source=1.8

3 个答案:

答案 0 :(得分:0)

更详细的问题有助于更好地回答。在这里,我做出了更好的回答。

我假设您尝试更新的动态版本名称是jenkins内部版本号。可以通过jenkins环境变量 $ {BUILD_NUMBER} 访问。您可以直接在" Execute Shell"中使用它。 (即)echo ${BUILD_NUMBER}将起作用。

您也可以使用其他环境变量。例如: $ {BUILD_TAG} 。你可以找到jenkins环境变量列表http://JENKINS-URL/env-vars.html/

这些环境变量也可用于构建脚本(即ANT,Maven,Gradle等)。只需确保,您已使用正确的方法访问构建脚本中的环境变量。 对于Ant:

<property environment="env"/>
<property name="sonar.projectVersion" value=${env.BUILD_NUMBER}"/>

答案 1 :(得分:0)

@Simon Schrottner

我们在詹金斯(Jenkins)中使用了以下内容(注意:我们使用了Gradle)

sonar.projectKey=$JOB_NAME
sonar.projectName=$JOB_NAME
sonar.projectVersion=$BUILD_NUMBER
sonar.exclusions=vendor/**, storage/**, resources/**
sonar.language=java
sonar.sources=$WORKSPACE
sonar.sourceEncoding=UTF-8
sonar.java.binaries=$WORKSPACE/build/classes/java/main

答案 2 :(得分:0)

就我而言( android项目)。我改用这两种方法

使用android配置属性

>>> from urllib.parse import quote_plus
>>> quote_plus("mysql://root:password@1234@127.0.0.1/database1")
'mysql%3A%2F%2Froot%3Apassword%401234%40127.0.0.1%2Fdatabase1'

使用git标签

此方法使用android {} dependencies {} sonarqube { properties { // ... // get the versionCode, buildVariantName, versionName // or anything you want to configure. property("sonar.projectVersion", "${project.android.defaultConfig.versionName}") // ... } ,它将获得连接到分支的最新标签:

git describe --always

以上$: ./gradlew sonarqbue -DprojectVersion=`git describe --always` 自变量中的打开和关闭 ` (刻度)表示执行命令。在这种情况下,./gradlew

如果我们要更改存储库或CI / CD平台(例如:迁移以使用Gitlab CI ),或者您可能想检查特定CI上的预定义环境变量,则上述方法也更安全。 / CD平台来满足git describe --always动态值。

受到这个答案here

的启发