2016-10-06 10 views
11

Niedawno przekonwertowałem do Jenkinsa 2.x i eksperymentuję z przepływem potokowym, ale nie mogę uzyskać wtyczki e-mail-ext do pracy z groovowymi szablonami skryptów. Mimo, że mój standardowy strumień nadal działać prawidłowo, jeśli próbuję następujące pojawia się błąd z nieoczekiwaną tokena SCRIPTUzyskiwanie szablonów skryptów e-mail-ext do pracy z Jenkins Pipeline

emailext mimeType: 'text/html', replyTo: 'xxxx', subject: "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}", to: 'xxxx', body: "${SCRIPT, template='regressionfailed.groovy'}" 

Wiem, że były problemy z tokena ekspansji na początku, ale wydaje się, że z najnowszych wiki aktualizuje te zostały naprawione. Wciąż nie otrzymuję żadnego rozszerzenia tokena dla żadnych tokenów. Czy istnieje dobre odniesienie do tego, aby znów zadziałało. Chciałbym przejść do przepływu potoku, ale szablon wiadomości e-mail z rozszerzeniem tokena jest kluczem do przepłynięcia pracy.

+1

Czy kiedykolwiek to rozgryzłeś? Mam ten sam problem i nic, co próbowałem, nie działa. – TortillaCurtain

+0

znalazłeś rozwiązanie? Mam ten sam problem – Lichtamberg

+0

Poszukuję również poprawki –

Odpowiedz

4

Nie ma problemu z użyciem adresu e-mail w potoku deklaratywnym. Ale twój skrypt nie będzie mógł poprawnie uzyskać dostępu do parametru "build. Result", ponieważ nie jest jeszcze gotowy. Podobnie jak w domyślnym skrypcie groovy-html.template.

Edycja: Właściwie możesz uzyskać dostęp do build.result, jeśli samodzielnie ustawisz go samodzielnie.

Więc najlepiej jest dodać etap w końcu deklaratywnej rurociągu tak:

stage('Send email') { 
    def mailRecipients = "[email protected]" 
    def jobName = currentBuild.fullDisplayName 

    emailext body: '''${SCRIPT, template="groovy-html.template"}''', 
     mimeType: 'text/html', 
     subject: "[Jenkins] ${jobName}", 
     to: "${mailRecipients}", 
     replyTo: "${mailRecipients}", 
     recipientProviders: [[$class: 'CulpritsRecipientProvider']] 
} 

Należy również pamiętać, że jeśli używasz własnego skryptu nie można go nazwać „Groovy-html.template "lub" groovy-text.template ", ponieważ są domyślnymi adresami e-mail (dzięki czemu dostęp do pliku będzie nawet możliwy). Zobacz "Zawartość skryptu" here.

+0

Przepiszę, aby dopasować powyżej, ale podstawowy domyślny groovy-html.template wciąż rzuca błędy, narzekając na "Wyjątek podniesiony podczas renderowania szablonu: Brak takiej właściwości: changeSet dla klasy: org.jenkinsci.plugins.workflow.job.WorkflowRun" – naven87

+1

Tak. To z powodu dodatkowego problemu. Ponieważ API uległo zmianie, funkcja nazywa się teraz changeSets, ale domyślny szablon nie jest aktualizowany i nadal wywołuje starą funkcję. Będziesz musiał pobrać domyślny szablon, zmienić wywołanie na changeSets i dodać iterację. Może zasługuje na nowe pytanie. – user3360767

+0

@ user3360767 Naprawiłem te błędy, a nowa wersja ma działające szablony. – sorin

4

obliczu tego samego problemu dzisiaj, najwyraźniej mając ciało określony przed emailext wydają rade:

def emailBody = '${SCRIPT, template="regressionfailed.groovy"}' 
def emailSubject = "${env.JOB_NAME} - Build# ${env.BUILD_NUMBER} - ${env.BUILD_STATUS}" 
emailext(mimeType: 'text/html', replyTo: 'xxxx', subject: emailSubject, to: 'xxxx', body: emailBody) 

Pamiętaj może jeszcze trzeba przerobić części szablonu.

+0

Czy ktoś przeportował kilka przykładowych szablonów, wydaje się, że te z wtyczką już nie działają. – naven87

+0

@ naven87 to zależy od Twojego szablonu. Nadal masz te same zmienne, które są wstrzykiwane w rurociągi, jak w przypadku zadań freestyle. Jeśli masz na przykład szablon matrycowy, będzie on oczywiście niezgodny z potokiem. W końcu musiałem napisać własną logikę do konfiguracji i renderowania szablonu, ponieważ potrzebowałem również dodatkowych zmiennych, które nie były domyślnie dostępne w szablonie. – Martin

+0

Kiedy zrobić, co sugerujesz: def TEST = '$ {CHANGES, showPaths = true, format = "% a:% r% p \ n - \"% m \ "", pathFormat = "\ n \ t- % p "} ' Następnie TEST zwraca tekst tak, jak został napisany i nie jest rozszerzany do tego, co naprawdę chcemy. –

Powiązane problemy