GoCD Nuget 问题

GoCD Nuget issue

我有一个项目,我的代理确实安装了 nuget - 不要起诉我在做什么 wwong

12:01:14.195 [go] Start to build DemoApp/20/second/1/secondJob on vivians-mbp-2.delta.rl.delta.com [/Users/vivianaranha/Library/Application Support/Go Agent]
12:01:14.195 [go] Current job status: passed.

12:01:14.195 [go] Start to execute task: <exec command="nuget restore packages.config -PackagesDirectory ..\..\packages" workingdir="EMApp\EMApp\EMApp.iOS" />.
12:01:14.199 Error happened while attempting to execute 'nuget restore packages.config -PackagesDirectory ..\..\packages'. 
Please make sure [nuget restore packages.config -PackagesDirectory ..\..\packages] can be executed on this agent.

12:01:14.199 [Debug Information] Environment variable PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/usr/local/bin
12:01:14.206 [go] Current job status: failed.

您是否尝试过将构建详细信息设置得更详细?另外,从我这样做开始,我就使用保存在源代码管理中的nuget.exe构建,而不是构建代理

您在 GoCD 中犯了一个常见错误 期望 exec 任务是 shell 执行 。 通过该构建日志,我可以看出您在 xml 中的配置是

<exec command="nuget restore packages.config -PackagesDirectory ..\..\packages" workingdir="EMApp\EMApp\EMApp.iOS">
</exec>

这意味着 GoCD 将尝试执行路径为 nuget restore packages.config -PackagesDirectory ..\..\packages 的文件,该文件不存在。

GoCD exec 任务要求您显式分离进程可执行文件和所有参数。所以上面的 nuget 示例必须像这样配置:

<exec command="nuget" workingdir="EMApp\EMApp\EMApp.iOS">
   <arg>restore</arg>
   <arg>packages.config</arg>
   <arg>-PackagesDirectory</arg>
   <arg>..\..\packages</arg>
</exec>

关于任务设置的更多提示:

  • 如果 nuget.exe 不在 PATH 中,您需要配置完整的文件路径,例如command="C:\nuget\nuget.exe"
  • post exec tasks
  • 上有一篇不错的博客
  • 如果您不喜欢像这样分别设置进程和参数,请尝试 script executor plugin,这将启动一个 shell。

编辑 1

在 mac 上,您需要 运行 使用单声道进行 nuget。所以进程可执行文件是 mono:

<exec command="mono" workingdir="EMApp\EMApp\EMApp.iOS">
   <arg>/path/to/nuget</arg>
   <arg>restore</arg>
   <arg>packages.config</arg>
   <arg>-PackagesDirectory</arg>
   <arg>..\..\packages</arg>
</exec>