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