Получить ErrorLevel в Jenkins - PullRequest
2 голосов
/ 08 апреля 2019

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

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

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

Я изменил сценарий Дженкинса, и он работает довольно хорошо, единственная проблема в том, что я не могу догнать ErrorLevel. Я хочу бросить 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 Ответ

0 голосов
/ 09 апреля 2019

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

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

И вот как вы можете его использовать

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...