Nasıl bir site Drush make ile yönetmek için?


Yanıtlar:


28

"Dosyaları hazırla", Drush ve Drupal bağlamında, bir siteyi oluşturan bir dizi modül, tema ve kitaplık tanımlar. Biri tüm siteler / all / modules dizinini git'e yapıştırabilirken, make dosyası hem git hem de geliştiriciler için çok daha hızlıdır. Aşağıda gerçek bir projemden bir marka dosyası. Tüm dosya yüzlerce satır olduğu için çok şey kestim, ancak kullandığım tüm işlevleri gösterecek kadar korudum.

; 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 satırı, hangi Drush'ın dosyanın geri kalanı için API kullanacağını tanımlar. Dosya hakkında dikkat edilmesi gereken önemli bir nokta, tüm modüllerin belirli bir sürümünün olması veya belirli bir git komutunu göstermesidir. Biz asla bizim dosyalarında -dev versiyonları var. Bir müşteri toplantısında göründüğümüzde veya make dosyasını Jenkins sunucusuna teslim ettiğimizde hiçbir zaman sürpriz olmamalı. Dosyaya dahil edilen tam sürüm test edilmeli ve her tür testi geçmesi beklenmelidir. Bu, yüksek kalitede bir şey teslim edebilmek için önemlidir.

Şirketimde genel anlaşma, her ekibin, sitenin kurulumundan sorumlu olan deponun kökünde "build" adlı bir kabuk komut dosyası sağlamasıdır, böylece otomatik testler aynı çapraz ekip tarafından çalıştırılabilir CI kurulumu.

Modül güncellemeleri test için doğrudan sitelerde hızlı bir şekilde yapılabilir, ancak resmi olarak make dosyasını güncelleyerek ve siteyi yeniden oluşturarak.

Ekibim şu anda bu yapı komut dosyaları kümesini kullanıyor . Ben işlevselliği büyük ölçüde hükmü olsa provizyon kullanacak bir drush uzantısına taşımak için çalışıyorum. İsterseniz Aegir'in CLI versiyonu.


1
Cin. Bunu yazmak için zaman ayırdığınız için teşekkür ederiz, çok yararlı
Clive

Evet, Clive'ye katılıyorum, çok faydalı bir yazı olarak öne çıkıyor. Aynı modülleri ve yamaları tekrar tekrar yüklemeye gerek duymuyorum. @Letharion Eğer bir gün buna nasıl devam edeceğinizi açıklayabilirseniz, içtenlikle karşılarım. Yerel olarak mı yoksa uzak sunucuya mı yüklüyorsunuz?
Artur

1
Sarhoş yapmak ile uğraşırken. Oraya sabit sürüm numaralarını koyma nedenini tamamen anlıyorum. Ancak, bunları nasıl güncellersiniz? Sarhoşluk eşdeğeri bir eşdeğeri var mı? Bir noktada, sürümlerinizi en yeni sürüme güncellemeniz gerekir (özellikle güvenlik güncellemeleri). Bunu düzinelerce modülle manuel olarak yapmak oldukça sıkıcı görünüyor ...
Berdir

1
Moar sorular: Bir .gitignore dosyanız var mı veya "oluşturulmuş" dosyaları işlemekten nasıl kaçınıyorsunuz? Evet ise, bu nasıl görünüyor? Joker karakter ile süslü bir şey yapmaya çalıştı ve! ancak bu dizinler için geçerli değildir.
Berdir

1
Gerçekten katılmıyorum. -Dev eksikliği tutarlılığı sağlayan şeydir, tersi değil. Düzeltme ekinin uygulanmasını sağlamak her geliştiricinin sorumluluğundadır, bu da kararlı bir sürüm yerine bir git revizyonuna atıfta bulunmak anlamına gelebilir, ancak hiçbir zaman derlemeden diğerine değişebilen öngörülemeyen -dev.
Letharion
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.