TFS 生成和本地生成
本文关键字:TFS | 更新日期: 2023-09-27 18:32:38
我的任务是更新公司过时的构建过程。这一切都是在批处理和perl脚本中完成的。当前的构建过程是:
- 通过 Web 界面计划生成。 生成
- 服务器将生成过程从队列中移除。
- 生成服务器从 TFS 源代码管理中签出所有文件。 生成
- 服务器运行几个代码注入脚本,这些脚本在生成之前修改源代码。
- 生成服务器更新版本并对代码进行签名。
- 生成服务器使用 Visual Studio 来编译项目。
- 完成后,生成服务器将压缩输出并将其放在网络共享位置。
真正困难的部分是代码注入脚本。它们是 3 个 perl 脚本,可以修改大量代码。它们在设计方式上也非常依赖机器。(所以我不能在没有大量修改的情况下将它们放在构建过程中(
我的最终目标是能够在本地开发计算机上运行生成过程,并在 TFS 服务器上运行 CI。
在我的搜索中,似乎无法在本地计算机上模拟 TFS 版本。那么我的唯一选择是在我的 cs.proj 文件中使用构建前/构建后的命令行脚本吗?或者是否有更好的方法在本地计算机上执行复杂生成并在 TFS 上运行相同的生成?
我已经在本地计算机上看到了使用 TFS 构建定义,但这对我来说似乎有点笨拙。我想如果没有更好的解决方案,这不会是一个可怕的解决方案。
我过去也尝试过做类似的事情。 遗憾的是,由于 TFS 生成工作流需要的所有内容,因此没有很好的方法可以做到这一点。 我发现基本上有两种方法可以做到这一点。
- 创建将在服务器和本地上运行的 MSBuild 脚本
- 为服务器的本地和自定义活动创建 MSBuild 脚本。
如果您有意或要求能够在开发人员机器和构建服务器上完全重现构建,那么我会选择 #1。 否则我会选择#2。 第二个选项很好,因为这样您就可以在 TFS 工作流中播放以执行主要生成,这为您提供了许多所需的对象,并为您提供了一个配置设置的好地方,而无需签出/签入文件来更改生成的方式。
对于这两种方法,您很可能都必须修改Perl脚本以接收参数,以考虑必须在系统之间进行的任何自定义。 然后,你可以让用户在本地生成的 MSBuild 脚本中传入或默认它们,并将它们设置为 TFS 生成工作流中的参数。 因此,如果需要,可以轻松修改它们。 但是,无论使用哪种方法,唯一好的方法是标准化开发人员计算机和构建服务器上的设置方式,这样您就不必提供太多自定义。
如果确实选择了第一个选项,则可以使用 TFS 生成的旧生成配置,该配置支持对所有内容使用 MSBuild 脚本,然后可以在开发人员和生成服务器之间共享脚本,但如果有人意外更改了此脚本,则它确实存在中断生成的风险。