我想增强版本定义,以便我不需要拥有只启动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 VM
和Stop 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个月左右回来思考时,"这个环境到底是什么?哦它只是启动/停止虚拟机。"
选项:
答案 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
手动部署到链中。
以下是一个例子:
以下是发布管理截至2016.06.27的展示形象:
我在environment
附近加上单引号,因为我认为我同意this user voice request,因为它更像是发布渠道中的一个阶段。与数据库开发非常相似,逻辑和物理不必映射1到1。