Jenkins führt keine Jobs aus (ausstehend - Warten auf den nächsten Executor)

76

Jenkins führt keine Jobs aus. Nachdem ich diese Frage gesehen habe , habe ich alle Slave-Knoten deaktiviert, aber ein einfacher Job wird nicht einmal auf dem Master-Knoten ausgeführt.

Was ist falsch?

Michael Ostern
quelle

Antworten:

78

Die Jenkins-Administratorkonsole kann ausgeführt werden, auch wenn der Masterknoten offline ist. Dies kann passieren, wenn Jenkins nicht mehr genügend Speicherplatz hat.

Gehen Sie zur Bestätigung wie folgt vor (danke an geekride - jenkins-pending-wait-for-next-available-executor):

  • Gehen Sie zu Jenkins -> Jenkins verwalten -> Knoten verwalten
  • Untersuchen Sie den "Master" -Knoten, um festzustellen, ob er offline ist. Möglicherweise wird gemeldet, dass auf dem Masterknoten nicht genügend Speicherplatz vorhanden ist.
Michael Ostern
quelle
17
Ein ähnliches Problem ist mir passiert. Das Problem war, dass ich mehrere Jobs ausgeführt habe und meine Anzahl von Executoren 2 war (Standard). Also gingen die anderen Jobs in den Wartezustand. Ich habe die Anzahl der Executoren erhöht, danach funktioniert es einwandfrei
Amal G Jose
Ja, das war das Problem.
Buminda
1
Lösung Nr. 2 der markierten Antwort hier hat das Problem für mich behoben
trickpatty
stand vor einem ähnlichen Problem, zusätzlich zu der hier bereitgestellten Lösung. Ich musste Jenkins neu starten. Ohne den Neustart steckten die Jobs, obwohl genügend Speicher vorhanden war, immer noch fest
Uhr
Arbeitete für mich, als ich dies tat: Jenkins verwalten> Knoten verwalten> Hauptknoten> Konfigurieren> Verwendung: Verwenden Sie diesen Knoten so oft wie möglich
D. Visser
27
  • Gehen Sie zu Jenkins -> Jenkins verwalten -> Knoten verwalten
  • Untersuchen Sie den "Master" -Knoten. (Klicken Sie auf das Konfigurationssymbol.)

In meinem Fall wurde No of Executors auf 0 gesetzt. Erhöht und das Problem wurde behoben.

PAVITRA
quelle
Ich habe gerade herausgefunden, wie schwierig es ist, dass die Anzahl der Executoren mindestens 2 beträgt. Wenn Ihre Build-Pipeline andere Build-Befehle ausführt, benötigen Sie zwei Executoren: einen für die Pipeline und einen für den Build-Befehl.
Herr Lama
18

In meinem Fall hatte ich das folgende Set in meiner JenkinsFile

node('node'){ ... }

Es gab keinen Knoten namens 'Knoten', nur Master (der Wert wurde dort belassen, nachdem einige grundlegende Tutorials befolgt wurden). Wenn Sie den Wert in 'master' ändern, funktioniert der Build.

eversMcc
quelle
Ah, danke dafür, ich habe tatsächlich einen Knoten verwendet, der nicht existiert! Wenn der Knotenname einen Tippfehler enthält, bleibt er für immer hängen!
GabLeRoux
6

Ich bin auf ein ähnliches Problem gestoßen, weil mein Master auf "Diese Maschine nur für gebundene Jobs verlassen" eingestellt war. Obwohl ich den Sklaven deaktiviert hatte, umging Jenkins den Meister immer wieder und suchte nach etwas anderem.

Gehen Sie zu Jenkins -> Jenkins verwalten -> Knoten verwalten und klicken Sie auf die Schaltfläche Konfigurieren Ihres Masterknotens (sieht aus wie ein Schraubendreher und ein Schraubenschlüssel). Überprüfen Sie die Verwendung und stellen Sie sicher, dass "Diesen Slave so oft wie möglich verwenden" aktiviert ist.

user3442998
quelle
5

In meinem Fall wurde dies durch die Anzahl der Ausführenden (ich hatte 1) und das Ausführen von Jenkins Job (Projekt) über die Pipeline verursacht (mein Pipeline-Skript hat einen anderen Job in Jenkins gestartet). Es verursachte einen Deadlock - meine Pipeline hielt den Executor und wartete auf seinen Job, aber der Job wartete auf den freien Executor.

Die Lösung kann von # of executorsin zunehmen Jenkins -> Manage Jenkins -> Manage Nodes -> Configure (icon on required node).

Fenix
quelle
Diese Lösung funktioniert bei mir. danke
Dika
4

Ich bin etwas spät dran, aber das kann anderen helfen.

In meinem Fall verfügt mein Jenkins-Master über eine gemeinsam genutzte externe Ressource, die Jenkins-Jobs vom Dispatcher-Plugin für externe Ressourcen zugewiesen wird . Aufgrund des Fehlers JENKINS-19439 im Plugin (in der Beta) stellte ich fest, dass meine Ressource von einem vorherigen Job gesperrt wurde, aber nicht entsperrt wurde, als dieser vorherige Job abgebrochen wurde.

Um herauszufinden, ob sich eine Ressource derzeit im gesperrten Zustand befindet, navigieren Sie zum betroffenen Jenkins-Knoten Jenkins -> Jenkins verwalten -> Knoten verwalten -> Master

