Cara menangani mengaktifkan modul baru dengan Drush via makefile

8

Di tempat kerja, kami bergerak untuk menyiapkan situs baru di git dan melakukan pengembangan lokal. Sejauh ini saya telah membuat file drush make bersama dengan profil instalasi, dan saya memiliki skrip ini melalui wayang sehingga ketika pengguna melakukan klon baru dari repositori, itu akan mengunduh semua paket dan menjalankan instalasi situs dasar. Ini berfungsi baik.

Sekarang, pertanyaan saya adalah kapan saya harus menggunakan modul baru untuk sebuah situs. Sebagai contoh, kami membangun modul baru untuk situs tersebut. Saya ingin pengembang lain menarik dari git dan memasang modul baru secara otomatis. Menambahkannya ke file drush make hanya akan menyebabkannya diunduh, dan menjalankan 'drush si' akan menyebabkan situs diinstal ulang, menghapus semua data.

Apa cara terbaik untuk mencapai ini?

Edit

Saya merasa saya belum menjelaskan ini dengan benar. Saya mencari cara untuk mengaktifkan modul secara otomatis berdasarkan entri makefile di drush. Idenya adalah pengguna memeriksa sebuah proyek, dan kemudian saya akan menjalankan boneka 'drush make' dan 'drush si' jika tidak ada file settings.php. Yang perlu saya pikirkan adalah kapan pengguna melakukan penarikan berikutnya dan kami telah menambahkan modul baru, cara mengaktifkannya secara otomatis melalui beberapa skrip. Jika perlu, saya akan menulis sesuatu untuk mengurai makefile dan menjalankan 'drush en' secara manual, tetapi saya ingin menemukan sesuatu yang sudah dibuat sebelumnya untuk melakukan ini.

dragonmantank
sumber
"Drush en" bukankah itu yang Anda inginkan?
Sam152
Saya perlu cara untuk mengotomatiskannya. 'drush en' dapat dijalankan dari CLI, tetapi yang saya inginkan adalah cara untuk menentukan modul apa yang baru dan secara otomatis mengaktifkannya.
dragonmantank
1
Masalahnya adalah memiliki modul yang hadir sebagai kumpulan file tidak berarti Anda ingin itu diaktifkan. Seseorang harus membuat keputusan itu. Misalnya jika Anda mengunduh Tampilan, Anda juga mendapatkan Tampilan UI. Apakah Anda ingin itu diaktifkan atau tidak? Itu keputusan sadar. Jadi, Anda perlu daftar modul dan mungkin juga dalam skrip.
Alfred Armstrong
Maaf, lupakan itu. Saya mendapatkan apa yang Anda maksudkan meskipun saya tidak yakin gunanya semua itu dilakukan melalui make.
Alfred Armstrong
1
@AlfredArmstrong idenya adalah karena saya sudah harus membuat file make, untuk menggunakannya dalam beberapa cara. Jika saya ingin 'devel' diaktifkan, tetapi bukan 'devel_generate', maka hanya 'devel' yang akan ada di file make. Jika nanti saya memutuskan untuk mengaktifkan 'devel_generate', saya akan menambahkannya ke file make. Saya tidak ingin melakukannya hanya berdasarkan file apa yang tersedia secara spesifik karena alasan yang Anda sebutkan, jadi saya perlu mengendalikannya dalam beberapa cara.
dragonmantank

Jawaban:

4

Saya bekerja untuk perusahaan yang memiliki aliran dev / stage / prod besar yang berusaha mengotomatisasi sebanyak mungkin. Semuanya harus dilakukan dalam kode, ditulis menggunakan fitur atau memperbarui kait.

Pada dasarnya, yang Anda inginkan adalah memiliki 1 modul khusus yang ada untuk berisi kait pembaruan. Dengan cara ini, ketika pengembang menarik pembaruan ke basis kode, mereka menjalankan pembaruan db, dan itu dapat melakukan apa saja yang mengaktifkan / menonaktifkan modul yang perlu terjadi. Kait pembaruan tidak memengaruhi pemasangan baru, karena diasumsikan bahwa modul tersebut sudah mutakhir ketika dipasang, dan hanya akan menjalankan pembaruan yang lebih baru.

Untuk meringkas:

  1. Lanjutkan menggunakan profil instalasi Anda untuk melakukan tugas-tugas instalasi yang diperlukan (mengaktifkan modul, dll.).
  2. Gunakan modul "pemutakhiran" khusus yang menggunakan hook_update_NXXX () untuk mengaktifkan / menonaktifkan modul-modul baru dan jika tidak menjaga tugas administratif situs Anda tetap sinkron.

Berikut adalah pos yang membahas tentang pendekatan yang sama dan memberikan contoh kode.

coreyp_1
sumber
1

Ini pertanyaan yang bagus. drush makenyaman untuk mengunduh modul. Kami tidak ingin berkontribusi pada modul mengasapi. Di sini kasus dibuat untuk tidak memperpanjang makedengan cara ini. Mungkin Fitur adalah yang terbaik untuk mengelola status yang diaktifkan modul situs, serta aspek konfigurasi lainnya.

Screenack
sumber
1

Pertimbangkan untuk memodifikasi alur kerja Anda.

Sepertinya Anda ingin melakukan pekerjaan terdistribusi dan "berbagi" mengaktifkan modul dan nilai konfigurasi lainnya ... entah bagaimana.

Jika Anda memikirkannya - bahkan Drupal "inti" dan Drupal.org tidak melakukan ini. Kode dikirimkan ke Core dan modul komunitas yang dijalankan dalam Proses Pembangunan Berkelanjutan. Drupal.org dan banyak proyek menggunakan Jenkins.

