web-dev-qa-db-fra.com

Comment gérer efficacement un site avec Drush make?

Quelles sont les choses importantes à considérer lors de la gestion d'un site en utilisant Drush make ?

15
Letharion

"Créer des fichiers", dans le contexte Drush et Drupal, définissez un ensemble de modules, de thèmes et de bibliothèques qui composent un site. Bien que l'on puisse coller l'intégralité du répertoire sites/all/modules dans git , le fichier make est beaucoup plus rapide à gérer, à la fois pour git et les développeurs. Ci-dessous, un fichier make à partir d'un projet réel. J'ai beaucoup coupé car le fichier entier est composé de centaines de lignes, mais j'ai suffisamment conservé pour afficher toutes les fonctionnalités que j'ai utilisées.

; 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 ligne api définit l'API Drush make à utiliser pour le reste du fichier. Une chose importante à noter à propos du fichier est que tous les modules ont une version spécifique ou pointent vers une commit git spécifique. Nous n'avons jamais de versions -dev dans nos fichiers. Lorsque nous nous présentons à une réunion client ou que nous remettons le fichier make au serveur Jenkins , il ne doit jamais surprises. La version exacte incluse dans le fichier doit être testée et doit passer avec succès tous les types de tests. Ceci est important pour pouvoir livrer quelque chose de haute qualité.

Dans mon entreprise, l'accord général est que chaque équipe fournit un script Shell appelé "build", à la racine du référentiel, qui est responsable de la configuration du site, afin que les tests automatisés puissent être exécutés par la même équipe. Configuration CI.

Les mises à jour du module peuvent être effectuées rapidement directement sur les sites pour les tests, mais officiellement en mettant à jour le fichier make et en reconstruisant le site.

Mon équipe utilise actuellement ceci ensemble de scripts de build . Je travaille à déplacer une grande partie de la fonctionnalité dans une extension drush qui utilisera massivement la fourniture. Une version CLI d'Aegir si vous voulez.

28
Letharion