我正在从Jenkins管道触发批处理文件。在批处理文件中,我有一个变量“ FailProcessList”,我需要将其值返回给Jenkins并将其存储在Jenkins管道中的变量中。
为清楚起见,以下是流程:-
Jenkins管道->触发器->批处理文件->将“ FailedProcessList”返回到> Jenkins->将“ FailedProcessList”存储到Jenkins中的变量。
下面是我用来退出批处理并将错误代码返回给Jenkins的方式。
if NOT "!FailProcessList!" == "" (
echo failed adapter is !FailProcessList!
echo !error!
if "!error!" neq 0 exit /b !error!
)
实际期望的是访问批处理文件的变量“ FailProcessList”并将其存储在Jenkins管道变量中。
编辑(在@AndreyG评论之后):-
以下是如何从Jenkins管道触发批处理文件的代码段。
Jenkins管道部署阶段:-
stage('Deploy') {
steps{
sshagent(credentials: ['84b46545']) {
def codeAndVal = sh(script:"val=ssh user@windowsserver ${params1}deploy.cmd ENV DOMAIN ${params.ADAPTERS} echo ${?},${val}",
returnStdout: true)
}
}
}
答案 0 :(得分:0)
您可以在Shell脚本中调用批处理文件,该脚本可以选择在Jenkins管道中返回值。
像这样的东西:
def codeAndVal = sh(script:"
val=your_file.bat
echo ${?},${val}",
returnStdout: true)
答案 1 :(得分:0)
将字符串写入STDOUT并从jenkins捕获。
...
if "!error!" neq "0" (echo customized message) & exit /b
如果您使用STDOUT
(或“只是为了确定”),请使用另一个流(在此示例中为3
):
...
if "!error!" neq "0" (echo customized message) 1>&3 & exit /b
在jenkins中,捕获该输出并将其分配给您的变量。