2015-09-21 39 views
6

Próbuję użyć "$ {BUILD_LOG, maxLines, escapeHtml}" jak opisane tutaj w: How can I take last 20 lines from the $BUILD_LOG variable?

Niestety to nie działa dla mnie.

otrzymuję ten błąd:

Script1.groovy: 114: expecting anything but ''\n''; got it anyway @ line 114, column 301. arted by user MYUSERNAME

Mój kod w tej linii to:

  msg.setText("This build (" + build.getFullDisplayName() 
      + ") contains the following tasks:\n\nTASK\t\t\t IMPLEMENTER:\n" 
      + taskList + "\n\n\nLink to this 
      build: ${BUILD_URL} \n ${BUILD_LOG, maxLines=9999, escapeHtml=false}"); 

Jeśli wezmę ten poniższy, to działa. To dlatego domyślam się, że "BUILD_LOG" już nie działa?

${BUILD_LOG, maxLines=9999, escapeHtml=false}


EDIT: Może jako dodatek: Próbuję zrobić to withing Groovy skrypt PreSend. Ponieważ buduję tekst wiadomości e-mail dynamicznie. ${BUILD_URL} działa dobrze, ${BUILD_LOG, maxLines=9999, escapeHtml=false} nie (dla mnie) Szukam rozwiązania dla tego ... Obiekt msg jest java MimeMessage.

Dzięki Daniel

Odpowiedz

0

użyłem poniżej i to działa dobrze dla mnie.

${BUILD_LOG, maxLines=10, escapeHtml=false} 

Próbowałem z Jenkins wersji 1,617

+0

To właśnie napisałem ...?! i to nie działa dla mnie z: Jenkins ver. 1.609.2 (LTS) zobacz przykład powyżej ... Próbowałem również z mniej i bez maxLines ... bez zmian – Beasly

1

Ten komunikat o błędzie jest zazwyczaj związane z nie zamkniętych cytaty, komentarze rozpoczął / zamiast // itp w kodzie jedyne co widzę, jest to, że trzecia linia nie jest zakończona prawidłowo, to znaczy po "\n\n\nLink to this nie są zamykanie cudzysłowów i zamiast tego zaczynają nową linię (w ten sposób expecting anything but ''\n''

Spróbuj napisać całą linię.

msg.setText("This build (" + build.getFullDisplayName() 
      + ") contains the following tasks:\n\nTASK\t\t\t IMPLEMENTER:\n" 
      + taskList + "\n\n\nLink to this build: ${BUILD_URL} \n ${BUILD_LOG, maxLines=9999, escapeHtml=false}"); 

lub zamknąć cytaty zamiast:

msg.setText("This build (" + build.getFullDisplayName() 
      + ") contains the following tasks:\n\nTASK\t\t\t IMPLEMENTER:\n" 
      + taskList + "\n\n\nLink to this " 
      + "build: ${BUILD_URL} \n ${BUILD_LOG, maxLines=9999, escapeHtml=false}"); 
+0

dzięki za twoje wejście. Właściwie to zrobiłem, żeby było tu czytelne. Teraz wszystko jest w jednej linii. Więc cytat "+ taskList +" \ n \ n \ nLink "idzie do końca, ponieważ miałem tę samą myśl (mniej więcej), po prostu starałem się rozwiązać to inaczej ... – Beasly

+0

Tak więc wciąż daje ten błąd ... – jalopaba

+0

Tak :(nawet z: $ {BUILD_LOG} sam w ciągu znaków – Beasly

0

Czy próbowałeś ustawić escapeHtml=true? Może się zdarzyć, że ten token zostanie rozwinięty tak jak jest, a następnie ciąg w postaci " " staje się nieprawidłowy.

+0

Wypróbuję :) – Beasly

+0

Niestety nie działa też. Zawsze wskazuję na kolumnę, która nie istnieje. a "^" wskazujące na błąd wskazuje na moją nazwę użytkownika. Naprawdę miałem tu wielkie nadzieje. Próbowałem również treści e-maili jako HTML i zwykłego tekstu ... bez zmian, gdy tylko "$ {BUILD_LOG, maxLines = 9999, escapeHtml = true}" jest w ciągu znaków ... dziękuję jednak za wyrażenie opinii ... – Beasly

+0

Może spróbuj uzyskać zawartość build_log w zmiennej i uciec od nowych linii za pomocą .replace ("\", "\\")? Wtedy nie powinien przerwać łańcucha w 'setText()'. –

0

W najnowszej wersji zmiennej $ {BUILD_LOG} nie był dostępny dla mnie - jedynym rozwiązaniem, aby zalogować się w treści e-maili było dla mnie ustawienie:

msg.setText(build.getLog()) 

jako domyślną Pre-wysłać skrypt w konfiguracji globalnej Jenkins. ..