Praca Jenkins Pipeline; prawidłowe cytowanie dla kroku slackSend


11

Jest to prawdopodobnie 100% błąd użytkownika, ale nie mogę dostać zadania potoku, aby użyć zmiennej jako nazwy kanału w kroku slackSend.

Używa to zarówno wtyczki Slack, jak i wtyczki Build User Vars . Próbuję użyć, BUILD_USER_FIRST_NAMEaby zidentyfikować kanał, do którego Slack wraca (tj. Ten, który rozpoczyna kompilację, powinien otrzymać ten komunikat).

Przeszedłem do połowy z tym artykułem na temat korzystania z wtyczki użytkownika kompilacji w zadaniu potokowym, ale podstawienie tej zmiennej mnie zaskakuje.

Odpowiednia część pracy wygląda następująco;

stage ('message') {

    wrap([$class: 'BuildUser']) {

        sh "printf '%s' ${BUILD_USER_FIRST_NAME} > name.txt"

    }

    archiveArtifacts artifacts: 'name.txt'
    name = readFile('name.txt')
    echo "name is $name" //works fine, I get Alex

    if ( "$output" != null ) {
        slackSend (channel: '@$name', color: '#36A64F', message: "Job succeeded")
    } else {
        slackSend (channel: '@$name', color: '#36A64F', message: "Job failed")
    }

}

Wypróbowałem następujące miejsce zamiast bitu kanału, wszystkie zawiodły z nieokreślonymi Slack post may have failed. Response: Invalid channel specifiedbłędami.

channel: '@${name}',
channel: '@" + ${name} + "',
channel: '@"${name}"',

Oczekiwanym rezultatem jest to, że rozwiązałby channel: '@Alex',

Jaka jest właściwa składnia?

Odpowiedzi:


6

W Groovy musisz użyć podwójnych cudzysłowów, aby uzyskać interpolację ciągów:

    if ( "$output" != null ) {
        slackSend (channel: "@${name}", color: '#36A64F', message: "Job succeeded")
    } else {
        slackSend (channel: "@${name}", color: '#36A64F', message: "Job failed")
    }

Możesz też prawdopodobnie zrobić coś takiego, aby całkowicie tego uniknąć i mieć mniej powielania:

name = '@' + readFile('name.txt')

slackSend (channel: name //etc.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.