Come gestire efficacemente un sito con Drush make?


16

Quali cose sono importanti da considerare quando si gestisce un sito usando Drush make ?

Risposte:


29

"Crea file", nel contesto Drush e Drupal, definisce un insieme di moduli, temi e librerie che compongono un sito. Mentre uno potrebbe attaccare l'intera directory siti / all / modules in git, il file make è molto più veloce da gestire, sia per git che per gli sviluppatori. Di seguito è riportato un file di make da un mio vero progetto. Ho tagliato molto dato che l'intero file è composto da centinaia di righe, ma ho conservato abbastanza per mostrare tutte le funzionalità che ho usato.

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

La linea api definisce quale Drush crea l'API da utilizzare per il resto del file. Una cosa importante da notare sul file è che tutti i moduli hanno una versione specifica o puntano a un commit git specifico. Non abbiamo mai versioni -dev nei nostri file. Quando ci presentiamo a una riunione del cliente o consegniamo il file make al server Jenkins , non ci devono mai essere sorprese. La versione esatta inclusa nel file deve essere testata e dovrebbe superare tutti i tipi di test. Questo è importante per poter consegnare qualcosa di alta qualità.

Nella mia azienda, l'accordo generale è che ogni team fornisce uno shell-script chiamato "build", nella radice del repository, che è responsabile della configurazione del sito, in modo che i test automatizzati possano essere eseguiti dallo stesso cross-team Configurazione CI.

Gli aggiornamenti del modulo possono essere eseguiti rapidamente direttamente sui siti per i test, ma ufficialmente aggiornando il file make e ricostruendo il sito.

Il mio team attualmente utilizza questo set di build-script . Sto lavorando per spostare gran parte delle funzionalità in un'estensione drush che comunque utilizzerà pesantemente la fornitura. Una versione CLI di Aegir, se vuoi.


1
Genio. Grazie per aver dedicato del tempo a scrivere questo è molto utile
Clive

Sì, sono d'accordo con Clive, votando come un post molto utile. Sono interessato a non dover installare ripetutamente lo stesso set di moduli e patch. @Letharion Gradirei calorosamente se potessi approfondire un giorno su come procedere. Lo installi localmente o sul server remoto?
Artur

1
Giocare con Drush Make. Capisco perfettamente il motivo per cui ci sono numeri di versione fissi. Tuttavia, come li aggiorni? Esiste un drush equivalente per un drush up? Ad un certo punto, è necessario aggiornare le versioni alla versione più recente (in particolare gli aggiornamenti di sicurezza).
Doverlo

1
Domande su Moar: hai un file .gitignore o come evitare di eseguire il commit di file "maked"? Se sì, che aspetto ha? Ho provato a fare qualcosa di fantasia con i caratteri jolly e! ma questo non funziona per le directory.
Berdir,

1
Non sono davvero d'accordo. La mancanza di -dev è ciò che garantisce coerenza, non viceversa. È responsabilità degli sviluppatori assicurarsi che si applichi la patch, il che può significare fare riferimento a una revisione git anziché a una versione stabile, ma mai un imprevedibile -dev che può cambiare da build a build.
Letharion
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.