配置Jenkins CI作业和使用Windows批处理命令的FreeFileSync批处理

7

我刚刚搭建了 Jenkins CI 作为我的构建服务器,但是我在正确配置 FreeFileSync 批处理文件和调用该批处理文件的命令以便在构建后部署应用程序时遇到了问题。

call Path\deploy.ffs_batch

构建控制台将在deploy.ffs_batch执行成功时显示“成功”消息。但是,如果deploy.ffs_batch设置错误(例如目标路径错误),则构建永远不会停止,Hudson上的控制台日志旋转器将继续旋转而不停止或提供任何信息。
我尝试的方法是,在Windows批处理命令中添加以下命令:
if %errorlevel% neq 0 exit %errorlevel%

但是构建过程仍然不顺利(旋转等待图标不停地转动)。

然而,当我检查FreeFileSync批处理文件的日志文件夹时,看到了以下内容:

[03:52:46 PM] 信息:开始比较
[03:52:46 PM] 错误:找不到以下文件夹: D:\Deploy\1\Dev 您可以忽略此错误,将每个文件夹视为为空。在同步期间,这些文件夹将自动创建。
[03:52:46 PM] 错误:同步已停止

我理解这个错误并且可以修复它。但当这种情况发生时,我真的不想总是在日志文件夹里寻找答案。因此我的问题是如何在Hudson控制台日志中输出FreeFileSync错误并且使用Windows批处理命令中止构建?

1个回答

2
我发现一个重要的步骤被遗漏了,当出现错误时我需要停止同步来防止Hudson作业无限运行。

FreeFileSync批处理作业

在设置停止后,我将我的批处理命令更新为:

cd "Path\FreeFileSync\" 
FreeFileSync.exe "Path\deploy.ffs_batch"
echo.
echo.
echo ===============================================================================
echo ##### Results :
echo ===============================================================================
echo.
echo.
@echo off
for /f "delims=" %%x in ('dir "Path\logs\" /od /b') do set recent=%%x
echo.
echo ===============================================================================
if %ERRORLEVEL% == 0 goto SYNCSUCCESS
if %ERRORLEVEL% == 1 goto SYNCWARNINGS
if %ERRORLEVEL% == 2 goto SYNCERRORS
if %ERRORLEVEL% == 3 goto SYNCABORTED
goto SYNCFAIL
:SYNCFAIL
echo ##### FreeFileSync failed.
type "path\logs\%recent%"
exit 2
:SYNCSUCCESS
echo ##### FreeFileSync completed successfully!
exit 0
:SYNCWARNINGS
echo ##### FreeFileSync completed, but with warnings.
type "path\logs\%recent%"
exit 1
:SYNCERRORS
echo ##### FreeFileSync completed, but with warnings.
type "path\logs\%recent%"
exit 2
:SYNCABORTED
echo ##### FreeFileSync aborted.
type "path\logs\%recent%"
exit 3

请注意:勾选“最小化运行”复选框也是必要的,以避免作业持续运行。当出现错误时,该作业会运行并停止。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接