젠킨스 파이프 라인 직업; slackSend 단계에 대한 올바른 인용


11

이것은 100 % 사용자 오류 일 수 있지만 slackSend 단계에서 변수를 채널 이름으로 사용하는 파이프 라인 작업을 얻을 수 없습니다.

Slack 플러그인Build User Vars 플러그인을 모두 사용합니다 . BUILD_USER_FIRST_NAMESlack으로 돌아갈 채널을 식별하는 데 사용하려고합니다 (즉, 빌드를 시작하는 것이 메시지를 얻는 채널이어야 함).

파이프 라인 작업에서 빌드 사용자 플러그인을 사용하는 방법에 대해이 기사 와 함께 반쯤 가졌지 만 변수를 대체하면 문제가 발생합니다.

작업의 관련 부분은 다음과 같습니다.

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.