我正在Jenkins中测试一个简单的构建过程; “构建”部分具有“执行Windows批处理”命令
echo %ERRORLEVEL%
cscript C:\Users\user\Documents\test.vbs
echo %ERRORLEVEL%
除了设置 ERRORLEVEL
环境变量之外,我的test.vbs什么都不做;我也尝试使用 wscript.quit
查看是否对 ERRORLEVEL
有影响
dim wShell
dim wSysEnv
set wShell = Wscript.CreateObject("WScript.Shell")
set wSysEnv = wShell.Environment("SYSTEM")
WScript.Echo "ERRORLEVEL=" & wSysEnv( "ERRORLEVEL" )
wSysEnv( "ERRORLEVEL" ) = 0
WScript.Echo "ERRORLEVEL=" & wSysEnv( "ERRORLEVEL" )
wSysEnv( "ERRORLEVEL" ) = 2
WScript.Echo "ERRORLEVEL=" & wSysEnv( "ERRORLEVEL" )
WScript.Quit 3
没有后期构建操作控制台输出如下:
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\jobs\TADS Host-Agent client\workspace
[workspace] $ cmd /c call C:\Users\user\AppData\Local\Temp\hudson4571524647235360597.bat
C:\Program Files (x86)\Jenkins\jobs\TADS Host-Agent client\workspace>echo 1
1
C:\Program Files (x86)\Jenkins\jobs\TADS Host-Agent client\workspace>cscript C:\Users\user\Documents\test.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
ERRORLEVEL=0
ERRORLEVEL=0
ERRORLEVEL=2
C:\Program Files (x86)\Jenkins\jobs\TADS Host-Agent client\workspace>echo 1
1
C:\Program Files (x86)\Jenkins\jobs\TADS Host-Agent client\workspace>exit 1
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
如上面的输出所示,在我启动脚本之前 ERRORLEVEL
是1.脚本成功地将 ERRORLEVEL
设置为2并以代码3退出 . 但是当我检查脚本末尾的 ERRORLEVEL
时,它返回到1因为它开始了 .
我发现一些页面表示环境变量只是为当前进程和任何子进程设置的;那就是会话环境变量 .
在哪种情况下,如何设置Jenkins将测试报告为成功还是失败?它似乎不会在运行时检查变量,只是在脚本执行开始时 . 这没有用,因为脚本可能会更改变量的值 .
1 回答
%ERRORLEVEL%
是一个自动变量,您不应该直接篡改它,甚至更多,因为对SYSTEM
环境的写访问需要管理员权限 .%ERRORLEVEL%
应该由传递给Quit
方法的整数值自动填充 . 带有WScript.Quit 3
行的VBScript,由批处理脚本调用,如下所示:应该产生以下输出: