1

我正在尝试学习如何使用 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 包还原到错误消息中指定位置的单元测试之前,我向管道添加了一个作业。这是我的还原块命令的配置 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”命令添加到项目文件中,但我不知道该怎么做(或者是否可以做到?)。

提前致谢!

4

1 回答 1

0

我弄清楚我做错了什么。我在不同的作业中设置了构建和恢复命令,我需要让它们在同一个作业中完成任务。我这样做了,它奏效了。

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

如果有人知道原因,我很乐意知道。

于 2017-09-20T19:02:45.373 回答