Jenkins Pipeline işi; Gevşeklik için uygun fiyat teklifi


11

Bu muhtemelen% 100 kullanıcı hatası, ancak kanal adı olarak bir değişken slackSend adımında kullanmak için bir boru hattı iş alamıyorum.

Bu hem Slack eklentisini hem de Build User Vars Eklentisini kullanır . BUILD_USER_FIRST_NAMESlack geri hangi kanal tanımlamak için kullanmaya çalışıyorum (yani, bir başlangıç ​​mesaj almak için bir olmalıdır).

Bir boru hattı işinde yapı kullanıcı eklentisini nasıl kullanacağınıza dair bu makalenin yarısında var , ancak değişkenin yerine koymak beni açıyor.

İşin ilgili kısmı şöyle görünür;

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

}

Kanal bit yerine aşağıdakileri denedim, hepsi belirsiz Slack post may have failed. Response: Invalid channel specifiedhatalarla başarısız oldu .

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

Beklenen çıktı, bunun çözülmesi channel: '@Alex',

Doğru sözdizimi nedir?

Yanıtlar:


6

Groovy'de dize enterpolasyonu almak için çift tırnak kullanmanız gerekir:

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

Tamamen önlemek ve daha az çoğaltma yapmak için muhtemelen böyle bir şey yapabilirsiniz:

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

slackSend (channel: name //etc.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.