Myślałem, że to prosty przypadek użycia nowego systemu zarządzania konfiguracją, ale nie miałem szczęścia dowiedzieć się, jak rozwiązać ten problem:
Problem
Chcę zapisać konfigurację w git i użyć drush, aby wyeksportować konfigurację podczas programowania, a następnie podczas wdrażania zaimportować konfigurację. Całkiem podobne do przywracania funkcji w Drupal 7. Mój problem polega na tym, że nie chcę przechowywać kodów dostępu w git dla różnych integracji. Powoduje to usunięcie tych konfiguracji
$ drush cim -y
Gdzie spojrzałem
Miałem nadzieję, że będzie prosta lista / konfiguracja konfiguracji, które powinny zostać wykluczone podczas importu / eksportu. Wygląda na to, że w pewnym momencie było, ale musiało zostać ponownie usunięte, ponieważ jest ono obecnie dostępne w wersji Drupal 8.
Przyjrzałem się, w jaki sposób dokonywane są zmiany konfiguracji, porównując aktywny i synchronizowany magazyn, aby zobaczyć, czy istnieje miejsce, w którym mógłbym usunąć zmiany, tak się nie stało. Patrzyłem na to, jak drush importuje konfigurację, ponieważ ma pewne własne wykluczenia konfiguracji, ale nie wyglądało na to, że można ją rozszerzać. Spojrzałem ConfigEvents
, ale wydaje się, że wszystko to dzieje się po imporcie, więc nie wygląda na to, że można tego użyć.
Czy czegoś brakuje, czy też nie można po prostu wykluczyć konfiguracji z importu / eksportu?
źródło
Możesz użyć modułu „Config Ignore”: https://www.drupal.org/project/config_ignore
źródło
Możesz użyć kombinacji config_ignore i config_split .
Config ignore pozwala zignorować podzbiór jednostek konfiguracji podczas importu (zapobiega także usuwaniu od wersji 2.x). Niestety nie wyklucza to wykluczenia konfiguracji podczas eksportu.
Aby wykluczyć encje konfiguracyjne podczas eksportu, możesz użyć config_split, utworzyć nową encję config_split i pozostawić folder pusty. Zapobiega to eksportowaniu konfiguracji do systemu plików; zamiast tego eksportuje go do bazy danych.
Napisałem Wyklucz konfigurację z zarządzania konfiguracją w Drupal 8 na ten temat.
źródło
Aby podzielić konfiguracje, możesz użyć https://www.drupal.org/project/config_split .
Możesz podzielić eksport na różne katalogi, które możesz następnie zignorować.
Na drupalu w Dublinie 2016 odbyła się bardzo ładna prezentacja osób odpowiedzialnych za inicjatywę CMI, do której zachęcam do zapoznania się bez względu na wszystko.
źródło
Właśnie przetestowałem @berdir w odpowiedzi nr 1 i działa idealnie. Tylko dodaję małą notatkę: musisz wprowadzić całą konfigurację do tego var, kompletne. Bez tego $ config var nie działa poprawnie.
Coś takiego:
Dokumentacja: https://www.drupal.org/node/1928898
Uwaga z powyższej dokumentacji: „Pamiętaj, że wartości zastąpione przez $ config w ustawieniach. Php nie będą widoczne z interfejsu administracyjnego Drupal”.
źródło
$config['module.settings']['some']['value'] = 'foo';
Zastanawiam się nieco, dlaczego do tej pory nikt nie wspominał o narzędziach Drush CMI . Magiczne słowa to
drush cexy
iconfig-ignore.yml
. Będziesz mieć listę, którą możesz dostosować. Potrzebowaliśmy go raz, aby wykluczyć instancje bloku, a jednocześnie przetwarzano bazy bloków.Źródło: https://www.previousnext.com.au/blog/introducing-drush-cmi-tools
Źródło: https://github.com/previousnext/drush_cmi_tools
źródło
Korzystanie z konfiguracji split (zalecane)
Moduł konfiguracyjny rozłam powstał specjalnie na tę potrzebę.
Config split jest zintegrowany z drush.
Używanie tylko Drusha
Drush również powinien to zrobić za pomocą
--skip-modules
flagi.Możesz dodać następujące wiersze w pliku drupal / drushrc.php w katalogu głównym projektu, aby zrobić to automatycznie.
Zobacz http://www.drush.org/en/master/config-exporting/#ignoring-development-modules
Niestety ta funkcja ma błąd : https://github.com/drush-ops/drush/issues/1820 . Dlatego na razie musisz również dodać te pliki konfiguracyjne do swojego .gitignore, aby wyeksportowane pliki konfiguracyjne nie zostały zatwierdzone. Być może ciągle rezygnują z tej (buggy) funkcjonalności z drush na rzecz config split.
źródło