2017-10-18 86 views
1

相关的TFS 2017 release management artifact files from version control如何在版本控制的神器发布管理链接的子文件夹

我问了一个新问题,因为我相信我有一个边缘情况下,答案不直接处理,我不想破坏该OP。具体而言,如何让单独的TFS团队项目中需要支持脚本的独立,非现场团队构建的脚本作为单独TFS团队项目的发布定义中的工件提供?独立团队项目由独立客户构建,我们不允许将内容追加到其源代码管理。此外,对脚本的更新必须自动传播到在TFS上使用它们的所有发行版定义。

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

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

  • 常见
  • 应用
    • 应用1
    • 应用2 ...
    • App43

这使得他们更容易管理他们的脚本,并将他们与工作项目本身相关联,而无需在所有其他团队项目中进行洗牌。开发团队无法访问ops项目。

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

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

构建定义不会让我们选择团队项目之外的工作空间路径,所以我也没有看到在构建步骤中提取脚本的方法。

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

+0

[版本控制中的TFS 2017发布管理工件文件可能重复](https://stackoverflow.com/questions/44163392/tfs-2017-release-management-artifact-files-from-version-control) –

回答

1

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

发布管理可让你将引用的Git回购和分支,如我原本希望在一个单独的项目做文件夹TFVC回购协议了。通过这种方式,我们配置了TFVC回购处理大型二进制文件(安装),许可文件等,这是我们的版本,放在一个团队项目的NuGet饲料从RM参考。为解决文件夹问题,我们在同一个TFS项目中为我们的操作团队项目创建了单独的Git仓库。就像这样:

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

  • Git仓库

    • CommonDeploymentScripts

    • 环境脚本

    • 应用1脚本

    • App2的脚本

这样TFS RM从任何其他项目可以被配置在这些回购中的任何一个或多个拉作为工件使用由代理商,只能放下那些放在其中的脚本。

此外,运营团队没有交叉参考应用程序特定的脚本,而在一堆独立的团队项目蹦跳着。注意:Daniel说他的应用程序特定的东西应该真正版本化并与应用程序项目本身一起存储。但是,有些环境可能还没有那么奢侈,所以这可以满足这种需求。

RM,您可以参考分支单一的Git回购协议以及所以这可能是矫枉过正。但是,我们不喜欢分行没有真正有过被合并成主任何企业回购协议的想法 - 感觉就像太多的闪失。

1

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

+0

感谢你为你的答复@DanielMann。将脚本作为单独的nuget包发布,似乎非常不愉快。对于给定包中的所有脚本每次更新都将导致需要建立一个新的包,并通过前所有RM定义将在所有43个团队项目更新到最新的通用脚本库包版本引用其上传到TFS。我可以看到它用于专门的脚本,但我没有为跨项目使用的常见脚本建立连接。构建不会允许来自集合中不同项目的工件。我误解了吗? – pwil301

+0

+1提供最佳实践 - 谢谢。但是,我添加了一个单独的答案,为问题提供了更直接的解决方案。 – pwil301

相关问题