Quali cose sono importanti da considerare quando si gestisce un sito usando Drush make ?
Quali cose sono importanti da considerare quando si gestisce un sito usando Drush make ?
Risposte:
"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.