I am in the middle of trying to implement a build/deploy job in Jenkins by which the latest version of source code is pulled from git, built and then deployed to GCP. So far I am able to retrieve the lastest code from GIT but have run into issues when tyring to build. The application being built/deployed is an Angular 7 web site using npm for package management. So the normal steps would be to run npm install to make sure the packages are installed and then ng build -- prod to build the app.
My issue is that the version of npm/nodejs in the master node is out of date and not compatable with Angular 7. Even just trying the command to gert the current ng version fails:
+ /usr/bin/ng v
You are running version v8.1.4 of Node.js, which is not supported by Angular CLI v6.
The official Node.js version that is supported is 8.9 and greater.
I added a call to npm version to check the npm version is is trying to use:
+ echo current user
current user
+ whoami
jenkins
+ npm -v
5.0.3
To investigate the issue I used putty to remote onto the jenkins box and ran npm -v and ng v to see what is installed and get:
jenkins@****-int1:~$ npm -v
6.5.0-next.0
Which is different to that reported by npm -v in the shell script.
jenkins@****:~$ ng v
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 7.1.4
Node: 11.6.0
OS: linux x64
Angular:
...
Package Version
------------------------------------------------------
@angular-devkit/architect 0.11.4
@angular-devkit/core 7.1.4
@angular-devkit/schematics 7.1.4
@schematics/angular 7.1.4
@schematics/update 0.11.4
rxjs 6.3.3
typescript 3.1.6
So it should have nodejs 11.6, I ran node -v to double check:
jenkins@****:~$ node -v
v11.6.0
BUT if I run nodejs -v I get:
jenkins@****:~$ nodejs -v
v8.1.4
I thought that node and nodejs were the same thing? so why would I have two different versions installed and how to fix this?
To double check what my Jenkins script is using I added a call to node -v in the script and as expected it reports the older version:
+ node -v
v8.1.4
I'm not a DevOps person, I'm C# back end developer who's been lumbered with sorting this out due staff changes. I know very little about Linux, Jenkins or this stuff in general.
I tried to update the node installation via the Jenkins Shell script using
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
But these were refused due to access rights (no sudo pwd I presume) and I don't know if that would've fixed the issue anyway.
Any help?