Конвейер Jenkins: Использование Env Var в другом объявлении Env Var

Я хотел бы сделать мою длинную команду "ssh" многократно используемой в качестве простой переменной в моем конвейере. Для этого было бы неплохо объявить мое имя хоста в переменной var, а затем использовать эту переменную в другом объявлении var для построения последней команды:

environment {
    BUILDHOST   = 'buildhost.example.com'
    SSHCMD      = 'ssh -o StrictHostKeyChecking=no jenkins@${env.BUILDHOST}'
}

Итак, концептуально примерно так:

pipeline {
    agent any
    environment {
        BUILDHOST   = 'buildhost01.example.com'
        SSHCMD      = 'ssh -o StrictHostKeyChecking=no jenkins@${env.BUILDHOST}'
    }
    stages {
        stage('SSH Testing') {
            steps {
                sshagent ( ['jenkins_ssh']) {
                    sh '''
                        $SSHCMD uname -a
                    '''
                }
            }
        }
        stage('Example Test') {
            steps {
                sshagent ( ['jenkins_ssh']) {
                    sh '''
                        $SSHCMD /run/something.sh
                    '''
                }
            }
        }
    }
}

Он отлично работает, когда я объявляю var без замен: SSHCMD = 'ssh -o StrictHostKeyChecking = no jenkins@buildhost.example.com '

но я не могу вложить вместе переменные. Как это сделать?

1
задан 11 December 2018 в 00:15
1 ответ

Это должно сработать. Однако, Вам необходимо использовать двойные кавычки для Строковой интерполяции:

pipeline {
    agent any
    environment {
        BUILDHOST   = 'buildhost01.example.com'
        SSHCMD      = "ssh -o StrictHostKeyChecking=no jenkins@${env.BUILDHOST}" // <<< double-quotes
    }
    stages {
        stage('SSH Testing') {
            steps {
                sshagent ( ['jenkins_ssh']) {
                    sh """ // <<< double-quotes
                        $SSHCMD uname -a
                    """
                }
            }
        }
        stage('Example Test') {
            steps {
                sshagent ( ['jenkins_ssh']) {
                    sh """ // <<< double-quotes
                        $SSHCMD /run/something.sh
                    """
                }
            }
        }
    }
}

См. также этот ответ.

.
0
ответ дан 4 December 2019 в 03:24

Теги

Похожие вопросы