Travail sur le pipeline Jenkins; bonne cotation pour l'étape slackSend


11

Il s'agit probablement d'une erreur utilisateur à 100%, mais je ne peux pas obtenir de travail de pipeline pour utiliser une variable comme nom de canal dans une étape slackSend.

Cela utilise à la fois le plugin Slack et le plugin Build User Vars . J'essaie d'utiliser BUILD_USER_FIRST_NAMEpour identifier le canal vers Slack (c'est-à-dire que celui qui démarre la génération doit être celui qui reçoit le message).

J'en suis à mi-chemin avec cet article sur la façon d'utiliser le plugin utilisateur de génération dans un travail de pipeline, mais le remplacement de la variable me fait trébucher.

La partie pertinente du travail ressemble à ceci;

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

}

J'ai essayé ce qui suit à la place du bit de canal, tous ont échoué avec des Slack post may have failed. Response: Invalid channel specifiederreurs indéterminées .

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

Le résultat attendu est qu’il résoudrait channel: '@Alex',

Quelle est la syntaxe appropriée?

Réponses:


6

Dans Groovy, vous devez utiliser des guillemets doubles pour obtenir une interpolation de chaîne:

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

Vous pouvez aussi probablement faire quelque chose comme ça pour l'éviter complètement et avoir moins de duplication:

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

slackSend (channel: name //etc.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.