如何在詹金斯中动态更改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