11

天青之前释放Azure的Web角色配置设置:不同环境

使用Azure的之前,我们只想有只读配置文件坐在不同的环境(测试,分期和生产等)。在发布期间,所有应用程序文件(无配置文件)都将部署到有问题的环境中。然后应用程序文件将读取环境的配置文件以获取连接字符串和其他特定于环境的详细信息。我认为这是一个非常标准的设置?天青后

释放:

现在我们正朝着我们的web应用程序Azure的Web角色。 Web角色使用ServiceConfiguration.Cloud.cscfgServiceConfiguration.Local.cscfg文件。

当发布到云服务时,连接字符串需要知道。如果我们想要发布到测试云服务,则需要相应地编辑ServiceConfiguration.Cloud.cscfg。如果我们想要发布到分段或生产云服务,则需要进一步更改ServiceConfiguration.Cloud.cscfg

我更喜欢在部署时从连接字符串中抽象开发者AWAY。这可以防止指向错误环境的错误(这可能会产生巨大的影响)。如何才能做到这一点?

我知道这些配置设置可以在Azure管理门户中进行更改,但将此步骤纳入发布过程意味着开发人员需要访问管理门户,这不是理想的情况,因为仍然有误差(加上对管理门户的“开放”访问)。

更新:

我发现,您可以通过添加更多的(和重命名)管理您的服务配置文件:通过选择正确的云服务

enter image description here

然后(黑色)和正确的服务配置(红色箭头),开发人员不需要知道配置的详细信息:

enter image description here

还有一个开发人员部署到云服务时,选择了错误的服务配置的问题(但也许这可以自动进入一个脚本来防止这种情况?)

我主要IRK是环境类型(蓝色箭头)。现在这对我来说毫无用处。

+1

我得去核实一下,但我认为这只是让你选择的配置,而不是服务定义。因此,如果您需要不同的端点(http与https),不同的Vm大小或环境之间的其他大小,您可能会遇到问题。我的回答方面的解决方案就是这样做的。 –

+0

@Eoin:哦,是的,关于服务定义的好处。这将是一个问题。最后一个问题:你是否能够在没有“部署包”的情况下版本控制你的代码。直接从Visual Studio发布是有点可怕的,因为如果代码已经改变,您将无法确定。 – davenewza

+1

那么在我们的例子中,我们的源代码是否存储在我们用于源代码控制的GitHub上,因此我们有自己的流程来实现分支,锁定发布内容,然后继续在Master上进行开发。当开始制作发行版时,我们只需从我们签署的分支部署。 –

回答

4

最好的办法是创建多个云部署项目,每个环境一个,以便每个环境都有不同的ServiceConfiguration。

在我的申请,我有3个应用项目(1 WebRole和2 Worker角色)

然后,我们有6个云部署项目,每一个目标环境。每个部署项目都包含相同的Web角色&辅助角色,但具有不同的cscfg & csdef文件。

Solution Organisation

在应用层面,App.config中&的web.config文件通过配置变换使用SlowCheetah处理。基本上,每个部署的配置管理器中都有不同的生成配置。因此,而不是只是DebugRelease,我有DebugQAUatTestSAndboxProduction

+0

感谢您的帖子。分开的项目绝对是一个解决方案。请检查我的帖子以获取更新(另一种可能的解决方案)。另外,您现在如何处理云服务中内置的生产/登台环境? – davenewza

+1

生产与暂存是Azure的内部预生产节点,因此您可以利用VIP交换选项。但是,如果每个环境都有完全不同的环境,则可能只需始终部署到相关环境的“生产”持有者。 –