#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 Это то, чего мне не хватало, большое спасибо