web-dev-qa-db-fra.com

Jenkins n'exécutant pas de travaux (en attente - en attente du prochain exécuteur)

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?

52
Michael Easter

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):

  • allez à Jenkins -> Manage Jenkins -> Manage Nodes
  • examinez le noeud "maître" pour voir s'il est hors ligne. Il est possible que le nœud maître signale un manque d'espace disque.
57
Michael Easter

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.

16
eversMcc
  • allez à Jenkins -> Manage Jenkins -> Manage Nodes 
  • examinez le noeud "maître" (cliquez sur l'icône de configuration)

Dans mon cas, le nombre d’exécuteurs a été défini sur 0 .

13
PAVITRA

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:

  • Supprimer la ressource externe 
    (voir Jenkins -> Gérer Jenkins -> Gérer les nœuds -> maître -> configurer)
  • Redémarrer Jenkins
  • Recréez la ressource externe
4
Craig Thomas

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.

3
Claudiu

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.

3
Nick Constantine

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.

3
mdabdullah

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».

3
user3442998

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).

1
Fenix

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. 

1
SKR

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é.

0
Bobby Tait

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.

0
skwokie

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).

0
Srikanth Mukku

Vous avez peut-être défini des jalons et votre travail ne sera exécuté qu'une fois le travail précédent terminé.

0
albertski

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. 

0
Luis Solano

Dans mon cas, je dois définir Execute concurrent builds if necessary dans les paramètres généraux du travail.

0
Oleg Neumyvakin