If you begin the build step with a line that starts with #!, Jenkins will assume you want to specify the interpreter instead of using /bin/sh -xe, which is the default. It is the -e switch of the shell which is responsible for aborting the script when a command exits with error.
You could place "#!/bin/sh -x" on the first line (without the quotes). But remember to watch for errors yourself, then. -- Sami [email protected] kirjoitti 14.8.2012 kello 18.49: > Hi there, > > I'm using Jenkins to build a C++ project on Solaris 10. > > To set up the environment I'm calling various shell scripts, of which one > contains the following code: > -- > for P in /usr/contrib/bin /usr/local/bin > do > cd $P > /dev/null 2>&1 > if [ $? -eq 0 ] > then > // XYZ > echo $P > fi > done > -- > > The directory "/usr/contrib/bin" does not exist. This makes the return value > in line 3 (cd $P > /dev/null 2>&1) negative and Jenkins stops the build > because it appears to be "failed". > > In the job configuration, section "Build shell" it already says that the > build is considered failed if one of the commands returns <> 0. > > This script has been used for compilation by many other projects for long > time, so I don't really want to change it. > > Is there any workaround or solution to this behaviour (except to create this > directory)? > > Regards, > Natalie
