curl不会被识别为从Teamcity命令行脚本运行的内部或外部命令

时间:2013-11-19 16:41:59

标签: curl teamcity

运行Teamcity命令行脚本时,

curl不会被识别为内部或外部命令。 Curl安装在本地,在命令提示符下工作正常。

构建日志结果:

[20:05:35]Step 2/2: Command Line
[20:05:35][Step 2/2] Starting: C:\BuildAgent\temp\agentTmp\custom_script7047202395618427524.cmd
[20:05:35][Step 2/2] in directory: C:\BuildAgent\work\376652cbd18bb804
[20:05:35][Step 2/2] 'curl' is not recognized as an internal or external command,
[20:05:35][Step 2/2] operable program or batch file.
[20:05:35][Step 2/2] Process exited with code 1
[20:05:35][Step 2/2] Step Command Line failed

卷曲命令

curl -v --request PUT %teamcity.serverUrl%/httpAuth/app/rest/builds/id:%teamcity.build.id%/pin 
-u    admin:admin

3 个答案:

答案 0 :(得分:4)

扩展其他答案,你需要告诉TeamCity curl在哪里。

但是,您可以通过将curl的路径附加到env.Path变量来通过TeamCity执行此操作,而这样做的好处是您不必更改每个构建代理上的PATH变量。 / p>

  1. 在您的构建配置中,在“构建参数”部分下添加env.Path
  2. 对于值,您需要指定curl的路径并保留现有值;类似的东西:

    c:\path\to\dirWithCurl;%env.Path%

  3. 如果您想证明它有效,请添加测试构建步骤;只需执行以下操作并查看结果:

    echo %env.Path%
    curl --help

  4. 我探讨了TeamCity最近如何处理附加值...请参阅this answer以获取太多信息和MySql示例。看看编辑#2,但你需要的基础是上面的。

答案 1 :(得分:0)

你需要:

a)像anovitskiy建议并将其添加到路径中。但是然后重新启动构建代理以使其获取新路径。

b)而不是将curlC:\Path\To\Location\of\curl.exe作为命令。

答案 2 :(得分:0)

有同样的问题。并发现了这一点。 由于Win 10 1803 Curl是系统的一部分,位于%windir%\System32 但是Win64上的TeamCity Agent在此文件夹中找不到任何可执行文件 感谢this answer,它显示为Windows问题(More detais here

因此,我修改了脚本以在本地和构建步骤中运行:

IF EXIST %windir%\Sysnative\curl.exe (
%windir%\Sysnative\curl.exe -X GET "http://example.com"
) ELSE (
curl -X GET "http://example.com"
)