【问题标题】:How to link subfolder in version control as artifact in release management如何将版本控制中的子文件夹链接为发布管理中的工件
【发布时间】:2018-03-29 19:37:52
【问题描述】:

TFS 2017 release management artifact files from version control相关

我问了一个新问题,因为我相信我有一个边缘情况,答案没有直接解决,我不想破坏那个 OP。具体来说,我如何允许独立的异地团队在单独的 TFS 团队项目中构建所需的支持脚本,在单独的 TFS 团队项目的发布定义中提供他们的脚本作为工件?单独的团队项目由独立客户构建,我们不允许将内容附加到他们的源代码控制中。此外,脚本的更新必须自动传播到 TFS 上使用它们的所有发布定义。

我们在 TFS 中有大约 40 个团队项目,它们都按不同的时间表运行。一个单独的运营团队处理 TFS 中的所有构建和发布管理任务。

由于团队项目之间不断跳动,并且操作人员还希望使用 TFS 中的版本控制和工作项跟踪功能,我们为他们创建了一个单独的团队项目来存储脚本、安装程序和许可证文件。这些在其他项目的 RM 任务中引用以进行自动安装/执行。还有一个单独的版本控制文件夹树用于跟踪项目特定的脚本 - 像这样:

  • 常见
  • 应用
    • App1
    • 应用程序2 ...
    • App43

这使他们能够更轻松地管理脚本并将它们与工作项本身关联起来,而无需在所有其他团队项目中进行洗牌。开发团队无权访问 ops 项目。

但是,当从他们的项目链接 RM 中的版本控制工件时,它只会绑定到根目录,并且似乎会将整个版本控制结构复制到代理,即使其中大部分内容与正在部署的应用程序。

有没有办法将版本控制中项目中的特定文件夹(不是全部)作为工件添加到单独项目中的发布定义中?我们让我们的 QA 版本开始生产流程,它从 ops 项目和正在发布的项目中提取工件。所有后续版本都会重用在 QA 构建中成功的工件,而不是返回服务器获取新版本的工件。

构建定义不允许我们选择团队项目之外的工作区路径,所以我也看不到在构建步骤中拉入他们的脚本的方法。

有没有办法做到这一点?其他组织如何处理这个问题?

【问题讨论】:

标签: tfs release-management alm


【解决方案1】:

没有。

我在另一个答案中提供的相同答案在这里适用:不要。将它们发布为 NuGet 包或单独的构建工件;一个发布定义可以有多个链接到它的工件。

【讨论】:

  • 感谢您的回复@DanielMann。将脚本作为单独的 nuget 包发布似乎非常不愉快。给定包中任何脚本的每次更新都将导致需要构建一个新包并将其上传到 TFS,然后再遍历所有 43 个团队项目中的所有 RM 定义,以将包版本引用更新到最新的通用脚本库。我可以看到它用于专门的脚本,但我没有为跨项目使用的常用脚本建立连接。构建不允许来自集合中不同项目的工件。我是不是误会了?
  • +1 提供最佳实践 - 谢谢。但是,我添加了一个单独的答案,为问题提供了更直接的解决方案。
【解决方案2】:

我很欣赏丹尼尔的回答,我相信他所说的是最佳实践。但是,我相信通过使用其他存储库,我找到了对我的问题更直接的技术答案。

发布管理允许您独立引用 Git 存储库和分支,就像我最初希望在单独的项目中处理 TFVC 存储库下的文件夹一样。通过这种方式,我们将 TFVC 存储库配置为处理大型二进制文件(安装程序)、许可证文件等,我们对其进行版本化并放入 Team Project Nuget 提要以供 RM 参考。为了解决文件夹问题,我们在同一个 TFS 项目中为我们的运营团队项目创建了单独的 Git 存储库。像这样:

  • 二进制文件(基于 TFVC 的存储库)

  • Git 存储库

    • CommonDeploymentScripts

    • 环境脚本

    • App1 脚本

    • App2 脚本

这样,来自任何其他项目的 TFS RM 可以配置为拉入这些存储库中的任何一个或多个作为供代理使用的工件,只关闭那些放置在其中的脚本。

此外,运维团队在处理一堆独立的团队项目时不必交叉引用特定于应用程序的脚本。注意:Daniel 说的对,他说应用程序特定的东西真的应该与应用程序项目本身一起进行版本控制和存储。但是,有些环境可能还没有那么奢侈,所以这可以满足这种需求。

RM 还允许您在单个 Git 存储库下引用分支,因此这可能是矫枉过正。但是,我们不喜欢 repo 下的分支没有真正将任何业务合并到 master 中的想法 - 感觉错误的空间太大了。

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2018-09-06
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多