使用 Visual Studio Online 进行 Azure 发布管理
Posted
技术标签:
【中文标题】使用 Visual Studio Online 进行 Azure 发布管理【英文标题】:Azure release management with visual studio online 【发布时间】:2018-01-16 13:24:02 【问题描述】:我正在寻找有关 azure 发布管理的一些建议 我找到了很多资源,但我仍然有一些问题
我有一个 asp.net 4 解决方案(为了简单起见:一个 asp.net 项目,一个数据库项目,一个测试项目) 我在 Visual Studio Online 中使用 GIT
目前我在 Azure 中有一个应用服务和一个 sql server 数据库。 我有一个构建,它下载 nuget 包,构建,为数据库执行 dacpac,执行项目中的测试(我有使用数据库的集成测试)并最终将应用程序部署在 azure 应用程序服务上
我想做的似乎是“正常的事情”:
我想创建构建,然后将其部署在 azure 中的“开发”环境中,然后部署在“qa”环境中,然后部署在“staging”和“prod”中
在我的网络项目中,我创建了不同的 web.config 转换(每个环境一个)
我已经在 Visual Studio Online 中看到了这些版本,并且我知道它用于不同环境中的部署部分
我有什么问题:
在 Azure 中:
我是否按环境创建 1 个应用服务?还是我应该创建一个应用服务并使用插槽? 我是为每个环境创建 1 个 sql server 还是最好使用单个 sql server 并为每个环境创建一个数据库?在视觉工作室在线:
如何完成任务? 在构建部分,我使用什么配置?我应该选择哪个环境? 在构建中,如何管理数据库项目?我认为部署部分应该在发布部分,但我看不到如何配置连接字符串? 对于测试 -> 我是否在发布部分执行它们?如何更改连接字符串和应用设置? app.config 没有任何转换 我看到也有测试计划,但我真的不明白谁能帮我把这一切看得更清楚一点?
【问题讨论】:
1 个问题有很多问题... 是的,我知道这是很多问题,但我觉得如果我在不同的帖子中问他们,那将不准确 【参考方案1】:我不能回答所有这些,但我可以回答一些。
我将为您的单独环境创建单独的 Web 应用程序实例。使用 slot,你的 slot 存在于同一个 Web App 上并共享计算资源。如果出现严重错误(您的暂存代码将 CPU 固定到 100% 或吃掉所有 RAM),这将导致您的生产槽出现问题。我将插槽视为 A/B 测试的一部分或帮助部署。
您可能还需要为每个环境创建一个单独的数据库。如果您将在将来的任何时候升级您的数据库架构并对您的数据库架构进行重大更改,这几乎总是需要的。例如,如果您的生产代码需要数据库表中的特定字段,但您的下一版本数据库删除了该字段,会发生什么情况?
您提到您正在使用 web.config 转换,但我想抛出另一个我们发现更容易并且移动部件和错误来源更少的选项。如果您只是更改连接字符串和 AppSettings,请考虑使用每个环境的 Web App 应用程序设置。这些会覆盖您的 web.config 中的任何内容。这样做意味着您可以忘记 web.config 转换,并且不会再有任何可能在部署中出错的事情。
由于您使用的是数据库项目,因此要部署数据库,请查看 VSTS Azure SQL 数据库部署任务。它将使用您的数据库项目来创建一个 DACPAC,然后将其部署到您的目标服务器。
【讨论】:
感谢您的输入 Rob !我将删除 web.config 转换并直接在 Web 应用程序上配置 :) 现在我正在寻找一种方法来为“Visual Studio 测试”任务指定连接字符串。当我在 Visual Studio 中运行测试时,它使用 app.config,但在 Visual Studio Online 中我需要另一个连接字符串。你能帮我吗?以上是关于使用 Visual Studio Online 进行 Azure 发布管理的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio Online 进行 Azure 发布管理
Visual Studio Online自动构建版本号增量和装配修补
在 Azure 中使用 Visual Studio Online 加载测试性能计数器
Visual Studio Online 上的远程分支不会出现在 Visual Studio 2015 Team Explorer 上
在 Visual Studio Team Services(之前是 Visual Studio Online)上运行负载测试时出现通信错误