2013-03-30 110 views
2

如何通过Git部署为Azure完成以下部署目标?Dev-> Stage->为Azure网站部署Git部署

  • 轻松切换时,本地工作,要么使用假内存中的数据或(最终)真实数据的非生产快照
  • 部署到Azure上的临时环境,使得在第一我可以用假内存数据并最终转移到真实数据的非生产快照。
  • 部署到生产用实际数据

我目前使用部署和Github上一个临时分支集结Azure的网站。由于我部署到一个公共仓库,web.config文件被git忽略。 (编辑:我刚才了解到,忽略web.config实际上导致天蓝色的部署错误)

任何帮助/建议表示赞赏。

回答

0

呃......这是我现在所做的工作。

  • 要快速假冒内存数据之间本地交换,我用一个编译符号LOCAL和预处理指令#if LOCAL

  • 当您部署到Azure时,相同的编译符号可以工作,因此我可以处理假数据,直到准备好切换到实数据库为止。如果我真的想要更轻松地切换它,我也可以使用应用程序设置。

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

因此,要做到这一点,我需要在运行默认的deploy.cmd之前,首先将Web.config从wwwroot复制到存储库,以此“稍微”改变部署过程。这很简单 - 这是你要做的:

  1. 创建一个.deployment文件在库的根与以下:

    [配置] 命令= deploy.my.cmd

  2. 与下面的脚本创建deploy.my.cmd

    XCOPY%DEPLOYMENT_TARGET%\ Web.config文件%DEPLOYMENT_SOURCE%\\/Y

    deploy.cmd

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

1

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

+0

我做到了,大卫。我也读过你的博客。问题是Azure不会通过Github进行部署,而不存在web.config(即使它是通过FTP手动上传到wwwroot)。我需要在本地保留_real_连接字符串以连接到SQL Azure **并且**部署它,但不会在公共Github存储库中可见。 –

+0

另一个理想的解决方案是在Git中拥有一个“假”web.config,它将在运行时在Azure上获取真正的值,并通过类似web.local.config的方式在本地“转换 - 构建”web.config。但我无法使它工作。 –

+0

请注意,Azure构建与在VS中执行“部署到文件系统”几乎相同。所以大概你可以在本地重现同样的问题。使用构建转换的替代解决方案在理论上应该也起作用。顺便说一句,http://social.msdn.microsoft.com/Forums/en-US/azuregit/threads可能是git Azure问题的一个更好的地方。 –