VSTS 发布管理:按工件源上的分支过滤

Posted

技术标签:

【中文标题】VSTS 发布管理:按工件源上的分支过滤【英文标题】:VSTS Release Management: filter by branch on artifact source 【发布时间】:2016-04-13 11:09:29 【问题描述】:

我正在使用 VSTS 构建来运行 CI 构建。这个构建定义对于我所有的 git 分支(master、develop、features 等)都是相同的

我现在正在尝试使用 VSTS 发布管理实现部署管道。我计划有两个不同的发布定义。一个用于功能分支,一个用于更重要的分支,例如开发和主控。功能分支的发布定义会更轻量级。

我认为这是非常基本和常见的。事实上,这几乎就是 Microsoft 的 typical use case for Release Management 中记录的内容。

对于这两个管道,我想将它们配置为使用“持续部署”触发器自动启动。当我选择这个触发器时,我必须选择一个工件源。

不幸的是,工件源获取来自给定构建定义(我的 CI 构建)的所有工件(无论分支如何)。由于我对所有分支都使用相同的 CI 构建定义,因此我似乎无法在“持续部署”中配置我的两个发布管道,并且仍然使用相同的构建定义作为工件源。

任何人都知道如何为多个发布定义共享相同的构建定义,但只为特定分支启动发布?当我们定义工件源时,有人知道按分支过滤的方法吗?

【问题讨论】:

我处于类似的困境中,除了它是由创建拉取请求触发的构建。它正在触发发布,它不应该。 PR 构建在一个单独的分支中完成(例如 refs/pull/16/merge)。我也想按分支过滤发布触发器,所以它只由正在构建的 master 触发。 你的场景比我描述的更成问题!我建议您将其提交到 Visual Studio UserVoice 或投票并评论我的可用条目here。 【参考方案1】:

配置分支特定的发布部署

    转到 VSTS 中的发布管理 转到发布的定义 转到选项卡触发器 添加持续部署触发器 在这里你可以选择一个特定的分支(用于分支)

功能的可用性

VSTS 中提供此功能 在 TFS 本地版本中,它应该在 Server 2017.1 版本中可用,但在 2018.1 版本中仍然不可用

【讨论】:

请注意,分支过滤器设置仅在源代码依赖于 VSTS/TFS 存储库时可用。使用 github 等外部资源时,分支过滤器不显示/不可用。 我使用的是 2017.2,但这个功能似乎仍然不存在。除非它是 Git-only 还没有:(【参考方案2】:

目前VSTS Release Management中无法进行基于分支的条件部署。

另一种方法是为不同的分支创建单独的 BD,然后将它们配置为 RD 的工件源。

这也将使用户从其名称本身就可以清楚地了解工件。

【讨论】:

真可惜。由于在 Git 中经常创建和删除分支,因此我们只有一个构建定义。这避免了设置构建定义的开发团队和开发运营团队之间的来回。通过为所有分支设置一个 BD,在创建/删除分支时完全不涉及 devops。 是的,但人们大多从固定分支发布,如 master 或开发人员合并更改的发布。所以主要分支不会被删除。所以对不同的分支有不同的构建定义是有意义的。您应该为此提出用户声音。可能还有其他人想要同样的功能。如果您可以分享您的方案,我可以想到一个解决方法。 在我看来,仅仅为此创建多个 BD 是多余且浪费的(时间方面)。就我而言(请参阅我上面的评论),这无济于事。配置分支策略为 PR 进行构建,然后您可以在主分支更新后要求另一个构建,但您不能指定不同的 BD。我想要一个从主构建触发的版本,而不是 PR 构建。

以上是关于VSTS 发布管理:按工件源上的分支过滤的主要内容,如果未能解决你的问题,请参考以下文章

VSTS 按分支查看构建状态

VSTS REST API - GIT - 分支是不是存在?

VSTS Drop Single Artifact - 发布到 Azure 多个网站

VSTS 获取单个工件 REST 客户端 API

如何从VSTS CI管道为解决方案中的每个项目单独发布工件?

如何使用针对不同分支的多个工件在 DevOps 的单个阶段上运行?