2017-03-17 65 views
2

我們正在使用Git,並且像往常一樣,我們的工作流程是開發>分段>生產。在Git中產品和開發配置之間切換的最佳方法

該項目有幾個配置文件。在開發過程中,配置指向開發數據庫。但是,在開發發生變化並準備部署之後,配置將需要更改並指向生產數據庫。

在下一輪更改期間,我需要再次更改config以指向開發數據庫。因爲我有3個配置文件(我能做的最好是2,因爲一個配置文件是針對特定的庫),所以這個循環不斷重複自身,並且它很乏味。

有沒有更好的方法來做到這一點?

+0

如果您絕對必須將配置文件保存在存儲庫中,是否考慮過使用分支機構進行此操作?從開發中創建生產分支,對配置文件進行更改以匹配生產並關閉。然後,您將在各個點將開發合併到生產環境中,以保持您修改的配置文件,直到您至少遇到合併衝突。 –

+0

正常的建議是隻將模板存儲在存儲庫中,並具有構建步驟或類似的功能,以檢測磁盤上的實際配置文件是否丟失,然後從模板中創建副本。然後您將編輯磁盤上的配置文件。但是,這不會讓您自動檢查生產就緒配置文件。 –

+0

非常感謝@ LasseV.Karlsen我在.gitignore中添加了配置文件,但他們仍然沒有被忽略,還沒有弄清楚爲什麼。嘗試追蹤,並且我的配置文件不見了! 我確實創建了一個生產分支,每次我都將開發分支合併到其中,並且它正在工作。 我真的很感興趣在構建步驟中使用模板來創建配置。我將需要在我的構建上工作,這太基礎了。 –

回答

0

我假設你的配置文件中包含的數據庫信息,如主機,用戶名,密碼...

IMO的好辦法來解決那就是數據庫的信息存儲到環境變量,並讓他們到您的配置文件(S)。例如,在開發,分期和生產過程中,數據庫主機將存儲在一個名爲DATABASE_HOST的環境變量中。在配置文件中,你已經有了這個線(php代碼)

$databaseHost = getenv('DATABASE_HOST'); 
// ... 

而作爲@Lasse五卡爾森說,模板應該由Git和配置文件本身進行跟蹤,應混帳忽略。 這樣,開發人員不必創建環境變量,他們要做的就是從模板創建配置文件(當然,忽略git)並設置其數據庫信息(以及爲什麼不依賴於其他信息服務器,環境......)

所以總結一下,配置文件應該被忽略,應該創建一個模板。部署時,從模板創建配置文件。 新的配置文件獲取所需的環境變量。然而,開發人員可以在本地創建這些環境變量或修改其配置文件的值。

+0

謝謝@smarber,我正在弄清這個概念,我不確定它是否適用於.properties類型的文件。可能是一個愚蠢的問題,但確切地說環境變量存儲在哪裏? –

+0

或者你是指在系統中設置的環境變量? –

+0

@SamuelWaithaka是的我的意思是你應該設置環境變量,你從你的配置文件以某種方式得到(我認爲所有的語言允許) – smarber

相關問題