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交換選項。但是,如果每個環境都有完全不同的環境,則可能只需始終部署到相關環境的「生產」持有者。 –