Jawabannya adalah mereka tentu tidak berlebihan.
Memang benar bahwa seseorang dapat mencapai hasil akhir yang sama menggunakan skrip bash yang mencakup perintah drush (setidaknya bagian bangunan). Tetapi, jika yang ingin kita lakukan adalah mengintegrasikan proses kita ke dalam kerangka CI seperti JenkinsCI, maka menggunakan sesuatu seperti phing (semut atau capistrano dapat diganti di sini) adalah cara yang harus ditempuh.
Dengan phing, kita dapat memecah proses pembuatan menjadi segmen berbeda yang dapat melaporkan kembali ke Jenkins dengan cara yang cerdas.
Jadi misalnya. Katakanlah sebagai bagian dari proses build saya, saya menggunakan drush untuk mengaktifkan dua modul, node dan shouldfail. Maka membangun harus gagal. Tetapi jika semua yang kita lakukan adalah memberi tahu JenkinsCI untuk menjalankan perintah shell berikut, JenkinsCI akan mengatakan bahwa build LULUS:
drush --quiet --yes @staging en node shouldfail
Jelas itu tidak benar. Namun jika sebaliknya kita menggunakan semut atau phing untuk mendefinisikan proses yang sama, kita juga dapat menambahkan beberapa logika gagal yang dipahami Jenkins, dan karenanya gagal sebagaimana mestinya. Skrip pembuatan phing berikut mencoba melakukan hal yang sama dengan perintah sebelumnya, tetapi gagal seperti yang kami harapkan:
<project name="staging" default="enable modules" description="Jenkins Staging Build">
<target name="enable modules">
<exec command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">
</exec>
<loadfile property="en.error" file="error" />
<if>
<contains string="${en.error}" substring="warning" />
<then>
<property name="en.fail" value="Could not enable all modules" />
</then>
</if>
<fail if="en.fail" message="${en.fail}" />
</target>
</project>
Semut dan phing BTW hampir identik. Keuntungan bagi pengembang PHP dalam menggunakan phing adalah mereka dapat memperpanjang phing dengan lebih nyaman.
Adapun pengembangan Drupal dan drush menjadi sebagus itu, saya tidak melihat terlalu banyak nilai dalam memperluas phing, dan berpikir bahwa menjalankan tugas exec akan cukup untuk membuat template build yang cerdas.
Nah, untuk menjawab pertanyaan saya, saya akhirnya menginvestasikan waktu untuk mencari tahu phing. Ini sebenarnya cukup intuitif dan tidak butuh waktu lama untuk mencari tahu.
Skrip phing adalah pengganti skrip shell, untuk mengontrol eksekusi beberapa perintah dan hasilnya. Drush adalah antarmuka CLI untuk perintah untuk berinteraksi dengan situs Drupal atau terkait dengan Drupal. Mereka saling melengkapi.
sumber
Pertanyaan Anda: Apakah Phing dan Drush tumpang tindih?
TLDR; versi: Sorta. Tapi kebanyakan tidak.
Versi tidak lengkap: Drush dan phing tumpang tindih hanya dalam beberapa contoh. Terutama, dumping dan pengarsipan situs web akan menjadi salah satu tumpang tindih yang lebih besar. Anda bisa melakukannya di phing tetapi Anda harus menulis banyak tugas. Anda bisa melakukan Dump database tetapi drush melakukannya dengan mudah dengan satu perintah. Phing memang melakukan itu, tetapi Anda hanya perlu menulis skrip baris perintah. Di mana phing bersinar adalah kemampuan untuk menjalankan tes phpunit, jalankan alat eksternal seperti toples yang mengkompres file css Anda, membuat dan mengemas pembuatan situs drupal Anda / aplikasi, dll.
Apa itu phing?
Phing pada dasarnya adalah pilot yang menjalankan perintah. Jika Anda terbiasa dengan Ant, Phing sebenarnya adalah port dekat dari Ant (Ini adalah sepupu berbasis java). Phing ditulis dalam PHP.
Anda dapat menggunakan Phing untuk mengotomatiskan tugas dan melaporkan hasil berdasarkan tugas tersebut. Drush, di sisi lain, hanya melakukan tugas. Tidak dapat menentukan mengevaluasi hasil dari output.
Contoh use case untuk phing / drush:
Saya perlu drush untuk membuang database dan phing ke
scp
paket dari prod ke pengujian.Phing dapat menyimpan pengaturan ini dalam
build.properties
file eksternal dan sumber mereka ke proyek Anda. Itu juga dapat menyimpan pengaturan yang berbeda untuk setiap lingkungan juga. Misalnya Phing dapat symlink selesai terbaru yang telah dibuang oleh drush ke root dokumen yang tepat.Bagaimana cara kerjanya?
Phing digerakkan oleh xml. Itu mengkonsumsi file build.xml dan mengambil atribut (kadang-kadang disebut target) dan menjalankan perintah sederhana.
Lebih lanjut tentang ini:
Saya sangat menyarankan Anda meninjau slideshare ini oleh para pemimpin proyek Phing:
http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing
Ini akan memberi Anda tingkat tinggi dan beberapa penggunaan nyata (plus kode) phing. Ini tidak berhubungan dengan drupal tetapi akan memberi Anda ide yang lebih baik tentang cara kerjanya.
sumber