Sie sollten den aktuellen Status aller externen Ressourcen sehen. Wenn unerwartet gesperrt sind, kann dies der Grund sein, warum Jobs auf einen Executor warten.

Ich konnte keine Details zur manuellen Behebung dieses Problems finden.
Durch einen Neustart von Jenkins wurde das Problem nicht behoben.
Am Ende ging ich mit dem brutalen Ansatz:

  • Entfernen Sie die externe Ressource
    (siehe Jenkins -> Jenkins verwalten -> Knoten verwalten -> Master -> Konfigurieren)
  • Jenkins neu starten
  • Erstellen Sie die externe Ressource neu
Craig Thomas
quelle
3

In meinem Fall bemerkte ich dieses Verhalten, als die Box nicht genügend Arbeitsspeicher (RAM) hatte. Ich ging zu Jenkins -> Jenkins verwalten -> Knoten verwalten und fand eine Ausnahme wegen Speichermangel. Ich habe gerade etwas Speicherplatz auf der Maschine freigegeben und die Jobs gingen an die Ausführenden.

Nick Constantine
quelle
3

In meinem Fall hatte ich gerade das Plugin "Projekt autorisieren" installiert und die Strategie unter "Jenkins verwalten -> Globale Sicherheit konfigurieren -> Zugriffssteuerung für Builds" als "Als anonym ausführen" falsch eingerichtet. 'Anonym' hatte also keine Rechte, den Job auszuführen.

Durch Festlegen der ersten Strategie als "Als Benutzer ausführen, der den Build ausgelöst hat" wurden die Jobs in der Warteschlange entsperrt.

Claudiu
quelle
2

Kurze Antwort: Beenden Sie alle Jobs, die auf dem Master ausgeführt werden.

In meinem Fall hingen mehr als 10 Tage lang 3 Jobs am Master, die unbemerkt blieben. Wir führen normalerweise keine Jobs direkt auf dem Master aus, alles wird auf Slaves ausgeführt. Ich habe diese 3 Jobs getötet, die aufgehängt waren. Automatisch begannen die Testamentsvollstrecker des Sklaven, Jobs aufzunehmen.

Beachten Sie, dass sich, obwohl wir 8 Slaves haben, nur 1 Slave in diesem betroffenen Zustand befand.

[EDIT] Wir haben die Antwort gefunden, warum sich nur ein Sklave in diesem betroffenen Zustand befand. Wenn ein Jenkins-Slave ausfällt, werden alle ausstehenden Jobs automatisch an den Master übertragen. Alle 3 Jobs, die ich getötet habe, stammten von diesem Sklaven, daher ist es wahrscheinlich ein Verbindungsproblem zwischen dem Master und diesem bestimmten Sklaven.

mdabdullah
quelle
1

Bei mir unten hat die Lösung funktioniert.

Jenkins -> Jenkins verwalten -> Knoten verwalten -> Master -> Konfigurieren -> Knoteneigenschaften -> Jobausführung am Knoten einschränken - ist aktiviert und erhält Zugriff auf bestimmte Benutzer. Ich habe selbst Zugriff gewährt und dann begann der Job zu laufen.

Wenn die Ausführung von Jobs auf Knoten einschränken aktiviert ist, können geplante Aufgaben nicht ausgeführt werden.

Siva Kumar Reddy G.
quelle
1

In meinem Fall ist es ähnlich wie bei @Michael Easter: Ich habe ein Problem bei einem Job, weil nicht genügend Speicherplatz vorhanden ist. Ich räumte etwas Platz frei, startete Jenkins neu, aber das Problem blieb bestehen.

Die Lösung bestand darin, zu Jenkins -> Jenkins verwalten -> Knoten verwalten zu gehen und einfach auf die Schaltfläche zu klicken, um den Status zu aktualisieren.

Luis Solano
quelle
0

Was für mich funktioniert hat: Endlich ist mir das Fenster Build Executor Status links im Haupt-Dashboard von Jenkins aufgefallen. Ich führe eine Entwicklungs- / Testinstanz auf meinem lokalen System mit 2 Ausführenden aus. Beide waren derzeit mit Builds beschäftigt, die nicht ausgeführt wurden. Nachdem ich diese Jobs abgebrochen hatte, konnte mein dritter (ausstehender) Job ausgeführt werden.

Bobby Tait
quelle
0

Für mich muss ich die Executoren manuell neu starten. Klicken Sie unter "Build Executor Status" auf "Dead" und klicken Sie auf die Schaltfläche "Neustart".

Skwokie
quelle
0

Ich bin auf ein ähnliches Problem gestoßen, weil mein Master auf "# of executor" gesetzt war (Die maximale Anzahl gleichzeitiger Builds, die Jenkins auf diesem Agenten ausführen darf).

Gehen Sie zu Jenkins -> Jenkins verwalten -> Knoten verwalten und klicken Sie auf die Schaltfläche Konfigurieren Ihres Masterknotens (erhöhen Sie die Anzahl der Executoren, die mehrere Jobs gleichzeitig ausführen sollen).

Srikanth Mukku
quelle
0

In meinem Fall muss ich Execute concurrent builds if necessarydie allgemeinen Einstellungen des Jobs festlegen .

Oleg Neumyvakin
quelle
0

Möglicherweise haben Sie Meilensteine ​​eingerichtet und Ihr Job wird erst ausgeführt, wenn der vorherige Job abgeschlossen ist.

albertski
quelle