如何在詹金斯中动态更改sonarqube项目版本号
how to change sonarqube projectVersion number dynamically in jenkins
我尝试通过在 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle 或 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
更详细的问题会有助于更好地回答。这里我做了假设以便更好的回答。
我假设您尝试更新的动态版本名称是 jenkins 内部版本号。可以通过 jenkins 环境变量 ${BUILD_NUMBER} 访问。您可以直接在 "Execute Shell" 中使用它(即 echo ${BUILD_NUMBER}
会起作用。
您也可以使用其他环境变量。例如:${BUILD_TAG}。你可以找到可用的 jenkins 环境变量列表 http://JENKINS-URL/env-vars.html/
您的构建脚本(即 ANT、Maven、Gradle 等)也可以使用这些环境变量。只要确保您已使用正确的方法访问构建脚本中的环境变量。
对于蚂蚁:
<property environment="env"/>
<property name="sonar.projectVersion" value=${env.BUILD_NUMBER}"/>
@Simon Schrottner
我们在Jenkins中使用了following(注意:我们使用了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
以我为例(android 项目)。我改用这两种方法
使用android配置属性
android {}
dependencies {}
sonarqube {
properties {
// ...
// get the versionCode, buildVariantName, versionName
// or anything you want to configure.
property("sonar.projectVersion", "${project.android.defaultConfig.versionName}")
// ...
}
使用 git 标签
此方法使用git describe --always
,它将获取连接到分支的最新标记:
$: ./gradlew sonarqbue -DprojectVersion=`git describe --always`
上面./gradlew
参数中的open & close `(打勾)表示执行命令。在这种情况下 git describe --always
如果我们想要更改我们的存储库或 CI/CD 平台(例如:迁移到使用 Gitlab CI),上述方法也更安全,或者您可能想要检查特定 CI/CD 平台上的预定义环境变量以满足 projectVersion
动态值。
受到这个答案的启发here
我尝试通过在 https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle 或 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
更详细的问题会有助于更好地回答。这里我做了假设以便更好的回答。
我假设您尝试更新的动态版本名称是 jenkins 内部版本号。可以通过 jenkins 环境变量 ${BUILD_NUMBER} 访问。您可以直接在 "Execute Shell" 中使用它(即 echo ${BUILD_NUMBER}
会起作用。
您也可以使用其他环境变量。例如:${BUILD_TAG}。你可以找到可用的 jenkins 环境变量列表 http://JENKINS-URL/env-vars.html/
您的构建脚本(即 ANT、Maven、Gradle 等)也可以使用这些环境变量。只要确保您已使用正确的方法访问构建脚本中的环境变量。 对于蚂蚁:
<property environment="env"/>
<property name="sonar.projectVersion" value=${env.BUILD_NUMBER}"/>
@Simon Schrottner
我们在Jenkins中使用了following(注意:我们使用了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
以我为例(android 项目)。我改用这两种方法
使用android配置属性
android {}
dependencies {}
sonarqube {
properties {
// ...
// get the versionCode, buildVariantName, versionName
// or anything you want to configure.
property("sonar.projectVersion", "${project.android.defaultConfig.versionName}")
// ...
}
使用 git 标签
此方法使用git describe --always
,它将获取连接到分支的最新标记:
$: ./gradlew sonarqbue -DprojectVersion=`git describe --always`
上面./gradlew
参数中的open & close `(打勾)表示执行命令。在这种情况下 git describe --always
如果我们想要更改我们的存储库或 CI/CD 平台(例如:迁移到使用 Gitlab CI),上述方法也更安全,或者您可能想要检查特定 CI/CD 平台上的预定义环境变量以满足 projectVersion
动态值。
受到这个答案的启发here