一千萬個為什麽

搜索

詹金斯管道工作;適當引用slackSend步驟



這可能是100%的用戶錯誤,但我無法獲得管道作業以在slackSend步驟中將變量用作通道名稱。

這使用 Slack插件建立用戶變量插件。我試圖使用 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可能失敗。響應:指定的通道無效錯誤。

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

Expected output is that it would resolve to channel: '@Alex',

什麽是適當的語法?

轉載註明原文: 詹金斯管道工作;適當引用slackSend步驟

一共有 1 個回答:

在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.