Czy istnieje dowolna zmienna wbudowana, która umożliwia dostęp do tekstu aktualnie wykonywanego kompilatora?Plik dziennika Jenkinsfile
Próbowałem użyć czegoś takiego jak currentBuild.log
, currentBuild.buildLog
, ale bez powodzenia.
Czy istnieje dowolna zmienna wbudowana, która umożliwia dostęp do tekstu aktualnie wykonywanego kompilatora?Plik dziennika Jenkinsfile
Próbowałem użyć czegoś takiego jak currentBuild.log
, currentBuild.buildLog
, ale bez powodzenia.
Właściwie jest to możliwe przy użyciu currentBuild.rawBuild.log
lub lepsza (nie przestarzałe) currentBuild.rawBuild.getLog(100)
(dla ostatnich 100 linii), odniesienie: http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-
Obecnie nie. (Właściwości currentBuild
są udokumentowane pod Snippet Generator »zmienne globalne przy okazji.)
To mógł być realizowane, dość łatwo, choć nie byłoby dobrze skalować z ogromnym buduje. JENKINS-28119 zapewnia bardziej skalowalne rozwiązanie tego, co domyślam się, że jest to podstawowa prośba.
Właściwie próbuję przeanalizować dzienniki w celu pobrania wszystkich wdrożonych artefaktów ('mvn clean deploy') iw przypadku niepowodzenia testów serwera chcę usunąć te artefakty z repozytorium nexus, najłatwiej jest mi teraz przeanalizować dzienniki dla * Uploaded: http ..... * text i wykonaj HTTP DELETE na nich. –
W przypadku wersjonowania wdrożonych artefaktów za pomocą zmiennej, do której można uzyskać dostęp, na przykład numeru kompilacji lub zatwierdzenia git, można je usunąć, budując nazwy artefaktów za pomocą zmiennej. Jeśli publikujesz setki artefaktów, które nie będą działały zbyt dobrze, wystarczy –
Następnie po prostu 'sh 'mvn clean deploy | tee logi "; def logs = readFile 'logs'' bez próby uzyskania dostępu do logów _build_ jako całości. –
Szukałem dużo rozwiązania do analizy dziennika.
rawBuild
nie było OK, bo chcę, aby wykonać swoje skrypty w piaskownicy bez dodatkowych zatwierdzeńtee
w stopniach, że chcę analizować nie było OK, bo nie chcą modyfikować powyższe czynności, ani nie chcę mieć całe dziennik w pamięci RAM (i niestety musiałem że na komputerze z systemem Windows)znalazłem rozwiązanie inspirowane przez Jesse Glicks odpowiedź:
manager
-variable umożliwia analizę dziennika za pomocą manager.logContains(regexp)
lub manager.getLogMatcher(regexp)
myTestString
można po prostu zadzwonić manager.logContains('.*myTestString.*')
manager.getLogMatcher(regexp)
Niestety nie znalazłem sposobu aby przeanalizować cały log (tylko getLogMatcher
zwraca pierwszy wiersz pasujący Matcher). Tak więc obecnie nie ma możliwości, aby np. Policz, jak często plik dziennika zawiera specjalny ciąg znaków.
Z potokiem 1,652, który nie działa :(org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Skrypty nie mogą używać metody hudson.model.Run getLog int' & the my.jenkins.site/scriptApproval/ strona nawet tego nie pokazuje, wciąż szukam odpowiedzi na ten dokuczliwy problem –
@JasonDeArte - Czy próbowałeś tego na aktualnym Jenkins LTS z aktualnymi wersjami pluginów? – BitwiseMan
Zajęło mi dużo czasu, aby znaleźć tę odpowiedź. Zapewnia to jeden sposób sprawdzenia, czy kompilacja została przerwana, co nie jest jeszcze jasno określone - https://issues.jenkins-ci.org/browse/JENKINS-28822 –