Jenkins build step fails when calling “npm” on mac-os-x Yosemite

1,174 views
Skip to first unread message

Gabriel C. Troia

unread,
May 11, 2015, 9:30:24 PM5/11/15
to jenkins...@googlegroups.com

Before I start, I want to say that I already checked these answers:

Jenkins build step fails on 'npm install <whatever>'

Jenkin's build failing on npm install

Now, I'm dealing with this issue for a while already and thus I tried a bunch of stuff.

Firstly, I installed node + npm via homebrew. A simple $ node -v and $ npm -v echoed the version v0.10.36 for node and v2.3.* for npm, which also means I HAVE THEM IN THE PATH and they work while called in the terminal.

Simply adding node -v; npm -v to the execute shell in Jenkins didn't do it. After a bit of tinkering I copied what $: which node yielded in the terminal to the above mentioned script, which now looked like this: /usr/local/bin/node and apparently that worked. The Jenkins build succeeded and 'node-v0.10.36' was proudly displayed in the console output.

When doing the same for 'npm' which happened to be /usr/local/bin/npm --version the computing gods weren't so merciful anymore. A big 'env: node: No such file or directory' error was thrown this time and the whole build failed.

The actual command that fails is $ /bin/sh -xe /var/folders/wr/g_dl81tn5_x0t_yz3jw602cr0000gn/T/hudson8770480548136671253.sh and "surprisingly" when I run the same command in the terminal it succeeds.

I also uninstalled the homebrew node & npm versions and installed them afterwards via the package manager. Same results.

Ultimately I also did this: https://gist.github.com/DanHerbert/9520689, with no luck.

Notes:

  • I'm running Jenkins 1.613 and tried with 1.5**
  • I didn't create a "Jenkins" specific user but instead I'm using the admin. This happens to be the same user that Jenkins runs, since the who am i command inside the executable script yields the admin's user name.
  • sudo'ing doens't help
  • I'm also running the whole thing in a Virtual Environment - vagrant
  • I'm not running Jenkins as a deamon, as it's conflicting with xtools, but as a simple process
  • I also tried out jenkins-node plugin with various configs (can detail if needed)

Thanks a lot for your help, and let me know if you need any other info, screenshots, logs, etc.

Richard Bywater

unread,
May 11, 2015, 9:35:51 PM5/11/15
to jenkins...@googlegroups.com
Is /usr/local/bin in the PATH variable for the user that Jenkins is running as? Sounds like it isn't but if you fix that it should "just work".

Richard.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/cc5a5d98-d706-4366-bd72-154454c42b45%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

gabriel catalin troia

unread,
May 11, 2015, 9:43:37 PM5/11/15
to jenkins...@googlegroups.com
Hi Richard,

the PATH actually exists in ~/bash_profile.rc. The solution I found here though, was to export the path in the actual script, each time the build process runs. This seems kinda' hacky and a bit weird but it works.

Thanks for your reply,
Gabriel

--
You received this message because you are subscribed to a topic in the Google Groups "Jenkins Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jenkinsci-users/We28-Fi9M5c/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAMui947VzvLVP70E0r2NkJZBiQn9ub2U3GSucUqKwBfov%3DXuug%40mail.gmail.com.

Richard Bywater

unread,
May 11, 2015, 9:54:51 PM5/11/15
to jenkins...@googlegroups.com
I should have probably also asked what your Jenkins setup is - that is, is the Mac part just a Jenkins Slave run by another master or is the Mac also your Jenkins Master. (And then if it is the Jenkins master, how are you starting it up?)

Answers to these questions will help determine the best location for the PATH statement as depending on what option has been used, some files may or may not get read (and hence PATH may not be being picked up)

Richard.

gabriel catalin troia

unread,
May 11, 2015, 10:00:24 PM5/11/15
to jenkins...@googlegroups.com
Hmm,

My environment is a bit unconventional. I'm running a virtual instance of Yosemite, which acts as the Jenkins Master, using Vagrant. It's configured to start up at launchtime like so: 

ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents




Richard Bywater

unread,
May 11, 2015, 10:19:12 PM5/11/15
to jenkins...@googlegroups.com
I don't know if it works or not but you could try the way to set path mentioned @ http://serverfault.com/questions/16355/how-to-set-global-path-on-os-x

Basically looks like you could add a file within /etc/path.d called 'localbin' (or something) with '/usr/local/bin' in the file and it might end up getting added to the PATH (possibly after reboot?)

Richard.

gabriel catalin troia

unread,
May 11, 2015, 10:21:26 PM5/11/15
to jenkins...@googlegroups.com
This looks promising. I'll give it a shot tomorrow, and will let you know.

Thanks a lot,
Gabriel

Reply all
Reply to author
Forward
0 new messages