代码之家  ›  专栏  ›  技术社区  ›  user856232

Jenkins Windows执行命令行bitvise sexec失败,末尾退出1000

  •  0
  • user856232  · 技术社区  · 7 年前

    我正在Windows Server 2016上安装一个新的Jenkins系统。

    我的构建步骤之一是执行一个批处理文件,我一直在使用finalbuilder。

    此批处理文件在重写现有网站之前创建一个7Z备份。

    这是我在詹金斯的命令(一些参数在这篇文章中显然是为了隐私而改变的):

    sexec myuser@myserver.cloudapp.net -pw=mypassword -cmd="bvBackup C:\inetpub\SiteName SiteName"
    

    以下是bvbackup.bat内容:

    cd %1
    for /f "tokens=2-8 delims=.:/ " %%a in ("%date% %time%") do set DateNtime=%%c-%%a-%%b_%%d-%%e-%%f
    7z a -r ..\%2Backup\%2_%DateNtime% *.*
    

    基本上,它只是将文件压缩到一个以当前日期和时间命名的存档中。

    下面是Jenkins控制台输出的最后几行:

    12:14:42 Compressing  site\bin\UserAuthorization.dll
    12:14:42 Compressing  site\bin\WebGrease.dll
    12:14:42 Compressing  site\bin\zlib1.dll
    12:14:42 
    12:14:42 Everything is Ok
    12:14:42 
    12:14:42 D:\Jenkins\workspace\MyProjectName - Staging>exit 1000 
    12:14:42 Build step 'Execute Windows batch command' marked build as failure
    12:14:42 Finished: FAILURE
    

    我想知道出口100是从哪里来的。这不是我批处理文件的一部分。7zip说一切都好。

    D:上的路径是Jenkins工作文件夹路径。其他一切都来自我们的登台服务器,在该服务器上,压缩是通过sexecsh shell进行的。

    当作品的输出看起来不错时,为什么会失败呢?1000号出口从哪里来?

    更新: 结果发现出口1000来自SEXEC并且是正常的。我在我的批处理文件中尝试了一些要执行的方法来处理它,但是Jenkins总是假定它是一个糟糕的状态,并且构建失败。

    有人能告诉我在使用Windows批处理执行时如何告诉Jenkins退出1000是成功的吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   user856232    7 年前

    终于想出了一个办法使这项工作。

    我把我在詹金斯直接执行的sexec改为从詹金斯调用批处理文件。

    然后在批处理文件中,我得到了代码:

    sexec -cmd=%1
    if errorlevel 1000 goto success
    goto end
    :success
    EXIT 0
    :end
    

    当sexec返回1000时,将错误级别设置为0