Jenkins (Windows マシン上) ジョブを使用して、Ant を介してさまざまなターゲット用のコードをコンパイルします。そのために、次のように (Windows) バッチ ループ内で ant ターゲットへの呼び出しをラップします。
@echo off
for %%t in (target1 target2 target3) do (
ant -f build.xml build -DPARAM_TARGET=%%t
)
それが私の最初のアイデアでした...しかし、このコードは、(たとえば) target1 が失敗した場合でも、ビルドの成功につながります。そのため、概要を把握するために、Windows バッチ ビルド ステップにさらに行を追加しました。また、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ターゲットの呼び出しからの戻りコードが、Jenkinsが呼び出しを行うJava環境に適切に渡されないことが明らかになりました。このような "call" または "set ERRORLEVEL=1" を使用してテストしましたが、まだ解決策は見つかりませんでした。
誰にもアイデアがありますか?ループ (target1-3) をシステムの groovy スクリプトに入れ、callc を手動で処理します。これは機能しますか?
よろしく