Magento 2 sebagai persyaratan dev komposer untuk ekstensi

8

Saat menulis perpanjangan, akan masuk akal untuk menambahkan magento/project-community-editionke require-devbagian composer.json?

Gagasan di balik itu adalah bahwa itu hanya akan memerlukan composer installuntuk memutar instalasi Magento lengkap untuk pengembangan atau CI.

Untuk mengatur database, saya akan menambahkan skrip post-install dengan bin/magento setup:install.

Untuk menggunakan alat pengujian, Anda harus menyalin autoload-devdan require-devbagian dari magento/project-community-editionkarena mereka hanya digunakan dari root, bukan dari persyaratan.

Satu kelemahan yang saya lihat adalah Anda harus mengubah versi yang diperlukan untuk menguji lebih dari dua versi yang berbeda (dua karena Anda dapat menentukan rentang dan menginstal satu kali dengan --prefer-lowest), tetapi itu relatif mudah untuk diselesaikan.

Ada hal lain yang perlu saya pertimbangkan?

Fabian Schmengler
sumber

Jawaban:

4

Jawabannya tergantung pada apa kebutuhan CI Anda.

Untuk pengujian unit, saya saat ini mencari pendekatan yang hanya menyertakan di bagian yang memerlukan, modul Magento aktual yang saya miliki sebagai ketergantungan langsung (bahwa saya mendapatkan hampir semua modul dengan cara ini adalah untuk memilah Magento):

"require": {
  "magento/module-backend": "~100.0.2",
  "magento/module-sales": "~100.0.2"
}

Ini berfungsi dengan baik untuk salah satu ekstensi saya lihat Travis di sini tetapi sedang mengalami masalah yang menarik pada ekstensi lain di mana Magento harus secara otomatis membuat antarmuka untuk mock - detail di sini.

Jika Anda mencari di luar pengujian unit, saya pikir masuk akal untuk memiliki lingkungan Magento yang sudah dibangun di mana Anda menginstal ekstensi daripada menjalankan skrip instalasi untuk lingkungan Magento di setiap bangunan.

Kristof di Fooman
sumber
1

Terlihat masuk akal. 2 poin yang perlu diingat:

  1. Instalasi melalui komposer membutuhkan waktu cukup lama
  2. Ketika Anda memiliki banyak modul, cukup tidak nyaman untuk mendukung / menangani prosedur instalasi di dalam CI dengan skrip yang unik untuk setiap modul. Ketika Anda perlu mengubah sesuatu di sini, Anda harus mengubah semua ekstensi yang Anda miliki.

Salah satu cara untuk menghindarinya, bisa menjaga segala sesuatu yang berkaitan dengan build on CI dalam repositori terpisah dan memasukkannya dalam modul sebagai subrepositori.


Diposting atas nama Peter Samoilov dari frontWorks karena dia tidak ada di StackExchange. :)

Alexander Galtsow
sumber
1

Masuk akal untuk menyertakan hanya modul Magento yang dibutuhkan modul Anda:

  • Jelas bagi semua orang menginstalnya tergantung pada apa, seluruh edisi komunitas terlalu luas.
  • Anda mungkin terutama ingin mengujinya (dan beberapa tes integrasi), jadi tidak perlu webshop yang berfungsi.
  • Tes fungsional dapat dibuat di repositori webshop utama Anda, karena ada lebih masuk akal untuk menggunakan frontend dan juga bergantung pada keseluruhan kerangka sebagai hal yang saling terkait.

Pada dasarnya modul Anda sendiri tidak bergantung pada edisi seluruh komunitas, hanya bergantung pada sebagian saja sehingga itulah yang harus ditentukan. Dengan cara ini Anda masih bisa mengujinya, tetapi juga tetap jelas apa dependensinya.

stefandoorn
sumber
0

juga tidak yakin tentang ini. Pendekatan pertama saya adalah menginstal magento2 dari gambar buruh pelabuhan untuk menjalankan semua tes.

Ini akan memberikan Anda tes berjalan env dalam waktu yang cukup singkat, tetapi Anda harus membuat konfigurasi yang lebih spesifik daripada menginstal semuanya melalui komposer saya pikir.

David Verholen
sumber