如何让Jenkins在条件语句中运行sh命令?如果它拉出一个以'WIP‘开头的git提交,我希望它中止执行。
我的设想是:
stage('Build') {
steps {
// some steps ...
script {
if (sh "git log -1 --pretty='format:%B' | grep -q ^WIP") {
currentBuild.result = 'ABORTED'
return
}
}
// more steps ...
}
}pretty我的管道报告“...but ')',found 'git log -1 --pretty=‘格式:%B’| grep -q ^WIP'”
发布于 2020-04-09 02:44:02
使用sh步骤的方式不会返回任何输出,sh(command)也不会返回任何输出。您需要使用sh(script: command, returnStdout: true)来获取外壳命令的输出。此外,您还需要从grep中删除-q参数,才能将任何输出返回到控制台。
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 ...
}
}发布于 2020-04-09 02:28:43
似乎是Groovy解析器的问题。只需将参数括在括号中:
if (sh("git log -1 --pretty='format:%B' | grep -q ^WIP"))https://stackoverflow.com/questions/61105806
复制相似问题