J'essaie de faire en sorte que Jenkins construise mon projet Ionic sur mon mac mini, mais il y a des erreurs avec
Dev-Mac-mini:bin Development$ which ionic /usr/local/bin/ionic
J'ai le fichier Jenkins suivant ..
pipeline { agent any, environment { PATH='/usr/local/bin:/usr/bin:/bin' } stages { stage('Starting') { steps { echo 'Starting' } } stage('npm install') { steps { sh 'npm install' } } stage('IOS Build') { steps { sh 'ionic cordova build ios --prod --release' } } } }
Ionic devrait être dans / usr / local / bin
, par exemple si j'obtiens ce qui suit ..
line 1: ionic: command not found script returned exit code 127
Et si j'exécute ionic
à partir de la ligne de commande, il est trouvé.
Enfin, le npm
fonctionne bien.
Toutes les idées quoi il ne trouverait pas le cli ionique
?
Merci d'avance
4 Réponses :
Essayez d'utiliser withEnv
:
withEnv([ "PATH+LOCAL=/usr/local/bin" ]) { stage('IOS Build') { steps { sh 'ionic cordova build ios --prod --release' } } }
J'ai essayé d'utiliser ce qui précède, mais quand je suis allé dans l'écran d'édition de Blue Ocean, j'ai obtenu Une erreur s'est produite lors du chargement du pipeline à partir du fichier Jenkins dans ce référentiel. Corrigez l'erreur en éditant le fichier Jenkins à l'aide de la syntaxe déclarative, puis validez-le dans le référentiel. attendant '}', trouvé '' @ ligne 27, colonne 1.`
Il est toujours préférable d'utiliser la version d'ionic que vous avez ajoutée en tant que dépendance de développement. Et dans Jenkinsfile, vous pouvez l'invoquer comme ci-dessous.
sh "./node_modules/ionic/bin/ionic cordova build ios --prod --release"
Devrait toujours pouvoir utiliser la CLI installée globalement (je l'ai globalement, et non local)
Dans mon cas, il semble que la partie Blue Ocean
de Jenkins n'aime pas que vous éditiez le fichier Jenkins en dehors de son propre éditeur. C'est ce que je faisais (juste éditer à partir de l'éditeur Gitlab). Peut-être que j'avais des caractères invisibles, car j'ai même fini par avoir des erreurs disant qu'il n'aimait pas agent any
!.
La bonne réponse est ici: https://stackoverflow.com/a/30905787/6437038
TLDR : ajoutez #! / bin / bash -l
au début de la tâche jenkins
Essayez de redémarrer l'agent jenkins si vous utilisez le style de communication d'agent maître. Sinon, redémarrez l'instance ou le service jenkins.