如何使用Drush Make有效管理网站?


Answers:


28

在Drush和Drupal上下文中,“制作文件”定义了组成网站的一组模块,主题和库。虽然可以将整个sites / all / modules目录粘贴到git中,但对于git和开发人员而言,make文件的处理速度要快得多。下面是我的一个实际项目的make文件。由于整个文件有数百行,因此我做了很多工作,但是我保留了足够多的内容来展示我使用的所有功能。

; 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 make API。关于该文件要注意的一件事是,所有模块都具有特定版本,或指向特定git commmit。我们的文件中从来没有-dev版本。当我们出现在客户会议上,或将make文件移交给Jenkins服务器时,绝对不要感到惊讶。文件中包含的确切版本应经过测试,并有望通过所有类型的测试。重要的是要能够交付高质量的产品。

在我的公司中,总的协议是,每个团队都在存储库的根目录中提供一个名为“ build”的shell脚本,该脚本负责设置站点,以便可以由同一个跨团队运行自动化测试CI设置。

可以直接在站点上快速进行模块更新以进行测试,但可以通过更新make文件并重建站点来正式进行。

我的团队目前使用这套构建脚本。我正在努力将许多功能迁移到drush扩展中,该扩展将大量使用供应。如果愿意,可以使用Aegir的CLI版本。


1
天才。感谢您抽出宝贵的时间来编写此
Clive

是的,我同意Clive的观点,认为这是非常有用的文章。我对不必重复安装相同的模块和补丁集感兴趣。@Letharion,如果您能详细说明如何进行此工作,我将热烈欢迎。您将其安装在本地还是远程服务器?
Artur 2012年

1
玩弄使。我完全理解在其中放置固定版本号的原因。但是,如何更新它们?有没有像草草一样的草草?在某个时候,您需要将版本更新为最新版本(尤其是安全更新)。必须手动处理数十个模块,这似乎很繁琐……
Berdir 2012年

1
棘手的问题:您是否有一个.gitignore文件,或者如何避免提交“生成的”文件?如果是,那看起来如何?试图做一些通配符和!但这不适用于目录。
Berdir 2012年

1
我真的不同意。缺少-dev是确保一致性的原因,而不是相反的方法。确保补丁适用是开发人员的责任,这可能意味着引用git修订版而不是稳定的发行版,但决不要使用无法预测的-dev,它可以从内部版本更改为另一个版本。
Letharion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.