【发布时间】:2017-09-27 15:52:28
【问题描述】:
我的团队有一个 Azure App Services Web 应用,其中包含三个主要组件:
- 我们的主要 Node.js 服务器和 API,位于根目录
- 辅助 API,位于虚拟目录中
- 我们的前端 Web 应用(也由 Node.js 服务器提供),位于另一个虚拟目录中
这三个组件中的每一个都在 VSTS 中自己的 git 存储库中维护。此外,Web App 具有三个插槽:dev、ppe 和 prod。
我们正在尝试将我们的构建流程从 Azure 转移到 VSTS。我们希望能够做到以下几点:
- 当三个存储库中的任何一个中有对
master的新提交时,创建一个开发版本并将其直接部署到dev插槽中的相应虚拟目录。 - 当一个组件准备好发布时 - 无论是在特殊的
RELEASE分支中进行新提交还是手动触发发布过程 - 创建一个生产版本,将其部署到ppe并在用户批准后交换ppe和prod插槽。
这里的复杂之处在于,当任何组件部署到ppe 时,我们还需要将所有三个组件的最新发布版本部署到ppe,因为 Azure 没有能够独立交换虚拟目录。
我目前拥有的如下:
- 三个存储库中每一个的构建过程,在提交到
master或RELEASE时触发。它会创建开发版本和生产版本并发布它们。 - 在三个存储库中的任何一个
master的任何新版本上都会触发开发发布过程。它从所有三个存储库中获取来自master的最新开发版本,并将它们部署到dev中相应的虚拟目录。 - 在三个存储库中的任何一个中的
RELEASE的任何新版本上触发的生产发布过程。它从所有三个存储库中获取来自RELEASE的最新生产版本,将它们部署到ppe中的适当虚拟目录,并在用户批准后交换ppe和prod。
这可行,但它看起来很笨重,有很多浪费的工作,而且感觉我们并没有完全利用 VSTS 构建/发布管道的强大功能。有没有更好或更容易接受的方法?
【问题讨论】:
标签: azure azure-devops azure-web-app-service azure-pipelines azure-pipelines-release-pipeline