如何在 TFS 上设置 CI/CD——导入依赖项?

How to set up CI/CD on TFS--importing dependencies?

我正在为我的项目设置 CI,但我在安装某些 DLL 时遇到了问题。设置如下:repo 位于 TFSGIT 2015 服务器上。我在 VM 上设置了构建服务器(代理)。签入代码后,构建服务器会构建、运行测试等。构建失败是因为无法找到某些内部 packages/DLLs(位于不同的 TFS 2010 服务器上)。

我的问题是:解决此问题的最佳方法是什么?我想一个粗略的方法是简单地将 DLL 添加到 repo,但我想知道是否有一个预构建步骤,我可以从 TFS 2010 服务器导入 DLL。一个简单的 power shell 脚本可以做到吗?

我不熟悉 Microsoft 堆栈,所以任何 guidance/suggestions 都将不胜感激。谢谢。

有几种方法可以解决这个问题,您可以:

  1. 创建一个包含您正在使用的功能的 NUGET 包并在内部托管它。这里的好处是,您可以从 CICD 的角度以适当的构建方式做事并维护适当的版本控制,以便您可以在将来确保可以重建版本的精确实例。当您执行 NUGET RESTORE 步骤时,您可以简单地添加参数:-source

  2. (假设您的远程 TFS 未存储这些文件的版本化构建)使用构建步骤将这些文件从远程 TFS 服务器复制到版本控制系统中,将版本详细信息应用为元-数据。同样,这里的关注点是能够完全确保您可以在给定时间有效地回滚。

  3. 使用 Powershell 从您的 TFS 服务器获取特定构建版本工件,这里是获取最新构建的示例脚本。如果您的 DLL 项目使用构建,您可以使用它 - 这应该很容易修改以获取特定构建。我个人会通过一些构建变量来做到这一点。这里最值得注意的是 "DropLocation",这将是 Artifact 的文件掉落。 Mike Poulson: Get last known good build via Powershell

  4. 在构建脚本中直接使用Powershell脚本从其他TFS复制数据。至少,将其保存在您的工件中至少足以回滚,但我想确保我也可以向后构建,尤其是对于较大的项目。以防万一您的神器存储发生剧烈变化。这个答案可以帮助你:Copy files from bfs version control to directory 还有 powershell 工具可以帮助解决这个问题。

可能有无数种方法可以解决这个问题,但我的建议是退后一步,以正确的方式构建它;在这种情况下,您要确保如果发生远程构建并创建依赖工件,您将适当地管理它们并捕获与特定构建相关的它们。这就是为什么我仍然建议使用您自己的 NUGET 提要。