Dev-> Stage-> Prod与Azure网站的Git部署

时间:2013-03-30 02:10:50

标签: visual-studio-2010 azure azure-git-deployment

如何使用Git部署Azure来实现以下部署目标?

  • 在本地工作时轻松切换,使用伪内存数据或(最终)实际数据的非生产快照
  • 部署到Azure上的暂存环境,这样一开始我可以使用虚假的内存数据,最终转移到实际数据的非生产快照。
  • 使用实际数据部署到生产

我目前使用Github和临时分支部署到暂存Azure网站。由于我部署到公共存储库,git会忽略web.config文件。 (编辑:我刚刚得知忽略web.config实际上会导致azure上的部署错误)

感谢任何帮助/建议。

2 个答案:

答案 0 :(得分:1)

实际上应该比这更简单。请参阅this page。基本上,我们的想法是您在Azure门户中设置一些AppSettings来覆盖提交给您的仓库的默认值。

答案 1 :(得分:0)

嗯......这就是我现在所做的对我有用的事情。

  • 要在本地快速切换虚假的内存数据,我使用编译符号LOCAL和预处理器指令#if LOCAL

  • 当您部署到Azure时,相同的编译符号有效,因此我可以处理虚假数据,直到我准备切换到真正的数据库。如果我真的想让它更容易切换,我也可以使用应用程序设置。

面临的挑战是在本地保留带有“秘密”(如连接字符串)的web.config,而不是将其暴露给Github。我将它添加到.gitignore,但随后我的部署开始在Azure上失败,因为它无法找到web.config。只是通过ftp将其复制到wwwroot没有帮助 - Azure正在寻找存储库中的web.config。

因此,为了完成这项工作,我先“稍微”改变了部署过程,首先将Web.config从wwwroot复制到存储库,然后再运行默认的deploy.cmd。这很简单 - 这就是你要做的:

  1. 使用以下内容在存储库的根目录中创建.deployment文件:

    [配置] command = deploy.my.cmd

  2. 使用以下脚本创建deploy.my.cmd

    xcopy%DEPLOYMENT_TARGET%\ Web.config%DEPLOYMENT_SOURCE%\\ / Y

    deploy.cmd

  3. 现在,我在本地拥有了秘密的web.config。 Git忽略了这个文件。我通过FTP将正确的web.config上传到Azure,每当我部署时都会使用它。