uso tesis sociales sobre redes proyecto monografia medio marketing mal las investigacion impacto forma empresas comunicacion como jenkins

jenkins - proyecto - tesis sobre las redes sociales



Jenkins mata a todos los procesos hijos (1)

Tengo un trabajo de jenkins que ejecuta un script bash.

En el script bash realizo efectivamente dos acciones, algo así como

java ApplicationA & PID_A=$! java ApplicationB kill $PID_A

pero si el trabajo se cancela manualmente, la ApplicationA permanece activa (como se puede ver con un ps -ef en la máquina nodo). No puedo usar trapping y demás, porque eso no funcionará si jenkins envía una señal de 9 (el trapping no funciona para 9 ).

Sería ideal si este trabajo pudiera configurarse para simplemente matar todos los procesos que genera, ¿cómo puedo hacer eso?


De hecho, de forma predeterminada, Jenkins tiene una función llamada ProcessTreeKiller, que es responsable de asegurarse de que no haya procesos dejados después de la ejecución del trabajo.

El enlace de arriba explica cómo desactivar esa función. ¿Estás seguro de que no tienes esa discapacidad por error de alguna manera?

Editar:
Siguiendo los comentarios del autor, en base a la información sobre la inhabilitación de ProcessTreeKiller , para lograr el inverso se debe establecer la variable de entorno BUILD_ID en el id de compilación del trabajo de Jenkins. De esta forma, cuando ProcessTreeKiller examine los procesos en ejecución para matar, también encontrará esto

export BUILD_ID=$BUILD_ID

También puede utilizar el plugin Gatillo de resultados de compilación , configurar un segundo trabajo para limpiar sus aplicaciones y configurarlo para supervisar el primer trabajo para el estado ABORTED como desencadenante.