In Jenkins Maven-Projekt können wir BUILD_ID=DontKillMe
verwenden, um Hudson-Skript zum Herunterfahren der Shell-Aufrufe zu verhindern.Wie Java-War-Datei mit Jenkinsfile in Jenkins Pipeline bereitstellen
Like: BUILD_ID=DontKillMe java -jar target.jar
Aber hinzufügen BUILD_ID
nicht in Jenkinsfile
arbeiten.
Jenkinsfile:
#!/usr/bin/env groovy
node {
stage('Build') {
checkout scm
sh '/opt/gradle/gradle-4.1/bin/gradle clean build'
}
stage('Deploy') {
sh 'mkdir -p /opt/www/foobar'
sh 'cp build/libs/*.war /opt/www/foobar/newest.war'
sh 'chmod 755 ./deploy.sh'
sh 'nohup ./deploy.sh &'
sh 'while ! httping -qc1 http://localhost:10000 ; do sleep 1 ; done'
}
}
Nach hudson Skript ausgeführt, werden alle von hudson Skript namens Schalen würden abgeschaltet werden. Sogar Doppel nohup
immer noch nicht funktionieren.
deploy.sh:
#!/bin/bash
nohup java -jar -Dspring.profiles.active=prod /opt/www/foobar/newest.war /var/log/foobar.log 2>&1 &
Es ist nutzlos in 'Jenkinsfile' Build-Skript der Pipeline. –
@SuCheung sollte es funktionieren. Aber es scheint, als ob es einen Fehler gibt, wenn es auf einigen OS nicht funktioniert https://issues.jenkins-ci.org/browse/JENKINS-46481 –
Verstanden, aber ich habe immer das Gefühl, dass 'BUILD_ID = dontKillMe' ist schmutzig. –