2013-03-30 109 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問題的一個更好的地方。 –