在Jenkins中获取ErrorLevel

时间:2019-04-08 14:46:04

标签: c# jenkins jenkins-pipeline

我用C#创建/修改了资源转换器工具,该工具检查项目中所有资源文件中的格式。

程序返回一个整数。 0表示未找到格式问题。 > 0是找到的所有格式问题的计数。 小于0是类似找不到文件夹之类的错误。

我需要将此过程集成到我们的Jenkins构建管道中(如果返回值不为0,则需要停止构建)

我修改了Jenkins脚本,并且运行良好,唯一的问题是我无法赶上ErrorLevel。 如果返回值为0,我想扔一个Eco blah-blah,如果返回值为== 0,我想扔其他东西。

任何帮助如何做到这一点。

这是我到目前为止所做的,因为我说它正在工作,并且如果返回值不为0,则构建停止,但是我需要以某种方式捕获该值以了解例如我遇到的Format问题的总数等。

try{
        stage('Check Translation'){
            buildResult.checkTranslationSuccssfull = false
            // Clean project
            bat "${MSBuildPath} ${WORKSPACE}\"\\Translator\\ResxTranslator.sln\" /t:Clean,Build /p:Configuration=\"Release\" /p:Platform=\"x86\" /p:BuildProjectReferences=false >>${OutPutBuildLog}"
            // Build reference SmartFramework
            bat "@Echo Off"
            bat "@Echo [Check all Resx format]"
            bat "@echo"
            bat "${WORKSPACE}\\Translator\\bin\\Release\\ResxTranslator.exe /checkForamt ${WORKSPACE}\\DataBlock\\SmartFramework"           
            buildResult.checkTranslationSuccssfull = true           
        }
}
catch(Exception ex){
    echo "test ${env.errorlevel}"
    echo "Check Translation failed. Check BuildServer solution."
    echo ex.toString()
    currentBuild.result = 'UNSTABLE' // mark as unstable to continue with pipeline
}

1 个答案:

答案 0 :(得分:0)

您可以使用returnStatus flag

  

通常,以非零状态代码退出的脚本将导致该步骤失败并出现异常。如果选中此选项,则该步骤的返回值将是状态码。例如,您可以将其与零进行比较。

这是您可以使用它的方式

def returnCode = bat (
    script: "${WORKSPACE}\\Translator\\bin\\Release\\ResxTranslator.exe /checkForamt ${WORKSPACE}\\DataBlock\\SmartFramework",
    returnStatus: true
)

它不会使构建失败或引发异常,因此您可以正确处理它并执行所需的任何操作。