งานไปป์ไลน์ของเจนกินส์; การอ้างอิงที่เหมาะสมสำหรับขั้นตอน slackSend


11

นี่อาจเป็นข้อผิดพลาดของผู้ใช้ 100% แต่ฉันไม่สามารถรับงานไปป์ไลน์เพื่อใช้ตัวแปรเป็นชื่อช่องในขั้นตอน slackSend

นี้ใช้ทั้งปลั๊กอินหย่อนและรูปร่างของผู้ใช้ Vars ปลั๊กอิน ฉันกำลังพยายามที่จะใช้BUILD_USER_FIRST_NAMEเพื่อระบุช่องทางที่จะหย่อนกลับไปที่ (เช่นคนที่เริ่มต้นการสร้างควรเป็นคนที่จะได้รับข้อความ)

มีครึ่งหนึ่งของบทความนี้เกี่ยวกับวิธีใช้ปลั๊กอินผู้ใช้บิลด์ในงานไปป์ไลน์ แต่การแทนที่ตัวแปรกำลังทำให้ฉันสะดุด

ส่วนที่เกี่ยวข้องของงานจะเป็นดังนี้

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

}

ฉันลองต่อไปนี้แทนบิตของช่องทุกคนล้มเหลวด้วยSlack post may have failed. Response: Invalid channel specifiedข้อผิดพลาดที่ไม่แน่นอน

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

ผลลัพธ์ที่คาดหวังก็คือมันจะแก้ไข channel: '@Alex',

ไวยากรณ์ที่ถูกต้องคืออะไร?

คำตอบ:


6

ใน Groovy คุณต้องใช้เครื่องหมายคำพูดคู่เพื่อรับการแก้ไขสตริง:

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

คุณสามารถทำสิ่งนี้เพื่อหลีกเลี่ยงมันทั้งหมดและทำซ้ำได้น้อยลง:

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

slackSend (channel: name //etc.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.