/ / Comment supprimer les travaux en aval si le travail en amont est arrêté? - java, python, jenkins, jenkins-plugins

Comment tuer les travaux en aval si le travail en amont est arrêté? - java, python, jenkins, jenkins-plugins

J'ai un travail parent qui déclenche de manière dynamique de nombreux travaux en aval.

J'utilise du code python pour générer la liste des travaux àêtre déclenché, l'écrire dans un fichier de propriétés, injecter le fichier à l'aide du plug-in EnvInject puis utiliser le "plug-in déclencheur paramétré" avec la variable variable de liste de travaux (séparée par des virgules) pour lancer les travaux (Si quelqu'un connaît un moyen plus simple de le faire J'adorerais entendre ça aussi!).

Cela fonctionne très bien, sauf lorsque vous supprimez le travail parent, les travaux déclenchés continuent de s'exécuter et je les veux morts, même lorsque vous tuez le parent.

Existe-t-il un plugin ou un moyen d'implémenter cela? Peut-être un crochet appelé quand un travail est tué?

MODIFIER: Désolé pour la confusion, je ne comprenais pas ce que je voulais dire par "tuer" le travail. Je veux dire en cliquant sur le bouton "x" rouge dans le gui Jenkins, pas sur le signal Unix.

Merci d'avance.

Réponses:

2 pour la réponse № 1

Au lieu de tuer le travail, avoir un autre travail quimet fin par programme à tous les travaux requis. Vous pouvez réutiliser le même fichier de propriétés pour savoir quels travaux doivent être supprimés. Vous pouvez utiliser un script groovy pour terminer des travaux.


0 pour la réponse № 2

Pour capturer SIGTERM dans votre processus, vous pouvez utiliser le code suivant (spécifique à Unix):

import signal

def kill_children(*args, **kwargs):
# some code that uses the stored list of children procs to kill them

signal.signal(signal.SIGTERM, kill_children)

Il y a beaucoup d'autres signaux qu'un processuspeut recevoir. SIGKILL est le plus évident dans votre situation. Il suffirait donc de déterminer quel signal tue le parent et le gère.