Jak skutecznie zarządzać witryną za pomocą marki Drush?

15

Jakie rzeczy należy wziąć pod uwagę, zarządzając witryną przy użyciu marki Drush ?

Letharion
źródło

Odpowiedzi:

28

„Twórz pliki” w kontekście Drush i Drupal definiują zestaw modułów, motywów i bibliotek tworzących witrynę. Podczas gdy w git można umieścić cały katalog witryn / wszystkich / modułów, plik make jest znacznie szybszy w obsłudze, zarówno dla git, jak i dla programistów. Poniżej znajduje się plik make z mojego rzeczywistego projektu. Wiele wyciąłem, ponieważ cały plik składa się z setek linii, ale zachowałem wystarczająco dużo, aby pokazać całą funkcjonalność, z której korzystałem.

; API
api = 2

; Core
core = 7.x
projects[drupal][version] = 7.14

; Contrib modules
projects[date][version] = 2.0-alpha4
projects[email][version] = 1.0

; Media and file_entity go hand in hand - please make sure they work together.
projects[media][version] = 2.0-unstable5
projects[file_entity][version] = 2.0-unstable5

; Cron modules
projects[ultimate_cron][version] = 1.6
projects[background_process][version] = 1.12

; Performance modules
projects[expire][version] = 1.0-alpha2
projects[cache_actions][version] = 2.0-alpha3

; Unstable modules
projects[menu_node_views][type] = module
projects[menu_node_views][download][type] = git
projects[menu_node_views][download][url] = http://git.drupal.org/project/menu_node_views.git
projects[menu_node_views][download][revision] = f46dd41eb8c4e693a6642a6c461afa57d99a6f1b

projects[filefield_sources_plupload][type] = module
projects[filefield_sources_plupload][download][type] = git
projects[filefield_sources_plupload][download][url] = http://git.drupal.org/project/filefield_sources_plupload.git
projects[filefield_sources_plupload][download][revision] = da374770b80fcbc0dab17158d38c8436ef29caca

projects[menu_token][type] = module
projects[menu_token][download][type] = git
projects[menu_token][download][url] = http://git.drupal.org/project/menu_token.git
projects[menu_token][download][revision] = 8c18fbb

; Libraries
libraries[mediaelement][download][type] = "file"
libraries[mediaelement][download][url] = "https://github.com/johndyer/mediaelement/zipball/2.7.0"

; Patches

; #1491150: node_load in menu_node_menu_link_insert is not safe - http://drupal.org/node/1491150
projects[menu_node][patch][] = http://drupal.org/files/menu_node-node_load-in-menu_node_menu_link_insert-1491150-1.patch

; Fix rendering of relation endpoints
projects[relation][patch][] = http://drupal.org/files/relation_table_endpoints_break.patch
projects[relation][patch][] = http://drupal.org/files/relation_bundle_permissions.patch

libraries[jquery-json-min][download][type] = "file"
libraries[jquery-json-min][download][url] = "http://jquery-json.googlecode.com/files/jquery.json-2.3.min.js"
libraries[jquery-json-min][download][sha1] = "2a4615b93c65dd50f92117c570121035a0327fee"
libraries[jquery-json-min][destination] = "libraries/jquery-json"

Linia interfejsu API określa interfejs API Drusha, który będzie używany przez resztę pliku. Jedną ważną rzeczą, na którą należy zwrócić uwagę w związku z plikiem, jest to, że wszystkie moduły mają określoną wersję lub wskazują konkretną komendę git. Nigdy nie mamy wersji -dev w naszych plikach. Kiedy przychodzimy na spotkanie klienta lub przekazujemy plik make serwerowi Jenkins , nigdy nie może być żadnych niespodzianek. Dokładna wersja zawarta w pliku powinna zostać przetestowana i powinna przejść wszystkie typy testów. Jest to ważne, aby móc dostarczyć coś wysokiej jakości.

W mojej firmie ogólna zgoda jest taka, że ​​każdy zespół zapewnia skrypt powłoki o nazwie „build” w katalogu głównym repozytorium, który jest odpowiedzialny za konfigurację witryny, aby automatyczne testy mogły być uruchamiane przez ten sam zespół Konfiguracja CI.

Aktualizacje modułów mogą być wykonywane szybko bezpośrednio na stronach w celu przetestowania, ale oficjalnie poprzez aktualizację pliku make i przebudowanie strony.

Mój zespół obecnie używa tego zestawu skryptów kompilacji . Pracuję nad przeniesieniem dużej części funkcjonalności do rozszerzenia Drush, które jednak będzie mocno wykorzystywać rezerwę. Aegir w wersji CLI, jeśli chcesz.

Letharion
źródło
1
Geniusz. Dzięki za poświęcenie czasu na napisanie tego, jest to bardzo pomocne
Clive
Tak, zgadzam się z Clive, upvoting jako bardzo przydatny post. Jestem zainteresowany niepotrzebną instalacją tego samego zestawu modułów i poprawek. @Letharion Serdecznie witam, jeśli mógłbyś kiedyś opracować sposób postępowania. Czy instalujesz go lokalnie czy na zdalnym serwerze?
Artur
1
Zabawa z drush make. Całkowicie rozumiem powód umieszczenia tam stałych numerów wersji. Jak je jednak zaktualizować? Czy istnieje drush czy ekwiwalent drush up? W pewnym momencie musisz zaktualizować swoje wersje do najnowszej wersji (szczególnie aktualizacji bezpieczeństwa).
Robienie
1
Pytania na temat wycieków: Czy masz plik .gitignore lub jak uniknąć popełniania plików „utworzonych”? Jeśli tak, jak to wygląda? Próbowałem zrobić coś fantazyjnego z symbolem wieloznacznym i! ale to nie działa w przypadku katalogów.
Berdir
1
Naprawdę się nie zgadzam. Brak -dev zapewnia spójność, a nie na odwrót. Każdy programista ma obowiązek upewnić się, że łatka ma zastosowanie, co może oznaczać odwołanie się do wersji git zamiast stabilnego wydania, ale nigdy nieprzewidywalnego -dev, który może się zmieniać z kompilacji na inny.
Letharion