Jenkins et PM2 forment un duo puissant pour l'intégration continue (CI) et le déploiement continu (CD) des applications Node.js. Jenkins orchestre les pipelines de CI/CD, tandis que PM2 assure une gestion efficace des processus de ces applications. Toutefois, une configuration inadéquate peut entraîner des problèmes d'accès aux processus PM2 démarrés par Jenkins. Cet article propose une solution éprouvée à ce problème fréquent, visant à faciliter la gestion des processus Node.js dans un environnement CI/CD.
Problématique Commune: L'Inaccessibilité des Processus PM2 avec Jenkins
Le problème se présente généralement lorsque PM2 est installé sous un utilisateur xxxxxxx
ou root
, et que Jenkins, s'exécutant sous son propre utilisateur, tente d'accéder à ces processus sans succès. Cette situation conduit à une incapacité pour Jenkins de démarrer, gérer ou même visualiser les processus PM2, ce qui peut entraver sérieusement les opérations de déploiement automatique.
La Solution : Installer PM2 Sous l'Utilisateur Jenkins
La clé pour résoudre ce dilemme est d'assurer que PM2 soit accessible et gérable par l'utilisateur Jenkins. Voici les étapes pour y parvenir :
-
Accéder à l'Utilisateur Jenkins :
Commencez par ouvrir une session terminal en tant que root
ou utilisateur ayant des privilèges sudo
. Changez ensuite d'utilisateur pour devenir jenkins
en exécutant :
sudo su jenkins
Si un mot de passe est requis pour l'utilisateur jenkins
et que vous ne l'avez pas encore configuré, vous pouvez le faire depuis l'utilisateur root
avec :
sudo passwd jenkins
-
Installer PM2 :
Une fois connecté en tant que l'utilisateur jenkins
, installez PM2 globalement en utilisant npm :
npm i -g pm2
Cette installation garantit que l'utilisateur jenkins
possède sa propre instance de PM2, accessible et entièrement gérable.
-
Vérification :
Pour confirmer que PM2 est correctement installé et fonctionnel sous l'utilisateur jenkins
, vous pouvez exécuter :
pm2 list
Cela devrait afficher une liste vide (si aucun processus n'est actuellement géré par PM2), indiquant que PM2 est prêt à être utilisé par Jenkins.
Avantages de Cette Solution
- Autonomie de Jenkins : Jenkins peut maintenant démarrer, arrêter et gérer les processus PM2 de manière autonome, sans dépendre d'autres utilisateurs ou installations.
- Sécurité Améliorée : En limitant l'usage de PM2 à l'utilisateur
jenkins
, vous réduisez les risques de sécurité associés à l'exécution de processus sous l'utilisateur root
.
- Flexibilité dans les Pipelines CI/CD : Cette configuration permet une intégration et un déploiement plus fluides et personnalisables des applications Node.js, en tirant parti de la puissance combinée de Jenkins et PM2.
Conclusion
L'intégration de Jenkins et PM2 est une stratégie éprouvée pour automatiser le déploiement d'applications Node.js. Cependant, la réussite de cette intégration repose sur une configuration appropriée permettant à Jenkins d'accéder et de gérer les processus PM2. En suivant les étapes décrites dans cet article, les développeurs et les ingénieurs DevOps peuvent surmonter l'obstacle de l'inaccessibilité des processus PM2 et optimiser leurs pipelines CI/CD.