如何批量返回字符串值和退出代码?

时间:2019-05-14 10:02:12

标签: batch-file jenkins-pipeline return-value

我正在从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)
                }
                    }
                            }

2 个答案:

答案 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中,捕获该输出并将其分配给您的变量。