Как эффективно управлять сайтом с помощью Drush make?

Ответы:

29

«Создание файлов» в контексте Drush и Drupal определяет набор модулей, тем и библиотек, составляющих сайт. В то время как в git можно вставить весь каталог sites / all / modules, файл make работает намного быстрее, как для git, так и для разработчиков. Ниже приведен файл make из моего реального проекта. Я много вырезал, поскольку весь файл состоит из сотен строк, но я сохранил достаточно, чтобы показать всю функциональность, которую я использовал.

; 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"

Строка api определяет, какой Drush make API использовать для остальной части файла. В отношении файла важно отметить, что все модули либо имеют определенную версию, либо указывают на конкретный git commmit. У нас никогда не было версий -dev в наших файлах. Когда мы демонстрируем на собрание клиента или сдайте файл макияжа на Дженкинс сервер, не должна никогда быть никаких сюрпризов. Точная версия, включенная в файл, должна быть проверена и должна пройти все типы тестов. Это важно, чтобы иметь возможность доставить что-то высокого качества.

В моей компании общее согласие заключается в том, что каждая команда предоставляет в корневом каталоге хранилища сценарий оболочки, называемый «сборка», который отвечает за настройку сайта, поэтому автоматические тесты могут запускаться одной и той же группой. Настройка CI.

Обновления модуля могут быть сделаны быстро непосредственно на сайтах для тестирования, но официально путем обновления файла make и перестройки сайта.

Моя команда в настоящее время использует этот набор скриптов сборки . Я работаю над тем, чтобы перенести большую часть функциональности в расширенное расширение, которое будет активно использовать предоставление. CLI-версия Aegir, если хотите.

Letharion
источник
1
Genius. Спасибо, что нашли время, чтобы написать это, это очень полезно
Клайв
Да, я согласен с Клайвом, проголосовав за очень полезный пост. Меня интересует отсутствие необходимости повторной установки одного и того же набора модулей и патчей. @Letharion Я бы искренне приветствовал, если бы вы могли когда-нибудь рассказать о том, как вы поступите с этим. Вы устанавливаете его локально или на удаленный сервер?
Артур
1
Играя с Drush Make. Я полностью понимаю причину размещения там фиксированных номеров версий. Тем не менее, как вы обновляете их? Есть ли эквивалент для Drush Up? В какой-то момент вам нужно обновить свои версии до последней версии (особенно обновления безопасности). Необходимость делать это вручную с десятками модулей кажется довольно утомительной ...
Бердир
1
Моар вопросы: у вас есть файл .gitignore или как вы избегаете фиксации "maked" файлов? Если да, как это выглядит? Пытался сделать что-то необычное с символом подстановки и! но это не работает для каталогов.
Бердир
1
Я не совсем согласен. Отсутствие -dev - это то, что обеспечивает последовательность, а не наоборот. Каждый разработчик несет ответственность за обеспечение применения патча, что может означать обращение к git-ревизии вместо стабильного релиза, но никогда не к непредсказуемому -dev, который может измениться при сборке на другую.
Летарион