Попытка установить переменную среды канала и сообщения глобально в Jenkinsfile, но не уверен, какой из двух методов лучше - PullRequest
0 голосов
/ 29 февраля 2020

Попытка сделать SEND_SLACK_NOTIF, SLACK_CHANNEL и SLACK_MESSAGE переменными и установить их как глобальные переменные среды в файле Jenkins, но я не уверен, какой метод лучше в многоступенчатом конвейере , Не обращайте внимания на отступы!

Метод 1:

 #!/usr/bin/groovy

    node('large') {

    withEnv(['SEND_SLACK_NOTIF=true',
            'SLACK_CHANNEL=UT24K22K1',
            "SLACK_MESSAGE=FAILURE: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'\nBetter fix it! (${env.BUILD_URL})"]){
        stage('Test') {
            if (env.SEND_SLACK_NOTIF) {
                slackSend channel: env.SLACK_CHANNEL, color: 'danger', message: env.SLACK_MESSAGE, tokenCredentialId: 'slack-integration-token'
            }
        }
    }
}

Метод 2:

 #!/usr/bin/groovy
    env.SEND_SLACK_NOTIF = true
    env.SLACK_CHANNEL = 'UT24K22K1'
    env.SLACK_MESSAGE = "FAILURE: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'\nBetter fix it! (${env.BUILD_URL})"

node('large') {

stage('Test') {
            if (env.SEND_SLACK_NOTIF) {
                slackSend channel: env.SLACK_CHANNEL, color: 'danger', message: env.SLACK_MESSAGE, tokenCredentialId: 'slack-integration-token'
            }
        }
    }

1 Ответ

0 голосов
/ 29 февраля 2020

Если вы просто рассмотрите два варианта, я бы go выбрал вариант 1, потому что он более декларативный, чем вариант 2. Однако лучший способ описан в документации Jenkins :

pipeline {
    agent {
        ...
    }

    environment {
        SEND_SLACK_NOTIF = 'true'
        SLACK_CHANNEL = 'UT24K22K1'
    }

    stages {
        ...
    }
}

Вы также можете пересмотреть, какие переменные вам действительно нужны. Если вы используете их только один раз, не используйте переменную, а используйте значение напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...