Esiste una variabile incorporata che dia accesso al testo della build attualmente in esecuzione?Registro di costruzione Jenkinsfile
Ho provato a utilizzare qualcosa come currentBuild.log
, currentBuild.buildLog
ma senza fortuna.
Esiste una variabile incorporata che dia accesso al testo della build attualmente in esecuzione?Registro di costruzione Jenkinsfile
Ho provato a utilizzare qualcosa come currentBuild.log
, currentBuild.buildLog
ma senza fortuna.
in realtà è possibile utilizzando currentBuild.rawBuild.log
o meglio (non deprecato) currentBuild.rawBuild.getLog(100)
(per gli ultimi 100 linee), di riferimento: http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-
Attualmente non disponibile. (Proprietà di currentBuild
sono documentati sotto Variabili Snippet Generator »globali a proposito.)
E poteva essere attuato, abbastanza facilmente, anche se non sarebbe scala bene con enormi build. JENKINS-28119 fornirebbe una soluzione più scalabile a quello che sto cercando di indovinare.
Attualmente sto cercando di analizzare i log per recuperare tutte le risorse implementate ('mvn clean deploy') e nel caso in cui i test del server falliscano voglio rimuovere quegli artefatti dal repository nexus, il modo più semplice attualmente per me è quello di analizzare i log per * Uploaded: http ..... * text e fanno HTTP DELETE su di essi. –
Se esegui il versioning delle risorse utente distribuite con alcune variabili a cui puoi accedere, come il tuo numero di build o il tuo commit git, puoi forse eliminarle costruendo i nomi degli artefatti usando la variabile. Se stai pubblicando centinaia di artefatti che non funzioneranno molto bene anche se –
Allora basta 'sh 'mvn clean deploy | tronchi di tee '; def logs = readFile 'logs'' senza cercare di accedere ai log di _build_ nel suo complesso. –
ho cercato un sacco di una soluzione per analizzare il registro.
rawBuild
non era male, perché voglio eseguire il mio script in una sandbox, senza ulteriori approvazionitee
nei passaggi, che voglio analizzare non era male, perché io non voglio modificare passaggi precedenti, né io non voglio avere tutto il mio log in RAM (e purtroppo avevo bisogno che su una macchina Windows)ho trovato una soluzione ispirata Jesse Glicks risposta:
manager
permette di analizzare il registro utilizzando manager.logContains(regexp)
o manager.getLogMatcher(regexp)
myTestString
si può chiamare manager.logContains('.*myTestString.*')
manager.getLogMatcher(regexp)
Purtroppo non ho trovato alcun modo per analizzare l'intero registro (solo getLogMatcher
restituisce la prima riga corrispondente Matcher). Quindi, al momento, non vedo il modo di ad es. conta quante volte un file di registro contiene una stringa speciale.
Con la pipeline multicanica 1.652, ciò non funziona :('org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: script non autorizzati a utilizzare il metodo hudson.model.Run getLog int' e my.jenkins.site/scriptApproval/ pagina non lo mostra nemmeno. Sto ancora cercando una risposta a me stesso a questo fastidioso problema –
@JasonDeArte - L'hai provato sull'attuale Jenkins LTS con le attuali versioni dei plugin? – BitwiseMan
Mi ci è voluto molto tempo per trovare questa risposta. Questo fornisce un modo per dire se una build è stata interrotta, che non è ancora stata fornita chiaramente - https://issues.jenkins-ci.org/browse/JENKINS-28822 –