Bagaimana cara mengelola situs yang efektif dengan Drush make?

16

Hal-hal apa yang penting untuk dipertimbangkan ketika mengelola situs menggunakan Drush make ?

Letharion
sumber

Jawaban:

29

"Make files", dalam konteks Drush dan Drupal, tentukan satu set modul, tema, dan pustaka yang membentuk sebuah situs. Sementara seseorang dapat menempelkan seluruh direktori situs / semua / modul ke git, file make jauh lebih cepat untuk ditangani, baik untuk git dan pengembang. Di bawah ini adalah file make dari proyek saya yang sebenarnya. Saya telah memotong banyak karena seluruh file adalah ratusan baris, tetapi saya sudah cukup mempertahankan untuk menunjukkan semua fungsi yang saya gunakan.

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

Baris api menentukan Drush yang membuat API untuk digunakan untuk sisa file. Satu hal penting yang perlu diperhatikan tentang file, adalah bahwa semua modul memiliki versi tertentu, atau arahkan ke komit git tertentu. Kami tidak pernah memiliki versi -dev di file kami. Saat kami muncul di rapat klien, atau menyerahkan file make ke server Jenkins , tidak boleh ada kejutan. Versi pasti yang termasuk dalam file harus diuji dan diharapkan lulus semua jenis tes. Ini penting untuk dapat mengirimkan sesuatu yang berkualitas tinggi.

Di perusahaan saya, kesepakatan umum adalah bahwa setiap tim menyediakan skrip shell yang disebut "build", di root repositori, yang bertanggung jawab untuk mengatur situs, sehingga pengujian otomatis dapat dijalankan oleh tim lintas yang sama Pengaturan CI.

Pembaruan modul dapat dilakukan dengan cepat langsung di situs untuk pengujian, tetapi secara resmi dengan memperbarui file make, dan membangun kembali situs.

Tim saya saat ini menggunakan kumpulan skrip build ini . Saya sedang berusaha untuk memindahkan sebagian besar fungsi menjadi ekstensi drush yang akan banyak menggunakan ketentuan. Aegir versi CLI jika Anda mau.

Letharion
sumber
1
Jenius. Terima kasih telah meluangkan waktu untuk menulis ini, ini sangat membantu
Clive
Ya, saya setuju dengan Clive, upvoting sebagai posting yang sangat berguna. Saya tertarik untuk tidak harus menginstal modul dan tambalan yang sama secara berulang. @Letharion Dengan senang hati saya akan menyambut Anda jika Anda dapat menguraikan suatu hari nanti tentang bagaimana Anda melanjutkannya. Apakah Anda menginstalnya secara lokal atau ke server jauh?
Artur
1
Bermain-main dengan make drush. Saya benar-benar mengerti alasan untuk menempatkan nomor versi tetap di sana. Namun, bagaimana Anda memperbaruinya? Apakah ada drush yang setara dengan drush up? Pada titik tertentu, Anda perlu memperbarui versi Anda ke versi terbaru (terutama pembaruan keamanan). Harus melakukan itu secara manual dengan lusinan modul tampaknya agak membosankan ...
Berdir
1
Moar pertanyaan: Apakah Anda memiliki file .gitignore atau bagaimana Anda menghindari melakukan file "dibuat"? Jika ya, bagaimana tampilannya? Mencoba melakukan sesuatu yang mewah dengan wildcard dan! tapi itu tidak berfungsi untuk direktori.
Berdir
1
Saya tidak begitu setuju. Kurangnya -dev adalah yang memastikan konsistensi, bukan sebaliknya. Setiap pengembang bertanggung jawab untuk memastikan tambalan tersebut berlaku, yang mungkin berarti merujuk pada revisi git alih-alih rilis yang stabil, tetapi tidak pernah -dev yang tidak dapat diprediksi yang dapat berubah dari saat dibangun ke yang lain.
Letharion