web-dev-qa-db-fra.com

Exécuter un script shell après la construction dans Jenkins

J'essaie d'exécuter un script Shell si la construction réussit ou échoue après la construction dans Jenkins. Je ne vois pas cette option dans post-build pour exécuter un script Shell à l'exception de l'exécution d'une cible.

75
kforkarim

Fait très facilement avec le plugin Post build build .

Jenkins - "Post build task" option

63
Daniel Magnusson

Vous pouvez également exécuter des commandes arbitraires à l'aide de Groovy Post Build - et vous aurez ainsi beaucoup de contrôle sur leur exécution, etc. Nous l'utilisons pour exécuter un script shell "doigt de blâme" en cas d'échec ou de construction instable.

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 comme paramètres la dernière date de construction stable et l'heure actuelle pour pouvoir déterminer qui aurait pu rompre la construction, mais vous pouvez exécuter toutes les commandes de votre choix de la même manière)

9
crovers

Si je lis bien votre question, vous souhaitez exécuter un script dans la partie des actions de post-génération de la génération.

J'utilise moi-même plug-in PostBuildScript pour exécuter git clean -fxd après que la construction ait archivé des artefacts et publié les résultats des tests. Mes esclaves Jenkins ont des disques SSD. Par conséquent, la salle ne conserve pas les fichiers générés dans l'espace de travail.

5
sti

Vous devriez pouvoir le faire avec le plugin Batch Task .

  1. Créez une tâche batch dans le projet.
  2. Ajoutez une option de post-génération "Appeler des tâches par lot" en sélectionnant le même projet.

Une alternative peut aussi être tâche de construction plugin.

3
Carlo Bonamico

Vous devez configurer le script Shell post-génération en tant que tâche Jenkins distinct et le déclencher en tant qu'étape post-génération. Il semble que vous devrez utiliser l'option plug-in de déclencheur paramétré comme option standard "Construire d'autres projets" ne fonctionne que si votre génération de déclenchement est réussie.

1
gareth_bowles