如何让Jenkins在条件内运行sh
命令?我希望它中止执行以'WIP'开头的git commit的执行。
我设想的是:
stage('Build') {
steps {
// some steps ...
script {
if (sh "git log -1 --pretty='format:%B' | grep -q ^WIP") {
currentBuild.result = 'ABORTED'
return
}
}
// more steps ...
}
}
...但是我的管道抱怨“期望')',发现'git log -1 --pretty ='format:%B'| grep -q ^ WIP'“
答案 0 :(得分:0)
似乎是Groovy解析器的问题。只需将参数括在括号中即可:
if (sh("git log -1 --pretty='format:%B' | grep -q ^WIP"))
答案 1 :(得分:0)
您使用sh
步骤的方式不返回任何输出,并且sh(command)
不返回任何输出。您需要使用sh(script: command, returnStdout: true)
来获取shell命令的输出。另外,您需要从-q
删除grep
参数,以将任何输出返回到控制台。
stage('Build') {
steps {
// some steps ...
script {
if (sh(script:"git log -1 --pretty='format:%B' | grep ^WIP", returnStdout: true).trim()) {
currentBuild.result = 'ABORTED'
return
}
}
// more steps ...
}
}