我正在使用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)
这很奇怪,因为如果我在我的控制台中使用这个命令(没有returnStdout
和trim
函数,它可以工作,但在jenkins管道中使用这些方法会产生问题。有没有办法解决这个问题/异常?
编辑:解决方案
我通过为grep
添加||
来解决这个问题-如果这个脚本没有从grep返回任何内容,那么我使用echo ''
1条答案
按热度按时间hzbexzde1#
在Jenkins中尝试不使用
trim
。如果你修剪你假设一些输出总是在那里。也许这里的情况并非如此。