Трубопровід Дженкінса; належне цитування для slackSend кроку


11

Це, мабуть, 100% помилка користувача, але я не можу отримати роботу конвеєра, щоб використовувати змінну як назву каналу на кроці slackSend.

Для цього використовується як плагін Slack, так і плагін Build Vars 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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.