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>
我有一个项目,我的代理确实安装了 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>