Дженкинс и код возврата из пакета Windows

Я использовал задание Jenkins (на машине с Windows) для компиляции некоторого кода для различных целей через Ant. Для этого я обертываю вызов цели ant в цикле пакетной обработки (windows) следующим образом:

@echo off
for %%t in (target1 target2 target3) do (
  ant -f build.xml build -DPARAM_TARGET=%%t
)

Это была моя первая идея ... но эти коды приводят к успешной сборке, даже если (например) target1 не удалось. Поэтому я добавил еще несколько строк на шаг пакетной сборки Windows, чтобы получить больше общего обзора. Кроме того, у меня есть checekdout код, чтобы получить ту же рабочую область, что и у Jenkins на моей локальной машине, и добавить test.bat, чтобы проверить, что пакетный код windows может работать вообще.

@echo off
for %%t in (target1 target2 target3) do (
  ant -f build.xml build -DPARAM_TARGET=%%t
  echo ELVL: %ERRORLEVEL% 
  IF NOT %ERRORLEVEL% == 0 ( 
    echo ABORT: %ERRORLEVEL%
    exit /b %ERRORLEVEL%
  ) ELSE (
    echo PROCEED: %ERRORLEVEL%
  )
)

Тестирование этого на моей локальной машине Windows показывает ожидаемое поведение - здесь в случае успеха:

BUILD SUCCESSFUL
Total time: 3 seconds
ELVL: 0
PROCEED: 0

И при неудаче:

BUILD FAILED
C:\Work\...
C:\Work\...

Total time: 0 seconds
ELVL: 9009
ABORT: 9009

Тот же код на Jenkins делает это:

BUILD FAILED
C:\Work\...
C:\Work\...

Total time: 4 seconds
ELVL: 0
PROCEED: 0

После использования Google некоторое время обнаруживается, что код возврата от вызова цели Ant неправильно передается в среду Java, откуда Дженкинс выполняет вызовы. Я тестировал с использованием "call" или "set ERRORLEVEL = 1" что-то вроде этого, но пока не нашел решения.

У кого-нибудь есть идея? Поместите цикл (target1-3) в системный сценарий groovy и вручную обработайте callc - это работает?

С уважением

Ответы на вопрос(2)

Ваш ответ на вопрос