VSTS从多个源构建/发布到Azure虚拟目录

时间:2017-09-27 15:52:29

标签: azure azure-devops azure-web-sites azure-pipelines azure-pipelines-release-pipeline

我的团队有一个Azure应用服务Web应用程序,其中包含三个主要组件:

  1. 我们的主要Node.js服务器和API,位于根
  2. 辅助API,位于虚拟目录中
  3. 我们的前端网络应用程序(也来自Node.js服务器),位于另一个虚拟目录中
  4. 这三个组件中的每一个都在VSTS中的自己的git repo中维护。此外,Web App还有三个插槽:devppeprod

    我们正在尝试将构建流程从Azure迁移到VSTS。我们希望能够做到的是:

    • 如果在三个repos中的任何一个中都有master的新提交,请创建一个dev构建并将其直接部署到dev插槽中的相应虚拟目录。
    • 当组件准备好发布时 - 无论这意味着在特殊RELEASE分支中进行新提交还是手动触发发布过程 - 创建生成构建,将其部署到ppe,然后在用户批准,交换ppeprod广告位。

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

    我目前拥有以下内容:

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

    这很有效,但看起来很笨重,有很多浪费的工作,而且我们并不觉得我们正在充分利用VSTS构建/发布管道的强大功能。是否有更好或更容易接受的方式?

1 个答案:

答案 0 :(得分:0)

根据版本environment triggers中的工件功能,有一些过滤器,因此您可以基于构建标记来触发相应的环境。

关于构建,您可以通过PowerShell任务(name, mobile and state)调用logging commands来设置每个当前分支的构建标记

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