Untuk pemasangan Jenkins yang diarahkan pada pengembangan Drupal, ia juga menggunakan Phing, lihat repo git ini: http://reload.github.io/jenkins-drupal-template/

Menggunakan Jenkins, Anda dapat mendorong kode ke repo master Git Anda dan membuat situs yang dibangun untuk situs demo dari Profil Instalasi dan Drush Makefile (s). Ini tidak menyelesaikan masalah Anda dengan tepat tetapi tidak memberikan 1 lokasi Anda semua mendorong perubahan untuk menambah / mengaktifkan / menghapus modul dan mudah-mudahan Anda semua tidak "memecah build".

Dengan asumsi build tidak rusak - aman untuk menarik perubahannya ke sistem pengembangan lokal Anda.

Jenkins + server Staging atau Development hanya 1 bagian dari pengembangan.

Alur kerja lokal Anda dapat menggunakan profil instalasi + makefiles. Pertimbangkan berbagi konten menggunakan modul khusus dengan Migrasikan jika Anda mampu membayar waktu pembuatan konten. Contoh berbagi konten dengan pengembang menggunakan Migrasi, dan penggunaan Phing dapat dibaca di sini:

http://marzeelabs.org/blog/2014/03/17/coding-as-a-team-content-fixtures/ http://marzeelabs.org/blog/2014/03/03/coding-as-a- team-automation-using-phing /

Terakhir lihat PDF ini pada sesi dari Drupal Camp Ohio 2014 tentang integrasi berkelanjutan dan bekerja dengan tim Anda:

Tenken
sumber
1

Untuk tujuan yang sama kami menggunakan Guru . Ini menggunakan settings.php untuk memberikan informasi tentang apa modul master. Dengan perintah sederhana, drush master-executesemua modul (dan dependensinya) yang hilang diaktifkan dan modul yang tidak digunakan lagi dinonaktifkan.

Saat ini modul tidak membaca informasi dari makefile, tapi mungkin itu bisa menjadi pilihan untuk rilis baru.

derhasi
sumber
0

Anda dapat mengaktifkan modul baik secara manual dengan melalui opsi Modul atau dengan terminal menggunakan perintah drush

drush en -y modulename1 modulename2 

dan seterusnya.

Nitesh Sethia
sumber
Saya mencari cara untuk mengotomatisasi ini berdasarkan makefiles, bukan hanya cara mengaktifkan modul secara manual.
dragonmantank
0

Modul dapat diaktifkan dalam 2 cara:

  1. baik dari terminal menggunakan perintah drush oleh:
    A. drush dl modulename- untuk mengunduh modul pertama
    B. drush en -y modulename- untuk mengaktifkan modul

  2. Dengan menggunakan opsi menu Modul dan kemudian mengaktifkan modul dari jumlah modul yang ditampilkan.

neetu morwani
sumber
Saya mencari cara untuk mengotomatisasi ini berdasarkan makefiles, bukan hanya cara mengaktifkan modul secara manual.
dragonmantank
Ada beberapa cara lagi. module_enable()sebagai contoh. Atau dengan mengimpor basis data yang sudah disiapkan.
leymannx
0

Saya ingin beberapa ini yang pasti. Fungsi make digunakan untuk mengunduh berbagai bagian situs: modul, tema, dan proyek melalui git. Ketika Anda menuliskan profil instalasi Anda, Anda menulis di file info modul tergantung. Masalahnya adalah ketika Anda perlu menambahkan modul baru untuk profil instalasi Anda untuk profil yang ada - apakah saya benar?

Untuk itu Anda perlu menggunakan hook_update_N ketika N berdiri untuk pembaruan nomor. Hook digunakan untuk modul yang perlu melakukan tindakan seperti: memperbarui skema, menambahkan variabel dan digunakan untuk situs dan distribusi, seperti OpenScholar, untuk mengaktifkan modul yang baru diunduh di situs langsung.

Anda mungkin perlu menambahkan ini dalam modul paling umum dan fungsinya akan terlihat seperti ini https://github.com/openscholar/openscholar/blob/SCHOLAR-3.x/openscholar/modules/os/os.install#L16

Kail harus berada di file module.install. Jika Anda menggunakan UI, Anda harus mengunjungi www.site.com/update.php dan jika Anda menggunakan drush gunakan saja perintah drush updb.

Roy Segall
sumber
0

Seperti yang saya mengerti, file Drush .make hanya mengunduh proyek dari drupal.org, jika Anda ingin mengaktifkan beberapa modul, dapat dilakukan dengan profil instalasi ** (. Install) **. Profil instalasi memberi Anda opsi, modul apa yang ingin Anda aktifkan pada saat instalasi.

Baru-baru ini saya juga berkontribusi satu distribusi dengan bantuan file .make. Bahkan saya berbagi seluruh pengalaman .membuat di sini . Saya tahu ini tidak terkait dengan apa yang sebenarnya Anda tanyakan tetapi dapat membantu Anda memahami apa yang sebenarnya dilakukan .membuat file.

Jadi dari seluruh tugas ini, apa yang saya mengerti, menggunakan file .make Anda tidak dapat mengotomatiskan mengaktifkan modul. Untuk melakukan ini, Anda perlu mengikuti beberapa pendekatan lain.

Saya harap URL forum ini dapat membantu Anda. Otomatisasi Drupal dengan skrip Bash dan Drush .

Anda perlu menulis beberapa skrip bash di mana tepatnya Anda akan menggunakan perintah Drush.

drush en -y modulename
Pushpinder Rana
sumber