dsakpal dsakpal - 1 year ago 55
Bash Question

'Nant' as not recognized command on Jenkins Mac Slave

I have a Jenkins's master-slave structure setup created having Master on windows server, plus few windows slaves and one Mac-slave.
The flow is like this,

  1. Jenkins shell script triggers a shell command (sh sample.command) [this is used on both windows(using win-bash) and mac node.....]

The first step where it triggers the shell script is working fine on both windows and mac slave.

echo “This is a shell script acting as a middleware to trigger the NAnt....”
echo "Calling NAnt...."
nant ${1} ${2} ${3} ${4}

2.Now, the sample.command has a code to trigger a nant command, which is not working on mac slave and giving me an error :
nant: command not found

3.The NAnt is installed on the Mac-slave through brew and when I trigger this shell script sample.command from the Mac machine, it works fine and executes the nant command, but doesn't work through jenkins.

Any help would be appreciated, thanks in advance.

Answer Source

I was able to solve this by setting up the $PATH variable at the beginning of the shell script. Just added the below line in the shell script,

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet/bin

The Paths mentioned here might be different on other machines, what I did is, I checked the $PATH while calling the shell from Mac machine and copy-pasted and that worked.