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.

Dharanidhar
quelle
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 .

Dharanidhar
quelle
1
Whoa, das ist drinnen Baseball. Gut zu wissen.
B Schicht