Как извлечь распакованную версию из build.gradle в конвейер Jenkins - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь извлечь версию своего приложения из build.gradle, но я не получаю, как хочу.

В моем build.gradle у меня есть несколько свойств и одно, которое я хочу:

version = '1.4.1-SNAPSHOT'

Итак, на моем Jenkinsfile я сделал:

def version_value = sh(returnStdout: true, script: "cat build.gradle | grep -o 'version = [^,]*'").trim()
sh "echo Project in version value: $version_value"
def version = version_value.substring(0, version_value.indexOf('='))
sh "echo final version: $version"

И я получаю следующееошибка:

+ cat build.gradle
+ grep -o version = [^,]*
[Pipeline] sh
[QR_CODE_GATEWAY] Running shell script
+ echo Building project in version value: version = 1.4.1-SNAPSHOT
Project in version value: version = 1.4.1-SNAPSHOT
+ version = 
/var/jenkins_home/workspace/PROJECT@tmp/durable-bbc0290d/script.sh: 3: /var/jenkins_home/workspace/PROJECT@tmp/durable-bbc0290d/script.sh: version: not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

Я ценю помощь.Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

Вы должны попробовать использовать split, чтобы разрезать строку на 2 массива из знака "=". Затем возьмите второй массив [1]:

def version_value = sh(returnStdout: true, script: "cat build.gradle | grep -o 'version = [^,]*'").trim()
sh "echo Project in version value: $version_value"
def version = version_value.split(/=/)[1]
sh "echo final version: $version"
...