Magento2 - penyebaran lokal / pementasan / produksi & gitignore

11

Ini bisa menjadi satu jenis diskusi lebih dari satu pertanyaan.

Saya ingin tahu kebijakan yang deployment Anda mengikuti dengan Magento2 & lokal > pementasan > produksi lingkungan

Setelah mencoba beberapa kali kami telah memutuskan pendekatan terbaik (atau paling tidak, yang paling solid) adalah file gitignore ini termasuk folder vendor di git.

.DS_Store
/.buildpath
/.cache
/.metadata
/.project
/.settings
atlassian*
/nbproject
/sitemap
/sitemap.xml
/.idea
/.gitattributes
/app/config_sandbox
/app/etc/config.php
/app/etc/env.php
/app/code/Magento/TestModule*
/lib/internal/flex/uploader/.actionScriptProperties
/lib/internal/flex/uploader/.flexProperties
/lib/internal/flex/uploader/.project
/lib/internal/flex/uploader/.settings
/lib/internal/flex/varien/.actionScriptProperties
/lib/internal/flex/varien/.flexLibProperties
/lib/internal/flex/varien/.project
/lib/internal/flex/varien/.settings
/node_modules
/.grunt
/pestle.phar
/pub/media/*.*
!/pub/media/.htaccess
/pub/media/catalog/*
!/pub/media/catalog/.htaccess
/pub/media/customer/*
!/pub/media/customer/.htaccess
/pub/media/downloadable/*
!/pub/media/downloadable/.htaccess
/pub/media/import/*
!/pub/media/import/.htaccess
/pub/media/theme/*
/pub/media/theme_customization/*
!/pub/media/theme_customization/.htaccess
/pub/media/wysiwyg/*
!/pub/media/wysiwyg/.htaccess
/pub/media/tmp/*
!/pub/media/tmp/.htaccess
/pub/media/captcha/*
/pub/static/***
!/pub/static/.htaccess

/var/*
!/var/.htaccess

.unison*
/sync.sh

Jadi kami menjalankan komposer hanya di lingkungan lokal: Karena setiap ekstensi baru, atau peningkatan perangkat lunak diuji dalam lokal, maka divalidasi dan dikomit. Kami mungkin akan menyertakan file app / etc / config.php di git juga, tetapi file itu ditulis ulang saat dijalankan setup:upgrade, bukan?

Termasuk vendor berarti ukuran repositori akan lebih besar dari (mungkin) yang direkomendasikan tetapi dengan cara ini ketika menggunakan kode, kami hanya menjalankan urutannya:

bin/magento setup:upgrade
bin/magento setup:di:compile (optional)
bin/magento setup:static-content:deploy

Informasi terkait: http://www.damianculotta.com.ar/magento/gitignore-y-la-estrategia-de-deploys-en-magento2

Lihat mengapa kami memilih perintah kompilasi sebagai Magento 2 opsional - setup: di: compile ?

MEMPERBARUI

Yang benar adalah kami mengalami beberapa masalah ketika menerapkan perubahan kode dalam proyek Magento 2 kami yang diterbitkan

Perubahan berfungsi di lokal & pementasan (diperiksa di kedua mode: pengembang & produksi ... meskipun kami secara konseptual mengonfigurasikan lingkungan itu dalam mode pengembang), tetapi beberapa di antaranya tidak bekerja di lingkungan produksi (dalam mode produksi), dll ... jadi saya tidak yakin kita mengikuti strategi yang tepat. Saya ingin melihat apa urutan perintah yang tepat, dan relevansi urutan dalam perintah itu

Bahkan, setiap hari saya kurang yakin tentang kegunaan mode produksi Magento 2, kecuali Anda tidak akan mengubah apa pun dalam proyek. Bisakah kamu berubah pikiran?

Raul Sanchez
sumber
Saya menempuh rute yang sama: semuanya ada di git repo saya. Mesin produksi tidak memiliki komposer sehingga tidak ada cara lain untuk saya. Bolehkah saya bertanya bagaimana Anda menangani repositori .git di dalam folder vendor? Ketika saya berkomitmen pada repo saya, itu dianggap sebagai submodul dan karenanya tidak berakhir di repo saya.
omsta

Jawaban:

18

Bahkan, setiap hari saya kurang yakin tentang kegunaan mode produksi Magento 2, kecuali Anda tidak akan mengubah apa pun dalam proyek. Bisakah kamu berubah pikiran?

Saya tidak yakin apakah saya mengerti Anda benar, tetapi itulah tepatnya mode produksi : sistem produksi di mana Anda tidak mengubah apa pun (bijak kode). Sampai penyebaran berikutnya, yaitu.

Saya menemukan penyebaran berbasis Git yang Anda gunakan kurang cocok untuk Magento 2 daripada untuk Magento 1, karena semua preprocessing. Pembangunan dan penyebaran lebih kompleks dan IMHO tidak ada jalan lain untuk proses pembuatan otomatis

Apa yang akan saya rekomendasikan:

  • Memiliki penyebaran yang dapat diulang , yaitu Anda harus yakin bahwa kode yang sama persis berakhir dalam produksi yang sedang dalam tahap, termasuk file yang dihasilkan .
  • Untuk mencapai itu, pisahkan bangunan dari penempatan dan lakukan hal berikut dalam proses pembuatan:

    • composer install(menambahkan vendorke repositori juga dimungkinkan, tetapi jika Anda melakukannya hanya untuk menghindari menjalankan komposer di server selama penerapan, lebih baik lakukan dalam langkah build dan hanya simpan composer.lockdalam repo)
    • Pembuatan kode (YMMV):

      bin/magento setup:di:compile
      bin/magento setup:static-content:deploy
      
    • membuat arsip (yang membangun artefak ) dari direktori Magento penuh, termasuk mediadan var, tetapi termasuk vendor, pub, var/generateddan var/di. Dimulai dengan , var/generateddan var/didipindahkan ke generated/codedan generated/metadata, yang membuatnya lebih mudah untuk memisahkan mereka dari varyang seharusnya diabaikan untuk penggunaan.

  • Dalam penyebaran, salin artefak bangunan ke server target, ekstrak ke direktori baru dan:

    • direktori link terus-menerus ke dalamnya ( media, var/session, var/log, ...)
    • aktifkan mode perawatan
    • beralih root dokumen (biasanya docroot adalah symlink ke rilis terakhir, ubah ke rilis baru)
    • cache flush
    • Lari setup:upgrade
    • nonaktifkan mode perawatan
  • Proses penyebaran ini dapat dengan mudah diimplementasikan dengan Deployer , yang seperti Capistrano tetapi dalam PHP. Solusi penyebaran penuh untuk Magento 2 berdasarkan penyebar dapat ditemukan di sini: https://github.com/mwr/magedeploy2 (terima kasih kepada netz98!) Dan di sini ada satu lagi yang kami gunakan: https://github.com/staempfli / magento2-deployment-tool

  • Menyimpan app/etc/config.phpdalam repositori baik untuk melacak modul yang diaktifkan dan dinonaktifkan.

Ini bukan instruksi langkah demi langkah tetapi harus memberi Anda gambaran umum untuk alternatif yang lebih kuat untuk proses Anda saat ini. Lihatlah alat-alat yang terhubung untuk melihat bagaimana solusi lengkap mungkin terlihat.

Fabian Schmengler
sumber
Terima kasih banyak Fabian ... Saya mencari sesuatu seperti ini, karena kami telah menggunakan Capistrano di Magento 1 & saya berharap menemukan alat serupa untuk Magento 2 ... Saya akan mencoba selama seminggu & memberikan Anda lebih banyak umpan balik
Raul Sanchez
@ fabian-schmengler menjelaskan cukup banyak apa yang kami lakukan. Kami menghasilkan semuanya dalam lingkungan pementasan dan kami mengujinya di sana dalam mode produksi, kemudian kami memindahkan kode yang dihasilkan dari lingkungan pementasan ke lingkungan produksi untuk memastikan bahwa kode yang berakhir di lingkungan produksi persis sama dengan yang kita miliki dalam pementasan.
diazwatson
Terima kasih untuk penjelasannya. Akan menyenangkan memiliki konten file gitignore dalam jawaban Anda.
Mehdi
@Mehdi .gitignorefile tidak relevan dengan masalah aktual. Anda bisa menggunakan yang standar.
Fabian Schmengler
@FabianSchmengler, saya memiliki masalah yang sama, semua perubahan komit file akan mencerminkan setelah setiap penyebaran di semua sistem, tetapi admin konfigurasi pengaturan tema konfigurasi tidak akan mencerminkan, apakah ada solusi untuk menghindari mengkonfigurasi pengaturan yang sama beberapa kali di semua sistem?
jafar pinjar
4

Menurut saya, tunggu Magento 2.2 atau coba terapkan pendekatan yang serupa.

Magento 2.2 memperkenalkan penyebaran pipa dengan misalnya memisahkan build server dengan server produksi.

Berikut adalah dokumentasi resmi: http://devdocs.magento.com/guides/v2.2/config-guide/deployment/pipeline/

Selain itu, saat ini saya menggunakan Kemungkinan untuk mengelola penyebaran otomatis dengan template konfigurasi dan beberapa pengaturan lingkungan.

Franck Garnier
sumber