Pekerjaan Jenkins Pipeline; kutipan yang tepat untuk langkah slackSend

11

Ini mungkin kesalahan pengguna 100%, tapi saya tidak bisa mendapatkan pekerjaan pipa untuk menggunakan variabel sebagai nama saluran dalam langkah slackSend.

Ini menggunakan plugin Slack dan Plugin Build User Vars . Saya mencoba menggunakan BUILD_USER_FIRST_NAMEuntuk mengidentifikasi saluran mana yang harus digunakan Slack untuk kembali (yaitu, yang memulai membangun haruslah yang mendapatkan pesan).

Separuh jalan di sana dengan artikel ini tentang cara menggunakan plugin build user dalam pekerjaan pipeline, tetapi mengganti variabel membuat saya tersandung.

Bagian yang relevan dari pekerjaan terlihat seperti ini;

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

}

Saya sudah mencoba yang berikut sebagai pengganti bit saluran, semua gagal dengan Slack post may have failed. Response: Invalid channel specifiedkesalahan tak tentu .

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

Output yang diharapkan adalah itu akan diselesaikan channel: '@Alex',

Apa sintaks yang tepat?

Alex
sumber

Jawaban:

6

Di Groovy Anda harus menggunakan tanda kutip ganda untuk mendapatkan interpolasi string:

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

Anda juga dapat melakukan sesuatu seperti ini untuk menghindarinya sepenuhnya dan memiliki duplikasi yang lebih sedikit:

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

slackSend (channel: name //etc.
Michael Pereira
sumber