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?
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?
Antworten:
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):
In meinem Fall wurde No of Executors auf 0 gesetzt. Erhöht und das Problem wurde behoben.
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.
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.
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 executors
in zunehmen Jenkins -> Manage Jenkins -> Manage Nodes -> Configure (icon on required node)
.
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:
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.
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.
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.
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.
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.
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.
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).
In meinem Fall muss ich Execute concurrent builds if necessary
die allgemeinen Einstellungen des Jobs festlegen .