Quiero elagraciadoMatar mi trabajo de Jenkins si alguien lo aborta, así que intenté capturar la señal de cancelación y personalizar el paso de anulación usando un script de Shell.
Pero parece que Jenkins está ignorando todas las trampas y matando con fuerza de todos modos
un script de muestra para probar.
exit_script() {
echo "Printing something special!"
echo "traped & killed " >>text.txt
echo "Maybe executing other commands!"
trap - INT TERM ABRT QUIT HUP # clear the trap
kill -- -$$ # Sends SIGTERM to child/sub processes
}
trap 'exit_script' INT KILL ABRT QUIT HUP
echo "pid is $$"
echo "pid is $$" > test.txt
count=0
sleep 10
echo 1
echo 1 >>test.txt
sleep 10
echo 2
echo 2 >>test.txt
sleep 10
echo 3
echo 3 >>test.txt
sleep 10
echo 4
echo 4 >>test.txt
sleep 10
echo 5
echo 5 >>test.txt
sleep 10
echo 6
echo 6 >>test.txt
exit 0
Estoy buscando como podemos atraparSIGNOSeñalar y personalizar el comando Kill en jenkins.
Para su información: este script funciona bien en mi sistema bash, solo necesito cambiar INT->SIGINT y así sucesivamente.
Respuesta1
Creo que está funcionando bien, solo para algunas correcciones necesarias. Si hay algún problema con la función asociada con la trampa, es decir, exit_script()
no funcionará.
Lo probé eliminándolo kill -- -$$
y funciona bien, se llama a la función y el proceso continúa ejecutándose.
Respuesta2
En general, en un script de shell, se captura la señal SIGTERM diciendo
trap 'exit_script' TERM
PD: Trapping KILL no funciona y enumerar QUIT dos veces no ayuda.