在使用我们的 TeamCity 持续集成服务器时,我们发现了一些我们不确定最佳处理方式的问题。即如何在 CI 服务器上引用我们的应用程序需要的外部应用程序。
这最初是在对 Crystal Reports 的依赖中发现的,因此我们在服务器上安装了 Crystal Reports,以解决当前的问题。然而,随着我们将更多的应用程序转移到 CI 服务器上,我们发现了更多的依赖关系。
这里最好的策略是什么?是否继续在服务器上安装所需的应用程序?
谢谢
在使用我们的 TeamCity 持续集成服务器时,我们发现了一些我们不确定最佳处理方式的问题。即如何在 CI 服务器上引用我们的应用程序需要的外部应用程序。
这最初是在对 Crystal Reports 的依赖中发现的,因此我们在服务器上安装了 Crystal Reports,以解决当前的问题。然而,随着我们将更多的应用程序转移到 CI 服务器上,我们发现了更多的依赖关系。
这里最好的策略是什么?是否继续在服务器上安装所需的应用程序?
谢谢
尽可能使外部依赖项成为构建系统的一部分。例如,将安装程序签入您的版本控制系统,并有一个步骤将其签出并在静默模式下运行(许多安装程序支持有时使用命令行 /s 的无用户操作模式)。
这样,如果您需要为分支或仅为新硬件设置另一台构建机器,一切都是可重复的。
如果您的构建需要实际的应用程序来完成构建,那么您可能应该继续在构建服务器上安装应用程序。
如果您只需要引用应用程序中的 dll 或程序集,那么我们在我公司所做的就是创建特定应用程序所需引用的可安装“SDK”,并将它们安装在我们的开发和构建机器上我们的解决方案引用的库目录。
在构建机器上,我们的预构建步骤会安装正确版本的依赖项,然后在完成后清理它们。
最近,我们开始将虚拟机用于我们的构建过程激活的构建机器。这些 VM 将 SDK 作为预构建安装在其上,然后在构建后恢复到它们的快照状态。我们有一些几乎不可能卸载的依赖项,因此每次都是一个干净的起点。
如果你使用 Maven 构建,你可以在 pom.xml 文件中定义你的依赖。如有必要,它们将被自动下载。
我不确定我是否正确遵循...
我假设您的应用程序在构建时依赖于这个外部应用程序?在那种情况下,它应该在机器上做 CI ......