如何在构建解决方案时让GoCD恢复NuGet包

时间:2017-09-19 17:56:18

标签: github msbuild nuget command-line-interface go-cd

我正在尝试学习如何使用Go CD实现对公司工作流程的持续集成。我正在使用GitHub进行源代码控制,并将我的管道设置为监视存储库的更改,并尝试在发生更改时重建。一切正常。现在我正在尝试将单元测试添加到管道中,并且无法构建单元测试项目。

这是我的构建命令的配置xml:

<exec command="%Windir%\Microsoft.NET\Framework64\v4.0.30319\MsBuild.exe" workingdir="UnitTest">
    <arg>/T:rebuild</arg>
    <arg>/P:Configuration=Release</arg>
    <arg>/m</arg>
    <runif status="passed" />
</exec>

这是我得到的错误的相关部分:

  

缺少的文件是.. \ packages \ MSTest.TestAdapter.1.1.18 \ build \ net45 \ MSTest.TestAdapter.props

单元测试项目使用一些NuGet包,因此需要正确构建这些文件,但它们不在GoCD的工作目录中。在尝试构建将NuGet包恢复到错误消息中指定位置的单元测试之前,我在管道中添加了一个作业。这是我的restore nugget命令的config xml:

<exec command="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\ReadyRoll\Octopack\build\NuGet.exe" workingdir="UnitTest">
    <arg>restore</arg>
    <arg>packages.config</arg>
    <arg>-PackagesDirectory</arg>
    <arg>..\packages</arg>
    <runif status="passed" />
</exec>

当我重新运行管道并监视工作目录时,我看到在运行“恢复”步骤时会创建NuGet文件,但是构建单元测试项目会删除文件,但仍然会收到错误。

我认为这是因为我在MSBuild命令中使用/ T:rebuild,但是当我将其更改为/ T:build时,它仍然删除了文件。

任何人都可以给我一个关于如何使用NuGet包为我的管道添加作业的提示吗?我想过将“NuGet.exe restore”命令添加到项目文件中,但我无法弄清楚如何做到(或者是否可以完成?)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我弄清楚我做错了什么。我在单独的作业中设置构建和恢复命令,我需要在同一个作业中将它们作为两个任务。我做到了,而且很有效。

我认为这与GoCD如何检查每份工作的材料有关?但由于我对此很陌生(并且原因可能不正确),我不会推测为什么这种改变导致它起作用。

如果有人知道原因,我很高兴知道。