web-dev-qa-db-fra.com

Journal de construction Jenkinsfile

Existe-t-il une variable intégrée donnant accès au texte de la construction en cours d'exécution?

J'ai essayé d'utiliser quelque chose comme currentBuild.log, currentBuild.buildLog mais sans aucune chance.

9

En réalité, il est possible d'utiliser currentBuild.rawBuild.log ou mieux (non obsolète) currentBuild.rawBuild.getLog(100) (pour les 100 dernières lignes), référence: http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-

6
Krzysztof Krasoń

J'ai beaucoup cherché une solution pour analyser le journal.

  • utiliser rawBuild n'était pas correct, car je souhaite exécuter mes scripts dans un bac à sable sans approbations supplémentaires
  • utiliser tee dans les étapes, ce que je veux analyser n’était pas correct, car je ne souhaite pas modifier les étapes précédentes, et je ne souhaite pas que tout mon journal soit enregistré dans RAM que sur une machine Windows)

J'ai trouvé une solution inspirée par Jesse Glicks qui répond:

  • Sous my.jenkins.url/pipeline-syntax/globals, vous pouvez constater que la variable manager- vous permet d'analyser le journal à l'aide de manager.logContains(regexp) ou manager.getLogMatcher(regexp).
  • Donc, si vous voulez juste vérifier que votre journal contient la chaîne myTestString, vous pouvez simplement appeler manager.logContains('.*myTestString.*')
  • Si vous souhaitez obtenir des informations à partir de la première ligne correspondante, vous pouvez utiliser manager.getLogMatcher(regexp)

Malheureusement, je n'ai trouvé aucun moyen d'analyser l'intégralité du journal (getLogMatcher ne renvoie que la première ligne correspondante, Matcher). Je ne vois donc actuellement aucun moyen, par exemple, de compter combien de fois un fichier journal contient une chaîne spéciale.

4
Sergej Werfel

Pas actuellement. (Les propriétés de currentBuild sont documentées sous Générateur de fragments »Variables globales à propos.)

Il pourrait pourrait être mis en œuvre assez facilement, même s’il ne pouvait pas s’adapter avec d’importantes versions. JENKINS-28119 fournirait une solution plus évolutive à ce que je suppose que votre demande sous-jacente est.

2
Jesse Glick