当持续部署到暂存时,交换暂存和生产部署槽时会发生什么?

When continuously deploying to staging, what happens when you swap staging and production deployment slots?

我们正在 Azure 中创建一个系统,借此我们可以设置从 Git 分支到暂存槽的持续部署。当我们准备好部署到生产环境时,我们会将暂存槽与部署槽交换 (https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots)。

+-------------------------------------+    +------------------------+
|GIT                                  |    |AZURE                   |
|                                     |    |                        |
|   master                            |    |                        |
|     +                               |    |                        |
|     |                               |    |                        |
|     | 1. merge into staging-branch  |    |                        |
|     |                               |    |                        |
|     v                               |    |                        |
|   staging-branch  +-----------------+----+> Staging slot          |
|                    2. Continuous deployment     ^                 |
+----------------------------^--------+    |      |                 |
                             |             |      |  3. Swap slots  |
                             |             |      |  3a. Swap again if something
                             +             |      |      went wrong |
                   Question: When does     |      v                 |
                   this re-deploy?         |  Deployment slot       |
                                           |                        |
                                           +------------------------+

我的问题是交换后暂存槽会怎样?期望的行为是什么都不会发生,以便重新交换以回滚到稳定状态是可能的。但是,我担心持续部署系统可能会意识到有变化并立即从 staging-branch.

重新部署

我的猜测是,在 1) 另一个提交被推送到 staging-branch 或 2) 手动启动重新部署之前,不会有重新部署。但是,我还没有在任何地方看到这个记录。

持续部署部分只是查看您的存储库中的更改,而不是 Web 应用实际内容中的更改。交换时,暂存槽现在将包含以前的生产版本,直到您提交对存储库的更改,然后将推送并覆盖它。