0

Jenkinsで以下のバッチスクリプトを作成しました。同じフォルダからJenkinsサーバーワークスペース内のバットファイルとして実行すると、問題なく実行されます。しかし、私はジェンキンを介して "Execute Windows Batch Command"を使用して実行します。それは、関連するパスを持つ "約コピー元"の行を印刷し、そこから実行を続けます。コンソールの出力に何も表示されず、何も抽出されません。 以下はスクリプトです。jenkinsによるバッチコマンドの実行は、バットファイルとして実行されたときに抽出されますが、ファイルを抽出しません。

echo %CD% 
FOR /D %%p IN ("%CD%\Setups\*") DO rmdir "%%p" /s /q 

call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.2.23:8081/nexus/content/repositories/releases/ -Dartifact=test:update-service:1.0.3 -Ddest=Setups/Services/update-service.jar 
call mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DrepoUrl=http://10.101.2.23:8081/nexus/content/repositories/releases/ -Dartifact=test:installer-prerequisites:1.0.0 -Ddest=Setups/PreRequisites/installer-prerequisites.zip -Dpackaging=zip 

echo came after the downloads 

for /r %%i in (*.zip) do (
    echo about to copy from %%~dpi to %%~fi 
Call :UnZipFile "%%~dpi" "%%~fi" 
echo called unzip on %%i 
del /S /Q "%%~fi" 
) 

exit /b 

:UnZipFile <ExtractTo> <newzipfile> 
    setlocal 
    set vbs="%temp%\_.vbs" 
    if exist "%vbs%" del /f /q "%vbs%" 
    >"%vbs%" echo Set fso = CreateObject("Scripting.FileSystemObject") 
    >>"%vbs%" echo If NOT fso.FolderExists("%~1") Then 
    >>"%vbs%" echo fso.CreateFolder("%~1") 
    >>"%vbs%" echo End If 
    >>"%vbs%" echo set objShell = CreateObject("Shell.Application") 
    >>"%vbs%" echo set FilesInZip=objShell.NameSpace("%~2").items 
    >>"%vbs%" echo objShell.NameSpace("%~1").CopyHere(FilesInZip) 
    >>"%vbs%" echo Set fso = Nothing 
    >>"%vbs%" echo Set objShell = Nothing 
    cscript //nologo "%vbs%" 
    if exist "%vbs%" del /f /q "%vbs%" 
    endlocal 

これは、batファイルとして実行するとうまく動作します。ご意見をお聞かせください。以下は

はジェンキンスワークスペースのパスです:

C:\Program Files (x86)\Jenkins\jobs\Installer\workspace\Setups 
+0

私はまだあなたの提案を運に質問を編集していない:(私はそれを道を行ってきました – mayooran

+0

unzipファイルが印刷される前のエコーが表示されます。 "C:¥Program Files(x86)¥Jenkins¥jobs¥Installer¥workspace¥PlatformSetup¥Updからコピーします。 aterServiceInstaller \をC:¥Program Files(x86)¥Jenkins¥jobs¥Installer¥workspace¥PlatformSetup¥UpdaterServiceInstaller¥Update_Service1.0.3.zipに変更しますが、その後はスピナーが実行されていますが、 – mayooran

答えて

0

サブルーチンの最後にGOTO:eofを指定する必要がありました。すなわち、

:UnZipFile <ExtractTo> <newzipfile> 
setlocal 
set vbs="%temp%\_.vbs" 
if exist "%vbs%" del /f /q "%vbs%" 
>"%vbs%" echo Set fso = CreateObject("Scripting.FileSystemObject") 
>>"%vbs%" echo If NOT fso.FolderExists("%~1") Then 
>>"%vbs%" echo fso.CreateFolder("%~1") 
>>"%vbs%" echo End If 
>>"%vbs%" echo set objShell = CreateObject("Shell.Application") 
>>"%vbs%" echo set FilesInZip=objShell.NameSpace("%~2").items 
>>"%vbs%" echo objShell.NameSpace("%~1").CopyHere(FilesInZip) 
>>"%vbs%" echo Set fso = Nothing 
>>"%vbs%" echo Set objShell = Nothing 
cscript //nologo "%vbs%" 
if exist "%vbs%" del /f /q "%vbs%" 
GOTO:eof 
endlocal 

このサブルーチンは、呼び出された主要部分に戻っていませんでした。

1

は、zipファイルのパーミッションを確認し、それはジェンキンスが下実行するユーザーから読み取りであることを確認してください。

1

毎回、作業領域を清掃する必要があります。コードリポジトリでない場合は、jenkinsワークスペースクリーナープラグインを使用する必要があります。

スクリプトをバッチファイルに入れます。これと同様にジェンキンス「Execute Windows Batch Command」から実行します。

call "C:\Scripts\mycustombatch.bat" myparameter1 "myparameter2" 

バッチスクリプトファイルは次のようになります。 %1が最初のパラメータです。あなたは7zipをツールのような無料の抽出プログラムを使用する必要があります

xcopy %1 %2 /y 

OR

..変更し、より多くのパラメータを追加する必要があります。インストールしたら、次のコマンドを直接使用してください。

"C:\Program Files\7-Zip\7z.exe" e "C:\myzipfile.7z" -o"C:\ExtractedFolder" *.* -r -y 

またはバッチファイルでパラメータ化し、jenkinsからbatファイルを呼び出します。

call "C:\Scripts\mycustombatch.bat" "%WORKSPACE%\myzipfile.7z" "C:\ExtractedFolder" 

mycustombatch.bat

cd "C:\Program Files\7-Zip" 
7z e %1 -o%2 *.* -r -y 

7z.exe使用例:

http://www.dotnetperls.com/7-zip-examples

関連する問題