Як ефективно керувати сайтом за допомогою Drush?


15

Які речі важливо враховувати при керуванні сайтом за допомогою Drush ?

Відповіді:


28

"Створити файли" в контексті Друша і Друпала визначають набір модулів, тем і бібліотек, які складають сайт. Хоча можна було вставити весь каталог сайтів / всіх / модулів у git, файл make набагато швидше обробляти, як для git, так і для розробників. Нижче наведено файл з фактичного шахтного проекту. Я вирізав багато, оскільки весь файл - це сотні рядків, але я зберег достатньо, щоб показати всю функціональність, яку я використав.

; 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 робити API для решти файлу. Одне важливе, що слід помітити у файлі, це те, що всі модулі або мають конкретну версію, або вказують на певний git commmit. У наших файлах ніколи не є версії -dev. Коли ми з'являємось на зустрічі з клієнтами або передаємо файл make на сервер Jenkins , сюрпризів ніколи не повинно бути. Точну версію, що міститься у файлі, слід протестувати і очікувати, що вона пройде всі типи тестів. Це важливо, щоб мати можливість доставити щось якісне.

У моїй компанії загальна згода полягає в тому, що кожна команда надає оболонку-скрипт під назвою "build" в корені сховища, яка відповідає за налаштування сайту, щоб автоматичні тести могли працювати однією і тією ж крос-командою Налаштування CI

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

В даний час моя команда використовує цей набір сценаріїв зборки . Я працюю над переміщенням більшої частини функціональних можливостей у розширення барабану, яке дуже сильно використовуватиме положення. CLI-версія Aegir, якщо ви хочете.


1
Геніальність. Дякуємо, що знайшли час, щоб написати це, дуже корисно
Клайв

Так, я погоджуюся з Клайвом, проголошуючи як дуже корисну посаду. Мені цікаво не потрібно повторно встановлювати один і той же набір модулів і патчів. @Letharion Я щиро вітаю, якщо ви могли б детально розглянути якийсь день щодо того, як ви поступаєте з цим. Ви встановлюєте його локально або на віддалений сервер?
Артур

1
Граючи навколо з ударною маркою. Я повністю розумію причину введення фіксованих номерів версій туди. Однак як їх оновити? Чи є барабанний еквівалент для буріння? У якийсь момент вам потрібно оновити свої версії до новітньої версії (особливо оновлень безпеки). Зробити це вручну з десятками модулів здається досить втомлюючим ...
Бердір,

1
Питання щодо моар: Чи є у вас файл .gitignore або як уникнути компіляції файлів? Якщо так, як це виглядає? Намагався зробити щось фантазійне з wildcard і! але це не працює для каталогів.
Бердір

1
Я не дуже згоден. Відсутність -dev - це те, що забезпечує узгодженість, а не навпаки. Відповідальність за виправлення патчу відповідає кожному розробнику, що може означати посилання на версію git замість стабільного випуску, але ніколи непередбачуваний -dev, який може перейти від побудови до іншого.
Летаріон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.