Jenkins Pipeline job; quotazione corretta per slackInvia passaggio


11

Questo è probabilmente un errore dell'utente al 100%, ma non riesco a ottenere un processo di pipeline per utilizzare una variabile come nome del canale in un passaggio slackSend.

Questo utilizza sia il plug-in Slack che il plug -in Vars utente build . Sto provando a usare BUILD_USER_FIRST_NAMEper identificare a quale canale tornare indietro (cioè, quello che inizia la compilazione dovrebbe essere quello per ottenere il messaggio).

Arrivato a metà strada con questo articolo su come utilizzare il plug-in build user in un processo pipeline, ma la sostituzione della variabile mi fa scattare.

La parte rilevante del lavoro è simile a questa;

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")
    }

}

Ho provato quanto segue al posto del bit del canale, tutti hanno fallito con Slack post may have failed. Response: Invalid channel specifiederrori indeterminati .

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

L'output previsto è che dovrebbe risolversi channel: '@Alex',

Qual è la sintassi corretta?

Risposte:


6

In Groovy devi usare le virgolette doppie per ottenere l'interpolazione delle stringhe:

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

Probabilmente puoi anche fare qualcosa del genere per evitarlo del tutto e avere meno duplicazioni:

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

slackSend (channel: name //etc.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.