Sur ce serveur Linux, j'ai un utilisateur nommé "myuser". Pour cet utilisateur, en faisant écho au chemin, j'obtiens ceci:
/home/myuser/bin:/home/myuser/.local/bin:/home/myuser/.nvm/versions/node/v6.11.1/bin:/usr/local/sbin:/usr/local/bin:/ usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Ayant une application de nœud, lors du déploiement manuel, je lance:
npm i
Et il fonctionne.
Maintenant, j'ai installé Jenkins. Le projet Jenkins que j'essaie d'installer se trouve à:
/var/lib/jenkins/workspace/test
La build exécute un script Shell. Dans cette fenêtre, je suis entré:
#!/bin/bash
npm i
Lors de la construction avec Jenkins, j'obtiens ceci:
[test] $ /bin/bash /tmp/jenkins756533162549346948.sh
/tmp/jenkins756533162549346948.sh: line 3: npm: command not found
Build step 'Execute Shell' marked build as failure
Finished: FAILURE
Si j'écris seulement:
echo $PATH
dans le Jenkins Shell, je reçois ceci:
[test] $ /bin/sh -xe /tmp/jenkins5067097808572366507.sh
+ echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
[test] $ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/6.11.1/bin/node /tmp/jenkins8733250738704177758.js
Finished: SUCCESS
Comme vous pouvez le voir, j'ai installé le plugin nodejs. Quoi qu'il en soit, lorsque vous utilisez Jenkins Shell, le npm et même le nœud ne sont pas trouvés. Comment puis-je faire en sorte que Jenkins sache où se trouve npm/node? J'ai essayé d'écrire d'abord ceci dans le Shell:
$ PATH =/home/myuser/.nvm/versions/node/v6.11.1/bin
Mais toujours pas de chance.
Installez simplement le nodeJS plugin
pour jenkins, vous pouvez le trouver ici .
Après avoir installé le plugin, redémarrez jenkins et accédez aux configurations globales pour spécifier la version.
Les détails complets des configurations peuvent être trouvés dans la documentation du plugin liée ci-dessus.
Pour accéder à la page du plugin dans jenkins 2.x:
allez simplement à
Manage Jenkins > Manage Plugins
vue, disponible pour les administrateurs d'un environnement Jenkins. - https://jenkins.io/doc/book/managing/plugins/
Cependant, je recommande d'utiliser pipelines au lieu d'un plugin pour le processus CI:
Les pipelines sont des instructions pour décrire des parties de votre pipeline de livraison de logiciels .
Ajoutez cette configuration de pipeline à votre projet node.js sur jenkins pour le faire fonctionner.
pipeline {
agent {
docker {
image 'node:6-Alpine'
args '-p 3000:3000'
}
}
environment {
CI = 'true'
}
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh './jenkins/scripts/test.sh'
}
}
}
}
Comme vous pouvez le voir, cela se déroule en deux étapes, construction et test pour l'application. npm
est installé via l'image docker node:6-Alpine
.
Les documents Jenkins fournissent un didacticiel complet pour créer une application nodejs via CI: https://jenkins.io/doc/tutorials/build-a-node-js-and-react-app-with-npm/ =
Les réponses dans ce fil de discussion ne m'ont pas aidé, ce qui a aidé a été d'ajouter l'outil node.js à mon fichier Jenkins:
pipeline {
agent any
tools {nodejs "nodejs"}
stages {
stage('Example') {
steps {
sh 'npm config ls'
}
}
}
}
Où la chaîne "nodejs"
est le name
que vous donnez à l'outil node.js dans le global tool configuration
Après avoir installé NodeJS, redémarrez votre PC, npm sera visible par Jenkins
utilisé nvm pour installer Node.js
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install 4.4.5
node -v //4.4.5
Aussi, dans jenkins, Gérer Jenkins >> Outil global conf >> Installation de Nodejs