Получить уровень ошибки в Jenkins

#c# #jenkins #jenkins-pipeline

#c# #дженкинс #дженкинс-конвейер

Вопрос:

Я создал / модифицировал инструмент перевода ресурсов на C #, который проверяет формат во всех моих файлах ресурсов в проекте.

программа возвращает целое число. 0 означает, что проблема с форматом не найдена. Число > 0 — это количество всех обнаруженных проблем с форматом. Меньше 0 — это ошибка, например, папка не найдена и т.д..

Мне нужно интегрировать этот процесс в наш конвейер сборки Jenkins (мне нужно остановить сборку, если возвращаемое значение не равно 0)

Я модифицировал скрипт Jenkins, и он работает довольно хорошо, единственная проблема в том, что я не могу догнать уровень ошибки. Я хочу, например, выдать Eco бла-бла, если возвращаемое значение равно 0, и что-то еще, если возвращаемое значение равно!= 0.

любая помощь, как это сделать.

Это то, что я делал до сих пор, как я сказал, это работает, и сборка останавливается, если возвращаемое значение не равно 0, но мне нужно каким-то образом перехватить это значение, чтобы узнать, например, общее количество проблем с форматом, которые у меня есть и т.д..

 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:

Вы могли бы использовать флаг returnStatus

Обычно сценарий, который завершается с ненулевым кодом состояния, приведет к сбою шага с исключением. Если этот параметр установлен, возвращаемым значением шага вместо этого будет код состояния. Затем вы можете сравнить его, например, с нулем.

И вот как вы могли бы это использовать

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

Это не приведет к сбою сборки или возникновению исключений, так что вы можете обработать это должным образом и делать все, что вам нужно.

Комментарии:

1. returnStatus: true Это то, чего мне не хватало, большое спасибо