2016-05-04 40 views

risposta

2

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-

+1

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 –

+0

@JasonDeArte - L'hai provato sull'attuale Jenkins LTS con le attuali versioni dei plugin? – BitwiseMan

+0

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 –

2

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.

+0

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. –

+0

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 –

+0

Allora basta 'sh 'mvn clean deploy | tronchi di tee '; def logs = readFile 'logs'' senza cercare di accedere ai log di _build_ nel suo complesso. –

3

ho cercato un sacco di una soluzione per analizzare il registro.

  • uso rawBuild non era male, perché voglio eseguire il mio script in una sandbox, senza ulteriori approvazioni
  • uso tee 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:

  • Sotto my.jenkins.url/gasdotto-sintassi/globali si può vedere, che la -variable manager permette di analizzare il registro utilizzando manager.logContains(regexp) o manager.getLogMatcher(regexp)
  • Quindi, se volete solo per controllare, che il registro contiene la stringa myTestString si può chiamare manager.logContains('.*myTestString.*')
  • Se si desidera ottenere alcune informazioni dalla prima riga corrispondente è possibile utilizzare 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.