как динамически изменить номер версии проекта sonarqube в jenkins

Я попытался динамически обновить версию sonarqube в jenkins, добавив sonar.projectVersion=${project.version}, предложенный в 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

person Krishnan    schedule 07.05.2018    source источник
comment
не могли бы вы предоставить свою конфигурацию jenkins со скриншотами. и уточните, используете ли вы файл sonar-project.properties или вводите другие настройки?   -  person Simon Schrottner    schedule 07.05.2018
comment
Вы можете использовать сценарий оболочки для изменения содержимого текстового файла. Вы можете создать переменную и внедрить ее в файл свойств сонара и сделать это.   -  person Vighnesh Pai    schedule 07.05.2018


Ответы (3)


Более подробный вопрос помог бы лучше ответить. Здесь я сделал предположения, чтобы ответить лучше.

Я предположил, что имя динамической версии, которую вы пытаетесь обновить, — это номер сборки 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}"/>
person Fidel    schedule 07.05.2018

В моем случае (проект для Android). Я использую либо этот 2 подхода, либо

Использование свойства конфигурации 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 аргументах означает выполнение команды. В данном случае git describe --always

Вышеуказанный подход также безопаснее, если мы хотим изменить наш репозиторий или платформу CI/CD (например, мигрировать на использование Gitlab CI) или вам может понадобиться проверить предопределенные переменные среды на конкретной платформе CI/CD. для удовлетворения projectVersion динамического значения.

Вдохновленный этим ответом здесь

person mochadwi    schedule 15.12.2019

@Саймон Шроттнер

Мы использовали следующее в 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
person Mahendra Korat    schedule 02.01.2019