詹金斯·弗。2.176.1声明式管道,试图从一个阶段获得蝙蝠命令输出,以设置另一个阶段的代理标签,
当通过bat命令(“echo%computername%”设置变量时,我可以很好地从步骤中读取变量(我得到:V-COMP-S6-CI3,这正是我所需要的。)
我不能设法把它设置在代理标签中。当我尝试在另一个阶段设置代理{标签${winCompName}}时,我得到:没有标签为c:\jenkins\build\workspace\nashpaz@2的节点
我似乎得到了一个完整的命令提示符输出,而不仅仅是标准输出,("c:\jenkins\build\workspace\nashpaz@2
我如何才能得到只是输出到代理标签?
我的管道和输出:
#!/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
输出(耳轴):
[Pipeline] { (1. set comutername to var)
[Pipeline] node (hide)
...
[Pipeline] echo
12:34:12 c:\jenkins\build\workspace\nashpaz@2>echo V-COMP-S6-CI3
12:34:12 V-COMP-S6-CI3
[Pipeline] }
...
[Pipeline] stage
[Pipeline] { (1.5.print var)
[Pipeline] node
12:34:12 Running on v-comp-s6-ci3 in c:\jenkins\build\workspace\nashpaz@2
[Pipeline] {
...
[Pipeline] withEnv
[Pipeline] {
[Pipeline] echo
12:34:13 c:\jenkins\build\workspace\nashpaz@2>echo V-COMP-S6-CI3
12:34:13 V-COMP-S6-CI3
[Pipeline] }
....
[Pipeline] stage
[Pipeline] { (2. run on comutername)
[Pipeline] node
12:34:29 Still waiting to schedule task
12:34:29 There are no nodes with the label ‘c:\jenkins\build\workspace\nashpaz@2>echo V-COMP-S6-CI3
12:34:29 V-COMP-S6-CI3’
添加。readLines()。下降(1)。连接(“”)(从https://issues.jenkins-ci.org/browse/JENKINS-44569)有效,但我仍然想知道是否有更简单的方法:
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}"
}
}
Computer says no. — Little Britain 一个问题的详细反馈会对解决问题有帮助。当你使用 exec 资源在节点上执行命令时, 并不总能轻易地找出其为何没有正确执行。如果命令返回一个非零的退出状态,Puppet 就会返回类似如下的错误消息: err: /Stage[main]//Node[cookbook]/Exec[this-will-fail]/returns: ch
问题内容: 我的jenkinsfile中有一个执行bat命令的阶段: 我的批处理命令需要一个参数,该参数是svn中的当前分支。 当我使用这个: 回声“ SVN_BRANCH_NAME是$ {env.BRANCH_NAME}” 它会给出BRANCH_NAME的值,但是如果我将其作为参数传递给我的批处理文件,它将按字面意义传递$ {env.BRANCH_NAME}而不是该值。 他们有办法吗? 问题答案
我们如何在docker history命令输出的第三列(由创建)中看到完整命令? 第三列(CREATED BY)是命令的缩写,这使得重建原始Dockerfile变得困难。是否可以在第三列中获得完整的命令? 感谢阅读。
使用Jenkins 2管道插件,有一个有用的功能,允许快速概述管道阶段和步骤状态,包括日志输出。 但是,如果您使用“Shell脚本”(sh)步骤,似乎没有办法用有用的名称来标记该脚本,因此显示屏仅显示一长串“Shell脚本”(如下图所示)。 如何指定一个有用的名称,或者如何使用其他步骤来实现相同的效果?
我试图用命令提示符用java编译一个程序。我的程序在eclipse中运行良好,但是,当我试图在命令提示符中编译它时,我收到了一条错误消息。任何帮助和指导都将不胜感激。 triton.java:20:错误:不能dind符号循环Loop=new Loop(); 符号:类循环位置:类Triton trion.java:20:错误:找不到符号循环循环=新循环();sybmol:类循环位置:类Triton
问题内容: 我必须找到具有选定权限的文件,并列出它们及其编号。因此,我想将命令的结果传递给shell和下一个命令,该输出我想存储在变量中,以便以后可以很好地显示。我想吃点东西 但部分无效。请帮忙。 编辑 我知道我可以将命令的整个输出放到像这样的变量中 但是然后我只需要的结果。我如何从该变量中获得该数字?是否可以按相反的顺序显示它,先显示编号,然后显示列表? 问题答案: 复制到TTY(不是标准输出!