Jenkins n'exécutera aucun travail. Après avoir vu cette question , j'ai désactivé tous les nœuds esclaves, mais un travail simple ne sera même pas exécuté sur le nœud maître.
Qu'est-ce qui ne va pas?
La console d'administration Jenkins peut s'exécuter, même avec le nœud maître hors ligne. Cela peut arriver lorsque Jenkins manque d’espace disque.
Pour confirmer, procédez comme suit (avec geekride - jenkins-waiting-waiting-waiting-for-next-available-executor):
Dans mon cas, j'avais le set suivant dans mon JenkinsFile
node('node'){ ...}
Il n'y avait pas de noeud appelé 'noeud', seulement maître (la valeur y avait été laissée après avoir suivi quelques tutoriels de base). Changer la valeur en 'maître' a permis à la construction de fonctionner.
Dans mon cas, le nombre d’exécuteurs a été défini sur 0 .
Je suis un peu en retard au jeu, mais cela peut aider les autres.
Dans mon cas, mon maître jenkins a une ressource externe partagée, qui est allouée aux travaux jenkins par le external-resource-dispatcher-plugin . En raison d'un bogue JENKINS-19439 dans le plugin (qui est en version bêta), j'ai constaté que ma ressource avait été verrouillée par un travail précédent, mais qu'elle n'était pas déverrouillée lorsque ce dernier a été annulé.
Pour savoir si une ressource est actuellement verrouillée, accédez au nœud Jenkins concerné, Jenkins -> Gérer Jenkins -> Gérer les nœuds -> maître.
Vous devriez voir l'état actuel des ressources externes. Si certains sont verrouillés de manière inattendue, cela peut être la raison pour laquelle des travaux attendent un exécuteur.
Je n'ai pas trouvé de détails sur la façon de résoudre manuellement ce problème.
Le redémarrage de Jenkins n'a pas résolu le problème.
Finalement, je suis allé avec l'approche brutale:
Dans mon cas, je venais d'installer le plug-in "Authorize Project" et de configurer de manière incorrecte la stratégie dans "Manage Jenkins -> Configurer la sécurité globale -> Contrôle d'accès pour les versions" en tant que "Exécuter de manière anonyme". Donc, "anonyme" n'avait pas le droit d'exécuter le travail.
Définir la première stratégie comme "Exécuter en tant qu'utilisateur ayant généré la construction" a déverrouillé les travaux en file d'attente.
Dans mon cas, j'ai remarqué ce comportement lorsque la boîte était à court de mémoire vive (RAM) Je suis allé dans Jenkins -> Gérer Jenkins -> Gérer les nœuds et j'ai trouvé une exception de mémoire insuffisante. sur la machine et les travaux ont commencé à aller dans les exécuteurs.
Réponse courte: Tuez tous les travaux en cours d'exécution sur le maître.
Dans mon cas, il y avait 3 emplois suspendus sur le maître pendant plus de 10 jours qui étaient passés inaperçus. En général, nous n'exécutons aucune tâche directement sur le maître, tout est exécuté sur des esclaves. J'ai tué ces 3 travaux qui ont été suspendus, automatiquement les exécuteurs sur l'esclave ont commencé à prendre des emplois.
Indiquez que même si nous avons 8 esclaves, un seul esclave était dans cet état affecté.
[EDIT] Nous avons trouvé la réponse à la question de savoir pourquoi un seul esclave était dans cet état affecté. Lorsqu'un esclave Jenkins tombe en panne, tous les travaux en attente sont automatiquement transférés au maître. Tous les 3 travaux en attente que j'ai supprimés provenaient de cet esclave. Il est donc probable que le problème soit lié à la connexion entre le maître et cet esclave.
J'ai rencontré un problème similaire parce que mon maître était réglé sur "Quitter cette machine uniquement pour les tâches liées". Ainsi, même si j'ai désactivé l'esclave, Jenkins a continué à contourner le Maître, cherchant autre chose.
Allez à Jenkins -> Gérer Jenkins -> Gérer les nœuds, puis cliquez sur le bouton de configuration de votre nœud principal (qui ressemble à un tournevis et à une clé). Vérifiez l’utilisation et assurez-vous qu’elle est sur «Utilisez cet esclave autant que possible».
Dans mon cas, cela était dû à nombre d'exécuteurs (j'en avais 1) et à l'exécution de Jenkins Job (Projet) à partir de Pipeline (mon script de pipeline a démarré l'autre Job dans Jenkins). Cela a provoqué une impasse - mon pipeline a mis fin à l'exécution de mon exécuteur et attendait son travail, mais le travail attendait un exécuteur libre.
La solution peut être croissante de # of executors
dans Jenkins -> Manage Jenkins -> Manage Nodes -> Configure (icon on required node)
.
Pour moi, la solution ci-dessous a fonctionné.
Jenkins -> Gérer Jenkins -> Gérer les nœuds -> maître -> configurer -> Propriétés du nœud -> Restreindre l'exécution des travaux sur le nœud - est activé et donne accès à des utilisateurs spécifiques. J'ai donné l'accès moi-même et le travail a commencé à courir.
Si Restreindre l'exécution des travaux sur le noeud est activé, les tâches programmées ne peuvent pas être exécutées.
Ce qui a fonctionné pour moi: j'ai finalement remarqué la fenêtre Build Executor Status à gauche du tableau de bord principal Jenkins. J'exécute une instance dev/test sur mon système local avec 2 exécuteurs. Les deux étaient actuellement occupés par des versions qui ne fonctionnaient pas. Lors de l'annulation de ces tâches, mon troisième travail (en attente) a pu être exécuté.
Pour moi, je dois redémarrer les exécuteurs manuellement. Cliquez sur "Dead" sous "Build Executor Status" et appuyez sur le bouton de redémarrage.
J'ai rencontré un problème similaire car mon maître était défini sur "# d'exécuteur (nombre maximal de versions simultanées que Jenkins peut effectuer sur cet agent).
Allez à Jenkins -> Gérer Jenkins -> Gérer les nœuds, puis cliquez sur le bouton de configuration de votre nœud maître (augmentez le nombre d'exécuteurs pour exécuter plusieurs tâches à la fois).
Vous avez peut-être défini des jalons et votre travail ne sera exécuté qu'une fois le travail précédent terminé.
Dans mon cas, cela ressemble à @Michael Easter: j'ai un problème dans un travail en raison du manque d'espace disque. J'ai dégagé de l'espace, redémarré Jenkins mais le problème persiste.
La solution consistait à accéder à Jenkins -> Gérer Jenkins -> Gérer les nœuds et simplement cliquer sur le bouton pour mettre à jour le statut.
Dans mon cas, je dois définir Execute concurrent builds if necessary
dans les paramètres généraux du travail.