2017-01-27 7 views
2

Как добавить текст в файл в Jenkinsfile инъекционные Дженкинс BUILD_IDКак добавить текст в файл в jenkinsfile

Я хотел бы видеть

version := "1.0.25" 

где 25 является BUILD_ID

Здесь моя попытка

import hudson.EnvVars 

node { 

    stage('versioning'){ 
    echo 'retrieve build version' 
    sh 'echo version := 1.0.${env.BUILD_ID} >> build.sbt' 
    } 
} 

Ошибка:

version:=1.0.${env.BUILD_ID}: bad substitution 

Обратите внимание на файл находится в текущем каталоге

ответ

6

env.BUILD_ID является заводной переменной, а не переменной оболочки. Поскольку вы использовали одиночные кавычки (') groovy будет не замените переменные в вашей строке, а оболочка не знает о ${env.BUILD_ID}. Вам нужно либо использовать doublequotes " и пусть заводной делать замены

sh "echo version := 1.0.${env.BUILD_ID} >> build.sbt" 

или использовать переменные оболочки знают

sh 'echo version := 1.0.$BUILD_ID >> build.sbt' 

и так как вам нужна версия окруженного doublequotes, вам нужно что-то вроде этого:

sh "echo version := \\\"1.0.${env.BUILD_ID}\\\" >> build.sbt" 
+0

Я изменил свой вопрос. Не могли бы вы помочь мне в обертке кода с двойными апострофами? Version: = «1.0.25» ' – QGA

+0

@QuentinTanioartino отредактировал мой ответ – tkausl

1

Чтобы расширить ответ @ tkausl, в трубопроводе writeFile встроенный также очень полезен здесь, но требует чтений + написать процесс добавления в файл.

def readContent = readFile 'build.sbt' 
writeFile file: 'build.sbt', text: readContent+"\r\nversion := 1.0.${env.BUILD_ID}"