2016-04-19 43 views
0

我有一个ASP.NET MVC Web应用程序和一组Selenium UI集成测试。我想把这个Azure中,并应用连续传递这样的:如何通过所有集成测试自动将Azure网络应用程序推广到生产

  1. 我提交修改Git仓库
  2. 天青注意到提交,获取最新的代码,构建它,并将其部署到一些测试环境
  3. Azure中运行的代码我的单元测试,以及失败的构建,如果任何测试失败
  4. Azure中运行,在测试环境中我的集成测试,如果任何测试失败
  5. 如果通过了所有测试失败构建,将代码推广到生产

这似乎是一个逻辑管道,但我一直在努力让它工作。

我已经设法通过创建两个Web应用程序来实现第3步。 Muppet和MuppetStaging。 MuppetStaging环境会在每次提交时自动更新,因此这是一个很好的开始。我编辑了deploy.cmd来执行单元测试。当单元测试失败时,这会失败。太好了。

集成测试是难点。部署完成之前,我无法集成测试当前版本 - 因为尚未部署。我能做的最好的是集成测试以前的版本...但不是等待版本。即使我能做到,那么我又会如何促进成功的生产?

我知道有一个“临时插槽”的概念,但我不想按下“交换”按钮将我的更改投入生产,这将打败CD的概念。还有一个“自动交换”,但我不认为这需要考虑集成测试。

我一直在看有关这类问题的教程,但没有人似乎有我的要求......所以要么不是这样,要么我做的都是错的。

+1

一个CI工具应该能够完成这一任务。你可以去构建 - >分段部署 - >单元测试 - >集成测试 - >每个成功的前一步交换。您已经完成了艰难的部分,一个简单的CI设置将帮助您将它们整理好。 –

+0

是的,我已经开始在我的电脑上设置一个Jenkins服务器,一旦我完成配置,我可能会把它放在它自己的Azure web应用程序中,如下所述:http://donovanbrown.com/post/2016/02/28 /如何安装的 - 詹金斯式-AN-Azure的web应用程序 – demoncodemonkey

回答

0

让我看看我是否可以帮助并回答您的一些问题。

集成测试是难点。在部署完成之前 已完成,我无法集成测试当前版本 - 因为 尚未部署。

有一个post部署挂钩,在所有部署完成后触发,但仍在部署过程中。

https://github.com/projectkudu/kudu/wiki/Post-Deployment-Action-Hooks

也有一个“自动交换”,但再一次,我不认为这需要 集成测试考虑。

如果你不与部署后钩测试,如果测试失败,将无法部署操作,“自动交换” shouldn`t是触发。如果它确实请在Project Kudu

0

中提出错误Microsoft发布管理工具似乎完全适用于您的问题。如果你还没有尝试过这些,你应该。它们现在可以作为服务使用,并且在Azure中也很有用。使用Visual Studio Team Services(以前称为Visual Studio Online)将Release Management作为服务使用,并将Git用作版本控制系统。

检查这些资源:像詹金斯或他人 1. Official RM Page 2. Visual Studio Team Services

相关问题