ジェンキンスパイプラインの仕事; 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.