Công việc đường ống Jenkins; trích dẫn thích hợp cho bước slackSend


11

Đây có thể là lỗi người dùng 100%, nhưng tôi không thể có một công việc đường ống để sử dụng một biến làm tên kênh trong bước slackSend.

Điều này sử dụng cả plugin SlackPlugin Build User Vars . Tôi đang cố gắng sử dụng BUILD_USER_FIRST_NAMEđể xác định kênh nào sẽ quay trở lại (nghĩa là kênh bắt đầu xây dựng phải là kênh để nhận thông báo).

Đã đi được nửa đường với bài viết này về cách sử dụng plugin xây dựng người dùng trong công việc đường ống, nhưng thay thế biến số đang làm tôi vấp ngã.

Phần có liên quan của công việc trông như thế này;

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

}

Tôi đã thử các cách sau thay cho bit kênh, tất cả đều thất bại với các Slack post may have failed. Response: Invalid channel specifiedlỗi không xác định .

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

Đầu ra dự kiến ​​là nó sẽ giải quyết channel: '@Alex',

Cú pháp thích hợp là gì?

Câu trả lời:


6

Trong Groovy, bạn phải sử dụng dấu ngoặc kép để có được phép nội suy chuỗi:

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

Bạn cũng có thể làm điều gì đó như thế này để tránh hoàn toàn và có ít sự trùng lặp:

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

slackSend (channel: name //etc.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.