我在问一个新问题,因为我相信我有一个边缘情况,答案没有直接解决,我不想破坏该 OP。具体来说,我如何允许独立的异地团队在单独的 TFS 团队项目中构建所需的支持脚本,将其脚本作为单独 TFS 团队项目的发布定义中的工件提供?单独的团队项目由独立客户构建,我们不允许将内容附加到他们的源代码管理中。此外,对脚本的更新必须自动传播到在 TFS 上使用它们的所有发布定义。
我们在 TFS 中有大约 40 个团队项目,所有项目都按不同的时间表运行。一个单独的运营团队处理 TFS 中的所有构建和发布管理任务。
由于团队项目之间的不断变化,并且因为运维人员还希望使用 TFS 中的版本控制和工作项跟踪功能,我们为他们创建了一个单独的团队项目来存储脚本、安装程序和许可证文件。这些在其他项目的自动安装/执行的 RM 任务中被引用。还有一个单独的版本控制文件夹树用于跟踪项目特定的脚本 - 像这样:
这使他们能够更轻松地管理自己的脚本并将它们与工作项本身相关联,而无需在所有其他团队项目中进行混洗。开发团队无权访问 ops 项目。
然而,当从他们的项目链接 RM 中的版本控制工件时,它只会绑定到根,并且似乎将整个版本控制结构复制到代理,即使大部分内容与正在部署的应用程序无关.
有没有办法将版本控制中的项目中的特定文件夹作为工件添加到单独项目中的发布定义中?我们的 QA 版本开始了生产过程,它从 ops 项目和正在发布的项目中提取工件。所有后续版本都重用在 QA 构建中成功的工件,而不是返回到服务器以获取新版本的工件。
构建定义不允许我们在团队项目之外选择工作区路径,所以我也没有看到在构建步骤中引入他们的脚本的方法。
有没有办法做到这一点?其他组织如何处理这个问题?
我很欣赏丹尼尔的回答,我相信他所说的是最佳实践。但是,我相信我通过使用其他存储库找到了更直接的技术答案。
发布管理允许您独立引用 Git 存储库和分支,就像我最初希望对已经在单独项目中的 TFVC 存储库下的文件夹做的那样。通过这种方式,我们配置了 TFVC 存储库来处理大型二进制文件(安装程序)、许可证文件等,我们将这些文件版本化并放入团队项目 Nuget 提要中以供 RM 参考。为了解决文件夹问题,我们在同一个 TFS 项目中为我们的运营团队项目创建了单独的 Git 存储库。像这样:
二进制文件(基于 TFVC 的存储库)
Git 存储库
通用部署脚本
环境脚本
App1 脚本
App2 脚本
等等。
通过这种方式,可以将来自任何其他项目的 TFS RM 配置为将这些存储库中的任何一个或多个作为工件提取以供代理使用,从而仅关闭放置在其中的那些脚本。
此外,运维团队不必在一堆独立的团队项目中跳来跳去时交叉引用特定于应用程序的脚本。注意:Daniel 说的对,应用程序特定的东西应该真正被版本化并与应用程序项目本身一起存储。但是,某些环境可能还没有那么奢侈,因此这可以满足这种需求。
RM 还允许您在单个 Git 存储库下引用分支,因此这可能有点矫枉过正。然而,我们不喜欢在一个 repo 下分支的想法,并没有真正将任何业务合并到 master 中 - 感觉有太多的错误空间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句