Exécuter le script Shell après la construction post dans Jenkins

J'essaie d'exécuter un script shell si la construction passe ou échoue après la post-construction dans Jenkins. Je ne peux pas voir cette option dans Post build pour exécuter un script shell sauf pour exécuter une cible.

66
demandé sur Vadim Kotov 2012-06-22 20:29:28

5 réponses

Très facile à faire avec Post-construction tâche plugin.

Jenkins-option" post build task"

55
répondu Daniel Magnusson 2016-07-30 17:30:26

Vous pouvez également exécuter des commandes arbitraires en utilisant le Groovy Post Build - et cela vous donnera beaucoup de contrôle sur quand ils s'exécutent et ainsi de suite. Nous l'utilisons pour exécuter un script shell' finger of blame ' en cas de builds échoués ou instables.

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(Notre commande prend la dernière date de construction stable et l'heure actuelle comme paramètres afin qu'elle puisse enquêter sur qui aurait pu casser la construction, mais vous pouvez exécuter toutes les commandes que vous aimez de la même manière)

9
répondu crovers 2016-07-30 17:34:50

Si je lis bien votre question, vous voulez exécuter un script dans la partie post build actions de la construction.

J'utilise moi-même Postbuildscript Plugin pour exécuter git clean -fxd après que la construction a archivé les artefacts et publié les résultats des tests. Mes esclaves Jenkins ont des disques SSD, donc je n'ai pas la salle de garder les fichiers générés dans l'espace de travail.

5
répondu sti 2016-07-30 17:31:09

Vous devriez être capable de le faire avec le plugin de tâche par lots .

  1. crée une tâche par lots dans le projet.
  2. Ajoutez une option de post-construction" Invoke batch tasks " en sélectionnant le même projet.

Une alternative peut également être Post-construction tâche plugin.

3
répondu Carlo Bonamico 2016-07-30 17:32:10

Vous devrez configurer le script shell post-build en tant que travail Jenkins séparé et le déclencher en tant qu'étape post-build. Il semble que vous devrez utiliser le Plugin Trigger paramétré comme l'option standard "construire d'autres projets" ne fonctionne que si votre génération de déclenchement est réussie.

1
répondu gareth_bowles 2012-06-22 17:02:34