如何将版本控制中的子文件夹链接为发布管理中的工件

时间:2017-10-18 01:35:04

标签: tfs release-management alm tfs2017

TFS 2017 release management artifact files from version control

相关

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

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

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

  • 通用
  • 应用
    • App1的
    • App2的 ...
    • App43

这使得他们可以更轻松地管理他们的脚本并将其与工作项本身相关联,而无需在所有其他团队项目中进行混乱。开发团队无法访问ops项目。

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

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

构建定义不允许我们在团队项目之外选择工作区路径,因此我没有看到在构建步骤中引入脚本的方法。

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

2 个答案:

答案 0 :(得分:1)

没有

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

答案 1 :(得分:1)

我很欣赏丹尼尔的回答,我相信他所说的是最好的做法。但是,我相信通过使用其他存储库,我找到了一个更直接的技术答案。

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

  • 二进制文件(基于TFVC的回购)

  • Git存储库

    • CommonDeploymentScripts

    • 环境脚本

    • App1脚本

    • App2脚本

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

此外,ops团队不必交叉引用特定于应用程序的脚本,同时在一堆独立的团队项目中蹦蹦跳跳。注意:丹尼尔是正确的,他说应用程序特定的东西应该真的版本化并与应用程序项目本身一起存储。但是,有些环境可能还没有那么奢侈,所以这可以满足这种需求。

RM允许您在单个Git仓库下引用分支,因此这可能是过度的。然而,我们并不喜欢回购下的分支机构的想法,并没有真正将任何业务合并到主设备中 - 感觉有太多的错误空间。