Welche Dinge sind bei der Verwaltung einer Site mit Drush make zu beachten ?
"Dateien erstellen" definiert im Kontext von Drush und Drupal eine Reihe von Modulen, Themen und Bibliotheken, aus denen eine Site besteht. Während man das gesamte sites / all / modules-Verzeichnis in git ablegen könnte, ist die make-Datei sowohl für git als auch für die Entwickler viel schneller zu handhaben. Unten ist eine Make-Datei von einem aktuellen Projekt von mir. Ich habe viel ausgeschnitten, da die gesamte Datei Hunderte von Zeilen umfasst, aber ich habe genug beibehalten, um alle von mir verwendeten Funktionen zu zeigen.
; 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"
Die API-Zeile definiert, welche Drush-API für den Rest der Datei verwendet werden soll. Ein wichtiger Punkt bei der Datei ist, dass alle Module entweder eine bestimmte Version haben oder auf ein bestimmtes git commmit verweisen. Wir haben niemals -dev-Versionen in unseren Dateien. Als wir an einem Client - Sitzung oder der Hand über die Make - Datei in das zeigen Jenkins Server, muss es nie irgendwelche Überraschungen geben. Die genaue Version in der Datei sollte getestet werden und alle Arten von Tests bestehen. Dies ist wichtig, um qualitativ hochwertige Produkte liefern zu können.
In meiner Firma besteht die allgemeine Vereinbarung darin, dass jedes Team ein Shell-Skript namens "build" im Stammverzeichnis des Repositorys bereitstellt, das für die Einrichtung der Site verantwortlich ist, damit automatisierte Tests von demselben Team ausgeführt werden können CI-Setup.
Modulaktualisierungen können schnell direkt auf Sites zum Testen durchgeführt werden, jedoch offiziell, indem die make-Datei aktualisiert und die Site neu erstellt wird.
Mein Team verwendet derzeit diesen Satz von Build-Skripten . Ich arbeite daran, einen Großteil der Funktionalität in eine Drush-Erweiterung umzuwandeln, die jedoch stark von der Bereitstellung abhängt. Eine CLI-Version von Aegir, wenn Sie so wollen.