0

問題

ビルド前イベントから呼び出されるバッチ ファイルがあります。ソリューションがJenkinsによって構築されている場合、失敗します。コマンド ラインでMSBuildまたはVisual Studio
からソリューションをビルドすると、正常に動作します。 私の質問は、何がそのような行動を引き起こす可能性があるのですか?

詳細

私のソリューション (.Net 4.5 および C++ プロジェクト) には、プロジェクトのビルド前イベントの 1 つから呼び出されるバッチ ファイルがあります。
Jenkins (CI Server) 経由でソリューションを構築しようとしている場合を除いて、正常に動作します。エラーは次のとおりです。

コマンド ""C:\Jenkins\apps\jenkins\jenkins_home\jobs\Builld_SMW2\workspace\Autosync\CopySymAlignFiles.bat" "C:\Jenkins\apps\jenkins\jenkins_home\jobs\Builld_SMW2\workspace\" "C:\ Jenkins\apps\jenkins\jenkins_home\jobs\Builld_SMW2\workspace\Autosync\" "Debug"" はコード 1 で終了しました。

エラー レポートから、ソリューションの構築を試みるために使用されたコマンドをコピーしました。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /p:Platform=x86 /p:configuration=Debug /t:再構築 /verbosity:quiet /p:WarningLevel=0 /p:Platform=x86 /p:configuration=Debug /t:Rebuild /verbosity:quiet /p:WarningLevel=0 ..\SMW2_Analysis.sln

(引数が2回渡されていることは承知していますが、ジェンキンスがそうする理由はわかりませんが、これは問題ではありません...)

コマンド ラインからこのコマンドを実行すると、ビルド イベントがトリガーされると、バッチ ファイルは正常に動作します。

CopySymAlignFiles.bat の内容は次のとおりです。

エコー オフセットの
設定 solutionDir=%1
set projectDir=%2
set configuration=%3

REM 引用符の削除
set solutionDir=%solutionDir:"=%
set projectDir=%projectDir:"=%
set configuration=%configuration:"=%

REM 文字列の末尾にスラッシュがありますか? その場合は削除してください
IF %solutionDir:~-1%==\ SET solutionDir=%solutionDir:~0,-1%
IF %projectDir:~-1%==\ SET projectDir=%projectDir:~0,-1%
IF %configuration:~-1%==\ SET configuration=%configuration:~0,-1%

REM これはデバッグを容易にするためのものです
Echo Solution Directory is: "%solutionDir%"
Echo Project Directory is: "%projectDir%"
Echo Configuration directory is: "%configuration%"
Echo Current Directory is: "%CD%"
Echo バッチファイルは「%~dp0」で実行されます

REM sym_align ファイル
のコピー copy /Y "%solutionDir%\SymAlignGlue\sym_align.dll" "%projectDir%"
copy /Y "%solutionDir%\SymAlignGlue\sym_align.ctf" "%projectDir%"

set isPV=%configuration%=="PV Release"
IF %isPV% copy /Y "%solutionDir%\SymAlignGlue\Release\SymAlignGlue.dll" "%projectDir%"
IF NOT %isPV% copy /Y "%solutionDir%\ SymAlignGlue\%configuration%\SymAlignGlue.dll" "%projectDir%"

REM 結果...
IF %ERRORLEVEL% EQU 0 (
REM 成功
Echo コピーされた SymAlign ファイル。
終了 /b 0
)
IF NOT %ERRORLEVEL% EQU 0 (
REM エラー
エコー SymAlign ファイルのコピー中にエラーが見つかりました。エラー レベルは %ERRORLEVEL でした%
exit /b %ERRORLEVEL%
)

いくつかの追加情報:

  1. Jenkins をサービスとして実行しており、管理者としてサービスにログオンしています。

どうすればこれが起こるのか、誰にもアイデアがありますか?

4

1 に答える 1