启动和停止Azure VM的建议版本定义是什么?

时间:2016-06-14 23:33:09

标签: azure-devops ms-release-management

我想增强版本定义,以便我不需要拥有只启动Azure VM的独立环境。

如果我们采用我们拥有测试,测试版,制作环境的场景。客户希望将应用程序安装在本地网络上的Beta和Production中。我们内部希望测试环境能够运行E2E测试,允许非技术人员在不需要VPN访问客户测试版环境的情况下运行应用程序等。

所以这里我们有环境,然后是代理运行的地方:

Test - Azure VM Beta - Client machine Production - Client machine

我们如何解决这个问题,就是在客户端的计算机上安装VSTS Agent,这样我们就可以在为该版本定义的Beta和Production环境中定位该代理队列。然后,我们通常构建一个Azure VM并将该代理队列作为测试环境的目标。

我们不想24/7/365运行Azure VM。但是,如果它没有运行,那么它就无法响应发布管理的请求。

我所做的是创建一个名为Start Test VMStop Test VM的环境,使用Azure Resource Group Deployment来启动和停止VM。这两个额外的环境可以将其代理队列设置为Hosted

我想弄清楚如何将前3个环境合并为逻辑Test,而不必创建3个版本管理环境。

Start Test VM - Hosted Test - Azure VM Stop Test VM - Hosted Beta - Client machine Production - Client machine

问题是,当我把它交给我们的一个PM或者甚至是我自己时,可能会相当丑陋和混乱,当我在3个月左右回来思考时,"这个环境到底是什么?哦它只是启动/停止虚拟机。"

选项:

  1. 保持现状 - 保持原状,无法修复
  2. 我们可以在Azure VM上打开一个端口并使用Powershell远程处理。然后在托管代理或内部部署代理上运行以启动VM,然后部署应用程序,然后停止VM。 - 我们真的不喜欢这个,因为部署与客户端内部部署不同。我们喜欢每个环境'任务是相同的,只是有不同的变量。

2 个答案:

答案 0 :(得分:0)

您可以使用" Azure PowerShell"和#34; Azure SQL数据库部署"配置Azure VM和SQL或调用其他脚本以在Azure VM上运行的任务。

没有任何方法可以为任务设置代理。您可以在VSTS User Voice上提交功能请求。

另一种减少环境的方法是:如果部署链接到发布的每个构建,那么您可以添加"开始测试VM"任务进入您的构建定义以在构建成功时启动VM并添加"停止测试VM"任务进入" Beta"环境。

答案 1 :(得分:0)

我们目前确定的是继续使用environment并不是我认为的环境,而是发布管道中的stage更多内容启动和/或关闭VM。我们在hosted代理上运行该代理,以便启动虚拟机,并确保在Skip artifacts download上检查environment

对于持续集成构建,我们设置一个链,以便VM启动,CI environment被启动,然后VM停止。然后根据需要将剩余的environments手动部署到链中。

以下是一个例子:

  • 启动CI VM
  • CI
  • 停止CI VM
  • β
  • 生产

以下是发布管理截至2016.06.27的展示形象:

enter image description here

我在environment附近加上单引号,因为我认为我同意this user voice request,因为它更像是发布渠道中的一个阶段。与数据库开发非常相似,逻辑和物理不必映射1到1。