Как поместить значение в переменную в файле Дженкинса с помощью команды sshcommand

#jenkins #jenkins-pipeline

Вопрос:

Я хотел бы создать конвейер в Jenkins, который получает значение команды, выполняемой с помощью sshCommand. У меня есть такой файл на удаленном сервере :

 VALUE 11
 

Вот мой трубопровод :

 pipeline {
agent any

stages {
    stage('Get Init') {
        steps {
            withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId:'xxxxxxx', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                script {
                    def remote = [:]
                    remote.name = 'xxxxxx'
                    remote.host = 'xxxxxx'
                    remote.user = USERNAME
                    remote.port = 22
                    remote.password = PASSWORD
                    remote.allowAnyHosts = true
                    sshCommand remote: remote, command: "init=$(cat /var/log/myFile |  grep VALUE | awk '{print $2}')"
                }
            }
        }
    }
    stage("Test") {
        steps {
            script {
                    test = sh(script "echo $init")
                }
            }
        }
    }

    
}
 

}

Я хочу получить «11» в переменной, чтобы сравнить ее позже в моем файле Дженкинса. Как это сделать ?

Ответ №1:

Вы можете использовать следующим образом :
Пример:
def Result = sshCommand remote: remote, command: "<Your command>"

 # Declare variable init
def init
pipeline {
agent any
stages {
    stage('Get Init') {
        steps {
            withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId:'xxxxxxx', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
                script {
                    def remote = [:]
                    remote.name = 'xxxxxx'
                    remote.host = 'xxxxxx'
                    remote.user = USERNAME
                    remote.port = 22
                    remote.password = PASSWORD
                    remote.allowAnyHosts = true
                    # Execute your command and take return value in the init variable
                    init= sshCommand remote: remote, command: "cat /var/log/myFile |  grep VALUE | awk '{print $2}')"
                    echo "Initial Value: "   init
                }
            }
        }
    }
    stage("Test") {
        steps {
            script {
                    test = sh(script "echo ${init}")
                }
            }
        }
    }
  }
}