代码中的问题是您正在
sh步骤中分配环境变量的版本。此步骤将在其自己的隔离流程中执行,并继承父流程环境变量。
但是,将数据传递回父级的唯一方法是通过
STDOUT/STDERR或退出代码。当您需要一个字符串值时,最好从
sh步骤中回显版本并将其分配给
script上下文中的变量。
如果您重复使用该节点,则脚本上下文将持久存在,并且变量将在后续阶段中可用。下面是一个工作示例。请注意,任何将其放在一个
parallel块中的尝试都可能会失败,因为版本信息变量可以由多个进程写入。
#!/usr/bin/env groovypipeline { environment { AGENT_INFO = '' } agent { docker { image 'alpine' reuseNode true } } stages { stage('Collect agent info'){ steps { echo "Current agent info: ${env.AGENT_INFO}" script { def agentInfo = sh script:'uname -a', returnStdout: true println "Agent info within script: ${agentInfo}" AGENT_INFO = agentInfo.replace("/n", "") env.AGENT_INFO = AGENT_INFO } } } stage("Print agent info"){ steps { script { echo "Collected agent info: ${AGENT_INFO}" echo "Environment agent info: ${env.AGENT_INFO}" } } } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)