【问题标题】:VSTS build/release from multiple sources to Azure virtual directoriesVSTS 从多个源构建/发布到 Azure 虚拟目录
【发布时间】:2017-09-27 15:52:28
【问题描述】:

我的团队有一个 Azure App Services Web 应用,其中包含三个主要组件:

  1. 我们的主要 Node.js 服务器和 API,位于根目录
  2. 辅助 API,位于虚拟目录中
  3. 我们的前端 Web 应用(也由 Node.js 服务器提供),位于另一个虚拟目录中

这三个组件中的每一个都在 VSTS 中自己的 git 存储库中维护。此外,Web App 具有三个插槽:devppeprod

我们正在尝试将我们的构建流程从 Azure 转移到 VSTS。我们希望能够做到以下几点:

  • 当三个存储库中的任何一个中有对 master 的新提交时,创建一个开发版本并将其直接部署到 dev 插槽中的相应虚拟目录。
  • 当一个组件准备好发布时 - 无论是在特殊的 RELEASE 分支中进行新提交还是手动触发发布过程 - 创建一个生产版本,将其部署到 ppe 并在用户批准后交换ppeprod 插槽。

这里的复杂之处在于,当任何组件部署到ppe 时,我们还需要将所有三个组件的最新发布版本部署到ppe,因为 Azure 没有能够独立交换虚拟目录。

我目前拥有的如下:

  • 三个存储库中每一个的构建过程,在提交到masterRELEASE 时触发。它会创建开发版本和生产版本并发布它们。
  • 在三个存储库中的任何一个 master 的任何新版本上都会触发开发发布过程。它从所有三个存储库中获取来自master 的最新开发版本,并将它们部署到dev 中相应的虚拟目录。
  • 在三个存储库中的任何一个中的 RELEASE 的任何新版本上触发的生产发布过程。它从所有三个存储库中获取来自RELEASE 的最新生产版本,将它们部署到ppe 中的适当虚拟目录,并在用户批准后交换ppeprod

这可行,但它看起来很笨重,有很多浪费的工作,而且感觉我们并没有完全利用 VSTS 构建/发布管道的强大功能。有没有更好或更容易接受的方法?

【问题讨论】:

    标签: azure azure-devops azure-web-app-service azure-pipelines azure-pipelines-release-pipeline


    【解决方案1】:

    在发布的environment triggers 中有基于artifacts 功能的过滤器,因此您可以根据构建标签来触发相应的环境。

    关于构建,您可以通过 PowerShell 任务 (##vso[build.addbuildtag]build tag) 调用 logging commands 为当前分支设置构建标签

    关于 ppe 场景,我建议您可以为 ppe 相关分支创建一个新的 CI 构建定义并构建所有组件(通过命令行任务或其他任务(例如 PowerShell)调用 git clone 命令获取其他源代码),然后发布它们的结果,然后将它们部署到相应的插槽和发布中的虚拟目录。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2018-05-08
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多