【问题标题】:TeamCity 7.0.1 command line build step and ERRORLEVELTeamCity 7.0.1 命令行构建步骤和 ERRORLEVEL
【发布时间】:2013-01-23 05:09:29
【问题描述】:

我的构建配置中有一个构建步骤,即运行器类型“命令行”,运行自定义脚本。

脚本正在执行 Robocopy:

robocopy "%teamcity.build.workingDir%\Code" "\\target\d$\Web\Target Sites" /E /NP /LOG:robocopy.log

if ERRORLEVEL GEQ 4 (
"D:\blat.exe" "robocopy.log" -to me@me.com -f me@me.com -subject "Error during robocopy on TEAMCITY" -server mail.me.com
)

exit /B 0

Robocopy 命令运行良好,但我不断收到一封电子邮件,并且在构建日志中不断看到:

此时 GEQ 出乎意料。

ERRORLEVEL 检查由于某种原因无法正常工作?

我尝试了IF %ERRORLEVEL% GEQ,但这破坏了我的构建,TeamCity 希望我传递一个构建参数。

这只能作为“带参数的可执行文件”吗?

【问题讨论】:

    标签: teamcity teamcity-7.0


    【解决方案1】:

    我刚刚遇到这个问题,感谢@John 的回答。

    这是我想出的:

    robocopy [from] [to] /MIR
    
    REM http://ss64.com/nt/robocopy-exit.html
    IF %%ERRORLEVEL%% EQU 0 (
       ECHO No errors occurred, and no copying was done; The source and destination directory trees are completely synchronized.
      EXIT 0
    )
    IF %%ERRORLEVEL%% EQU 1 (
      ECHO One or more files were copied successfully, new files have arrived.
      EXIT 0
    )
     IF %%ERRORLEVEL%% EQU 2 (
      ECHO Some Extra files or directories were detected. No files were copied.
      EXIT 0
     ) 
    IF %%ERRORLEVEL%% GEQ 3 (
      ECHO Robocopy Exit Codes: http://ss64.com/nt/robocopy-exit.html  
      EXIT %%ERRORLEVEL%%
    )
    

    【讨论】:

      【解决方案2】:

      尼尔,你可以试试escaping the percent sign

      试试IF %%ERRORLEVEL%% GEQ ...

      【讨论】:

      • 干杯!这是非常偶然的——与我一起工作的一些人昨天才试图弄清楚如何让 robocopy 向 TeamCity 返回不同的退出代码。 :)
      • 大声笑 - 不可思议,我刚刚做了同样的事情。以 EXIT /B 0 结束。你们是这样做的吗?
      • 好吧,当时我们找不到任何指导Stackoverflow,所以我们放弃了。不过,我正在将此线程转发给他们。
      • 使用 TeamCity 8.0.5,我实际上必须在 TeamCity 命令行运行器界面中输入 %%%%,在创建的临时 .cmd 文件中变成 %% - 即使用四个 %s 转义每个命令中的百分比。
      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2016-06-13
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多