Jenkins管道-从bat命令到标签的变量,输出显示完整的命令提示符

Jenkins管道-从bat命令到标签的变量,输出显示完整的命令提示符,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,詹金斯。2.176.1声明性管道,试图从一个阶段获取bat命令输出,以设置另一个阶段的代理标签 当通过bat命令(“echo%computername%”设置变量时,我可以很好地从步骤中读取变量(我得到:V-COMP-S6-CI3,这正是我所需要的。) 我无法在代理标签中设置它。当我在另一个阶段尝试设置代理{label“${winCompName}}”时,我得到:没有标签为“c:\jenkins\build\workspace”的节点\nashpaz@2>echo V-COMP-S6-CI3 1

詹金斯。2.176.1声明性管道,试图从一个阶段获取bat命令输出,以设置另一个阶段的代理标签

当通过bat命令(“echo%computername%”设置变量时,我可以很好地从步骤中读取变量(我得到:V-COMP-S6-CI3,这正是我所需要的。)

我无法在代理标签中设置它。当我在另一个阶段尝试设置代理{label“${winCompName}}”时,我得到:没有标签为“c:\jenkins\build\workspace”的节点\nashpaz@2>echo V-COMP-S6-CI3 12:34:29 V-COMP-S6-CI3'

我似乎得到了完整的命令提示符+输出,而不仅仅是标准输出, (“c:\jenkins\build\workspace\nashpaz@2>echo V-COMP-S6-CI3”而不是“V-COMP-S6-CI3”)

如何仅获取代理标签的输出

我的管道和输出:

    #!/usr/bin/env groovy


import org.apache.commons.lang.StringUtils
currentBuild.description = "${params.EMAIL}"
currentBuild.displayName = "${params.BRANCH_NAME}"

def call(String filter_string, int occurrence) {
    def logs = currentBuild.rawBuild.getLog(10000).join('\n')
    int count = StringUtils.countMatches(logs, filter_string);
    if (count > occurrence -1) {
        currentBuild.result='UNSTABLE'
    }
}


pipeline {
    agent {
        label "winServerGroup"
    }
    options { 
       timestamps()
       timeout(time: 2, unit: 'HOURS')   // timeout on whole pipeline job
  
    }

    stages {
        stage ('Print Environment') {            
            steps {
                echo "Print Environment" 
                bat '''
                echo userprofile=%USERPROFILE%
                SET
                '''
            }
        }   
        stage ('1. set comutername to var') {
            agent { label 'winServerGroup' }
            steps {
                script {
                    winCompName = bat(script: "echo %COMPUTERNAME%", returnStdout: true).trim()
                }
                echo "${winCompName}"
            }       
        }
        stage ('1.5.print var') {
            agent { label 'winServerGroup' }
            steps {
                echo "${winCompName}"
            }
        }
        stage ('2. run on comutername') {
            agent { label "${winCompName}" }
            steps {
                bat """echo %COMPUTERNAME%"""
                echo "${winCompName}"
            }
        }

    } // end of stages
} // end of pipeline
输出(耳轴):

adding.readLines().drop(1).join(“”)(回答自)有效,但我仍然想知道是否有更简单的方法:

stage ('1. set comutername to var') {
        agent { label 'winServerGroup' }
        steps {
            script {
                winCompName = bat(script: "echo %COMPUTERNAME%", returnStdout: true).trim().readLines().drop(1).join(" ")
            }
            echo "${winCompName}"
        }       
    }

    stage ('2. run on comutername') {
        agent { label "${winCompName}" }
        steps {
            bat """echo %COMPUTERNAME%"""
            echo "${winCompName}"
        }
    }
stage ('1. set comutername to var') {
        agent { label 'winServerGroup' }
        steps {
            script {
                winCompName = bat(script: "echo %COMPUTERNAME%", returnStdout: true).trim().readLines().drop(1).join(" ")
            }
            echo "${winCompName}"
        }       
    }

    stage ('2. run on comutername') {
        agent { label "${winCompName}" }
        steps {
            bat """echo %COMPUTERNAME%"""
            echo "${winCompName}"
        }
    }