启动和停止 Azure VM 的推荐版本定义是什么?
What is the recommended release definition for starting and stopping an Azure VM?
我想增强发布定义,这样我就不需要单独的环境来启动 Azure VM。
如果我们假设我们有测试、测试和生产环境。客户希望将应用程序安装在其本地网络上的测试版和生产版中。我们内部需要一个测试环境来 运行 E2E 测试,允许非技术人员在不需要 VPN 访问客户 beta 环境的情况下使用应用程序,等等。
所以这里我们有环境,然后是代理所在的位置 运行ning:
Test - Azure VM
Beta - Client machine
Production - Client machine
我们解决此问题的方法是在客户端的计算机上安装 VSTS 代理,这使我们能够在为该版本定义的 Beta 和生产环境中定位该代理队列。然后我们通常会构建一个 Azure VM 并将该代理队列作为测试环境的目标。
我们不想 运行 Azure VM 24/7/365。但是,如果不是 运行ning,则它无法响应发布管理的请求。
我所做的是创建一个名为 Start Test VM
和 Stop Test VM
的环境,使用 Azure Resource Group Deployment
启动和停止虚拟机。这 2 个额外的环境可以将其代理队列设置为 Hosted
。
我想弄清楚如何将前 3 个环境组合成一个逻辑 Test
而不是必须创建 3 个发布管理环境。
Start Test VM - Hosted
Test - Azure VM
Stop Test VM - Hosted
Beta - Client machine
Production - Client machine
问题是当我在大约 3 个月后回过头来想 "What the hell is this environment? Oh it's just there to start/stop the VM."
时,将其交给我们的一位 PM 甚至我自己时可能会相当丑陋和混乱
选项:
- 保持现状 - 保持现状,无法修复
- 我们可以在 Azure VM 上打开一个端口并使用 Powershell 远程处理。然后 运行 在托管代理或本地代理上启动 VM,然后部署应用程序,然后停止 VM。 - 我们真的不喜欢这样,因为部署与客户端本地部署不同。我们希望每个环境的任务都相同,只是变量不同。
您可以使用 "Azure PowerShell" 和 "Azure SQL Database Deployment" 任务来配置您的 Azure VM 和 SQL 或调用其他脚本 运行 在 Azure VM 上。
无法为任务设置代理。您可以为此在 VSTS User Voice 上提交功能请求。
另一种减少环境的方法是:如果您部署链接到发布的每个构建,那么您可以将 "Start Test VM" 任务添加到您的构建定义中以在构建成功时启动 VM 并添加 "Stop Test VM" 任务进入 "Beta" 环境。
我们目前确定的是继续拥有一个 environment
这并不是我真正认为的环境,而是更多的 stage
在开始的发布管道中and/or 关闭虚拟机。我们 运行 在 hosted
代理上,以便它可以启动 VM 并确保在 environment
.
上检查 Skip artifacts download
对于持续集成构建,我们设置了一条链,以便 VM 启动,CI environment
启动,然后 VM 停止。然后根据需要手动将剩余的 environments
部署到链上。
下面是一个例子:
- 启动CI虚拟机
- CI
- 停止CI虚拟机
- 测试版
- 生产
这是截至 2016 年 6 月 27 日在发布管理中的外观图片:
我在 environment
周围加上了单引号,因为我认为我同意 this user voice request 的观点,它实际上更像是发布管道中的一个阶段。就像数据库开发一样,逻辑和物理不一定是 1 对 1 的映射。
我想增强发布定义,这样我就不需要单独的环境来启动 Azure VM。
如果我们假设我们有测试、测试和生产环境。客户希望将应用程序安装在其本地网络上的测试版和生产版中。我们内部需要一个测试环境来 运行 E2E 测试,允许非技术人员在不需要 VPN 访问客户 beta 环境的情况下使用应用程序,等等。
所以这里我们有环境,然后是代理所在的位置 运行ning:
Test - Azure VM
Beta - Client machine
Production - Client machine
我们解决此问题的方法是在客户端的计算机上安装 VSTS 代理,这使我们能够在为该版本定义的 Beta 和生产环境中定位该代理队列。然后我们通常会构建一个 Azure VM 并将该代理队列作为测试环境的目标。
我们不想 运行 Azure VM 24/7/365。但是,如果不是 运行ning,则它无法响应发布管理的请求。
我所做的是创建一个名为 Start Test VM
和 Stop Test VM
的环境,使用 Azure Resource Group Deployment
启动和停止虚拟机。这 2 个额外的环境可以将其代理队列设置为 Hosted
。
我想弄清楚如何将前 3 个环境组合成一个逻辑 Test
而不是必须创建 3 个发布管理环境。
Start Test VM - Hosted
Test - Azure VM
Stop Test VM - Hosted
Beta - Client machine
Production - Client machine
问题是当我在大约 3 个月后回过头来想 "What the hell is this environment? Oh it's just there to start/stop the VM."
时,将其交给我们的一位 PM 甚至我自己时可能会相当丑陋和混乱选项:
- 保持现状 - 保持现状,无法修复
- 我们可以在 Azure VM 上打开一个端口并使用 Powershell 远程处理。然后 运行 在托管代理或本地代理上启动 VM,然后部署应用程序,然后停止 VM。 - 我们真的不喜欢这样,因为部署与客户端本地部署不同。我们希望每个环境的任务都相同,只是变量不同。
您可以使用 "Azure PowerShell" 和 "Azure SQL Database Deployment" 任务来配置您的 Azure VM 和 SQL 或调用其他脚本 运行 在 Azure VM 上。
无法为任务设置代理。您可以为此在 VSTS User Voice 上提交功能请求。
另一种减少环境的方法是:如果您部署链接到发布的每个构建,那么您可以将 "Start Test VM" 任务添加到您的构建定义中以在构建成功时启动 VM 并添加 "Stop Test VM" 任务进入 "Beta" 环境。
我们目前确定的是继续拥有一个 environment
这并不是我真正认为的环境,而是更多的 stage
在开始的发布管道中and/or 关闭虚拟机。我们 运行 在 hosted
代理上,以便它可以启动 VM 并确保在 environment
.
Skip artifacts download
对于持续集成构建,我们设置了一条链,以便 VM 启动,CI environment
启动,然后 VM 停止。然后根据需要手动将剩余的 environments
部署到链上。
下面是一个例子:
- 启动CI虚拟机
- CI
- 停止CI虚拟机
- 测试版
- 生产
这是截至 2016 年 6 月 27 日在发布管理中的外观图片:
我在 environment
周围加上了单引号,因为我认为我同意 this user voice request 的观点,它实际上更像是发布管道中的一个阶段。就像数据库开发一样,逻辑和物理不一定是 1 对 1 的映射。