Jenkins Pipeline -如果脚本未找到任何更改,则作业失败

dohp0rv5  于 2023-06-28  发布在  Jenkins
关注(0)|答案(1)|浏览(147)

我正在使用jenkins job,它获取更改的目录,以便稍后在此目录中运行terragrunt plan。要获得这些更改,我用途:

def directories = sh([script: "git diff HEAD~1 --name-only | xargs dirname | sort | uniq | grep terragrunt/okta", returnStdout: true]).trim()

我使用grep只获取存储.hcl文件的目录,看起来如果在这些目录(terragrunt/okta)中没有更改,则该脚本将无法工作并导致构建失败。不幸的是,我在控制台输出中没有得到任何更多的信息:

+ git diff HEAD~1 --name-only
+ xargs dirname
+ sort
+ uniq
+ grep terragrunt/okta
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Pull Terragrunt)
Stage "Pull Terragrunt" skipped due to earlier failure(s)

这很奇怪,因为如果我在我的控制台中使用这个命令(没有returnStdouttrim函数,它可以工作,但在jenkins管道中使用这些方法会产生问题。有没有办法解决这个问题/异常?
编辑:解决方案
我通过为grep添加||来解决这个问题-如果这个脚本没有从grep返回任何内容,那么我使用echo ''

hzbexzde

hzbexzde1#

在Jenkins中尝试不使用trim。如果你修剪你假设一些输出总是在那里。也许这里的情况并非如此。

相关问题