我和詹金斯有问题。我有一个像这样的循环(嵌入在for ... do..done循环中)
var=$(head $file | grep ERROR)
if [ ! -z "$var" ]; then
echo "Some error message"
.././converter.sh $file $file.TMP $file.ERR.txt
RESULT=$(expr $RESULT + 10)
fi
这个循环在从Cygwin发布时非常有效,但在Jenkins上启动时崩溃...... Jenkins从口中吐出的所有信息都是:
08:55:50 + for file in '*.DATA'
08:55:50 ++ grep ERROR
08:55:50 ++ head TESTFILE_1.DATA
08:55:50 + var=
08:55:50 Build step 'Execute shell' marked build as failure
08:55:50 Archiving artifacts
答案 0 :(得分:2)
在带有Execute Shell的Jenkins下运行(来自Execute Shell构建步骤的帮助文档):
默认情况下,将使用“-ex”选项调用shell。因此,所有命令在执行之前都会被打印,如果任何命令以非零退出代码退出,则构建被视为失败。再次,添加#!/ bin / ...行来改变这种行为。
重申一下,这意味着任何错误(例如grep退出时出现错误代码)都会导致脚本过早退出并出现错误。通常,当您执行此脚本时,它可能会成功,因为set -e
不是默认值。
确定这确实是问题的任何简单测试都是将Execute Shell脚本的第一行设置为#!/bin/sh -x