Nie sądzę, aby istniało jedno rozwiązanie, które działa we wszystkich przypadkach, ponieważ może zależeć od wrażliwości danych w plikach konfiguracyjnych lub używanego języka programowania i wielu innych czynników. Ale myślę, że ważne jest, aby zachować pliki konfiguracyjne dla wszystkich środowisk pod kontrolą źródła, aby zawsze wiedzieć, kiedy zostało zmienione i przez kogo, a co ważniejsze, móc je odzyskać, jeśli coś pójdzie nie tak. I będą.
Oto jak to robię. Zwykle jest to przeznaczone dla projektów nodejs, ale myślę, że działa również dla innych frameworków i języków.
Robię configs
katalog w katalogu głównym projektu i przechowuję w nim wiele plików dla wszystkich środowisk (a czasami także oddzielne pliki dla każdego środowiska programisty), które są śledzone w kontroli źródła. I jest rzeczywisty plik, którego używa kod o nazwie config
w katalogu głównym projektu. To jedyny plik, który nie jest śledzony. Więc to wygląda tak
root
|
|- config (not tracked)
|
|- configs/ (all tracked)
|- development
|- staging
|- live
|- James
Kiedy ktoś sprawdza projekt, kopiuje plik konfiguracyjny, którego chce użyć, do nieśledzonego config
pliku i może go dowolnie edytować, ale jest również odpowiedzialny za skopiowanie tych zmian przed zatwierdzeniem do innych plików środowiska, jeśli jest to potrzebne.
Na serwerach nieśledzony plik może być po prostu kopią (lub odniesieniem) śledzonego pliku odpowiadającego temu środowisku. W JS możesz po prostu mieć 1 linię, aby wymagać tego pliku.
Ten przepływ może na początku być trochę skomplikowany, ale ma wielkie zalety: 1. Nigdy nie musisz się martwić, że plik konfiguracyjny zostanie usunięty lub zmodyfikowany na serwerze bez kopii zapasowej 2. To samo, jeśli programista ma na swoim maszyna i jego maszyna przestają działać z jakiegoś powodu. 3. Przed wdrożeniem możesz porównać pliki konfiguracyjne dla development
i staging
na przykład sprawdzić, czy czegoś brakuje lub jest uszkodzone.