我正在为Jenkins管道编写一个Groovy脚本,并在寻找从远程ssh连接获取变量时如何跨阶段传递变量的过程中苦苦挣扎。 我在此站点上找到了示例1和示例2,我想将它们合并在一起,如下面的“我的尝试”所示。请注意,远程服务器上文件的输出为4。我正在尝试将4传递给a_var。
示例1:效果很好。 SSH连接。这将读取文件并将值输出到Jenkins控制台
def sshCredId = 'myid_cred'
def sshUser = 'myid'
def sshServer = 'myserver'
pipeline {
agent { label 'docker-maven-slave' }
stages {
stage('one') {
steps {
script {
sshagent([sshCredId]){
sh "ssh -o StrictHostKeyChecking=no ${sshUser}@${sshServer} cat /mydir/myfile.csv"
}
}
}
}
stage('two') {
steps {
echo "something"
}
}
stage('three') {
steps {
echo "do stuff"
}
}
}
}
示例2:效果很好。这样会跨阶段传递参数
pipeline {
agent {
label 'docker-maven-slave'
}
parameters {
string(name: 'a_var', defaultValue: '')
}
stages {
stage("one") {
steps {
script {
tmp_param = sh (script: 'echo something', returnStdout: true).trim()
env.a_var = tmp_param
}
}
}
stage("two") {
steps {
echo "${env.a_var}"
}
}
}
}
**我的尝试:第二阶段的输出为空。我期望是“ 4” **
def sshCredId = 'myid_cred'
def sshUser = 'myid'
def sshServer = 'myserver'
pipeline {
agent { label 'docker-maven-slave' }
parameters {
string(name: 'a_var', defaultValue: 'nothing')
}
stages {
stage('one') {
steps {
script {
tmp_param=sshagent([sshCredId]){
sh "ssh -o StrictHostKeyChecking=no ${sshUser}@${sshServer} cat /mydir/myfile.csv"
}
env.a_var=tmp_param
}
}
}
stage('two') {
steps {
echo "${env.a_var}"
}
}
stage('three') {
steps {
echo "do stuff"
}
}
}
}
答案 0 :(得分:0)
根据MayJoAnneBeth的评论和反馈更新答案 尝试以下代码段
result.entityType == 'PostalCodeArea'