Ausführen eines Hintergrundprozesses im Pipeline-Job


13

Ich suche nach einer Möglichkeit, einen Java-Prozess im Hintergrund mithilfe der deklarativen Jenkins-Pipeline auszuführen. Unten ist das Codefragment

stage('Deploy'){
        steps{
            script{
                withEnv(['BUILD_ID=dontkill']) {
                    sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
                }
            }
        }
}

ProcessTreeKiller von Jenkins ist bereits bekannt, und jede Antwort schlägt vor, dasselbe zu tun. Ich habe ohne Glück versucht, die Umgebung innerhalb des Treppenblocks zu verwenden.

Jenkins-Version: 2.60.1

Pipeline-Plugin: 1.1.7

Jede Hilfe wird sehr geschätzt.


Was geschieht? Fehlermeldung? Lautlos scheitern?
— B Schicht

Ich habe keinen laufenden Java-Prozess. Dies ist die letzte Phase in meiner Pipeline. Ich gehe davon aus, dass Jenkins sie im nächsten Moment startet und beendet.
— Dharanidhar

Was passiert, wenn Sie den Befehl direkt auf dem Slave ausführen? Melden Sie sich beim Agenten / Slave-Host an, gehen Sie zum Arbeitsbereich des Jobs (oder kopieren Sie ihn, wenn er bereinigt wurde, manuell in die War-Datei ... /tmp) und führen Sie alles in doppelten Anführungszeichen aus.
— B Schicht

Wenn der Arbeitsbereich nicht gelöscht worden wäre, suchen Sie in dem Verzeichnis, in dem der Shell-Befehl ausgeführt worden wäre, nach einer Datei mit dem Namen nohup.out. nohup meldet sich automatisch in einer solchen Datei an, wenn die Ausgabe nicht anderweitig umgeleitet wird.
— B Schicht

@BlairM das gleiche Skript läuft gut, wenn ich es mit Jenkins Benutzer über eine nicht-Login nicht-interaktive Shell versuchen. Das Ausführen in doppelten Anführungszeichen macht keinen Unterschied. nohup.out ist vorhanden, aber es ist 0 KB.
— Dharanidhar

Antworten:


15

Jeder, der mit demselben Problem konfrontiert ist und ein Pipeline-Projekt verwendet, wird JENKINS_NODE_COOKIEanstelle von festgelegt BUILD_ID.

Verschwenden Sie keine Zeit HUDSON_COOKIEmit HUDSON_SERVER_COOKIE, JENKINS_COOKIEoder JENKINS_SERVER_COOKIE. Keiner von ihnen arbeitet für ein Pipeline-Projekt.

Weitere Informationen finden Sie unter https://issues.jenkins-ci.org/browse/JENKINS-28182 .


1
Whoa, das ist drinnen Baseball. Gut zu wissen.
— B Schicht
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.