Ejecutar un proceso en segundo plano en el trabajo de Pipeline

15

Estoy buscando una manera de ejecutar un proceso de Java en segundo plano utilizando la canalización declarativa de Jenkins. A continuación se muestra el fragmento de código.

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

Ya conocemos ProcessTreeKiller de Jenkins y cada respuesta sugiere hacer lo mismo. He intentado usar el entorno dentro del bloque de pasos sin suerte.

Versión de Jenkins: 2.60.1

Complemento de canalización: 1.1.7

Cualquier ayuda es muy apreciada.

Dharanidhar
fuente
¿Lo que pasa? ¿Mensaje de error? ¿Fracaso silencioso?
B Layer
No tengo un proceso de Java en ejecución. Esta es la etapa final en mi cartera, así que supongo que Jenkins lo inicia y termina en el momento siguiente.
Dharanidhar
¿Qué sucede cuando ejecuta el comando directamente en el esclavo? Inicie sesión en el host agente / esclavo, vaya al espacio de trabajo del trabajo (o si se limpió manualmente, copie el archivo war en algún lugar ... /tmppor ejemplo) y ejecute todo entre comillas dobles.
B Layer
Además, si el espacio de trabajo no se borró, busque un archivo llamado nohup.out en cualquier directorio que el comando de shell haya ejecutado. nohup se registra automáticamente en dicho archivo cuando la salida no se redirige de otra manera.
Capa B
@BlairM, el mismo script funciona bien cuando lo intento con el usuario de jenkins a través de un shell no interactivo sin inicio de sesión. Correr entre comillas dobles no hace ninguna diferencia. nohup.out está presente pero es 0 KB.
Dharanidhar

Respuestas:

16

Cualquiera que enfrente el mismo problema y use el proyecto de canalización, establezca en JENKINS_NODE_COOKIElugar de BUILD_ID.

No malgastes el ajuste de hora HUDSON_COOKIE, HUDSON_SERVER_COOKIE, JENKINS_COOKIEo JENKINS_SERVER_COOKIE. Ninguno de ellos trabaja para proyectos de tuberías.

Consulte https://issues.jenkins-ci.org/browse/JENKINS-28182 para obtener más detalles.

Dharanidhar
fuente
1
Vaya, eso es algo de béisbol dentro. Bueno saber.
B Layer