Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

execute shell step skipped completely in jenkins

Tags:

jenkins

I can't seem to run a build execute shell step in Jenkins. I've worked with Hudson in the past on windows and I was able to create shell/batch steps without a problem but I seem to be be missing something here.

It's a fresh jenkins install and I go to "add build step", "execute shell" and enter "echo hi" in the command. I run the build and when I look in the console output, nothing happens.

I've also tried executing a test.sh file which also just echoes hi. I've tested this in both a linux install and an os X installed Jenkins server.

What am I missing in the configuration to run a shell script?

The console output shows that the shell script steps were skipped completely

Started by user admin
Finished: SUCCESS
like image 250
MonkeyBonkey Avatar asked Jan 13 '12 14:01

MonkeyBonkey


People also ask

How fail Jenkins job if shell script fails?

By default Jenkins take /bin/sh -xe and this means -x will print each and every command. And the other option -e , which causes shell to stop running a script immediately when any command exits with non-zero (when any command fails) exit code. So by adding the #!/bin/sh will allow you to execute with no option.

What happens when a shell script is executed?

When the program being executed is a shell script, bash will create a new bash process using a fork. This subshell reads the lines from the shell script one line at a time. Commands on each line are read, interpreted and executed as if they would have come directly from the keyboard.


1 Answers

It looks like Jenkins is not being able to redirect the output from the system. What version of Java are you using? If you're using OpenJDK, could you try with Sun Java/Sun JDK?

First test to try to check if anything is executing at all: add the following to your "Execute Shell"

#!/bin/bash
echo "HELLO WORLD" > /tmp/testfile

Run this and check if there is a /tmp/testfile in on your Linux system, and if it contains the HELLO WORLD text, it means your script is in fact executing.

Which version of Jenkins do you have?

The last good version that I can attest to (last one I know works well at least for us) is 1.447. If you're not using that one, would you be able to try with it?

Also, could you add #!/bin/sh or #!/bin/bash before echo hi on your "Execute Shell" for the Linux system and see if that works.

Also, try running a script using source /path/to/script and see if that works. The script should contain #!/bin/sh or #!/bin/bash as the first line, just to see if that makes a difference.

Note: none of this should be required, but is helpful just to get more information on what's going on. Couldn't fit all this into a comment. I'll update my answer based on your answers to the above, or delete if I can't get anything..

like image 69
Sagar Avatar answered Sep 18 '22 02:09

Sagar