Magento 1: meningkatkan alur kerja pengembangan modul saya (Modman, komposer, git)

14

Ini adalah sesuatu yang ada dalam pikiran saya selama beberapa waktu tetapi saya tidak dapat menemukan metode yang tepat untuk melakukannya.

Jadi pada dasarnya, saya bekerja dengan 6 situs web yang berbeda, semuanya menjalankan Magento CE 1.9.2+

Di situs web itu, saya menggunakan banyak ekstensi yang telah saya dan tim saya kerjakan telah kembangkan (di sini kita berbicara lebih dari 50 ekstensi) dan kode untuk ekstensi tersebut disimpan di Bitbucket. Jadi saya bukan satu-satunya orang yang mengelola ekstensi itu, kami 3 orang yang mengerjakannya.

Saat ini, ketika saya ingin menambahkan fitur / memperbaiki bug untuk salah satu ekstensi tersebut, inilah alur kerja saya:

  • Instal versi terakhir ekstensi di salah satu situs web melalui Modman
  • Perbaiki bug / tambahkan fitur / tes
  • Salin perubahan secara manual ke folder lokal yang berisi semua ekstensi saya
  • Komit dan dorong melalui GIT dari folder ekstensi ini ke Bitbucket (1 repo Bitbucket per modul)
  • Kemudian versi baru modul dapat diinstal melalui Modman

Catatan penting: Saya menggunakan modman dengan hardcopy di sini, tanpa symlink.

Masalah terbesar saya telah disorot dalam huruf tebal: Saya ingin dapat melewati langkah ini karena ini merupakan penyebab masalah yang besar (beberapa file kadang-kadang dilupakan, salah salin / tempel, melibatkan tindakan manusia).

Jadi, bagaimana saya bisa meningkatkan alur kerja saya untuk menyingkirkan langkah copy / paste manual ini? Saya terbuka untuk saran di sini.

Raphael di Digital Pianism
sumber
Sudahkah Anda mencoba Submodulesfitur git?
Gopal Patel
Mengapa Anda menggunakan hardcopy? Dengan symlink, Anda seharusnya hanya memiliki git clone di bawah folder modman. Kemudian cukup edit di tempat dan cukup tekan.
Kristof di Fooman
@KristofatFooman saya harus menjelaskan itu. Salah satu dev sedang menjalankan Windows dan karenanya kami memiliki masalah dengan symlinks ^^
Raphael di Digital Pianism
1
@RaphaelatDigitalPianism untuk masalah windows coba lihat di github.com/sitewards/modman-php
David Manners

Jawaban:

8

Saya sangat sering mengambil pendekatan berikut yang cukup agnostik.

  1. Periksa modul yang ingin Anda edit /path/to/my/module
  2. Buat cabang untuk karya Anda (bercabang dari tag yang relevan dll).
  3. Berkomitmen bekerja ke cabang ini (jangan mendorong).
  4. Dalam proyek Anda, tentukan repositori lokal ke salinan lokal modul Anda. Ini agar proyek Anda dapat menarik perubahan yang tidak dicuri dari LFS Anda.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. Anda kemudian dapat membuat komposer memerlukan cabang pengembangan spesifik Anda (selama proyek Anda minimum-stabilitymengizinkannya).

    composer require namespace/module dev-branch-name-here
  6. Anda berkomitmen /path/to/my/module, composer update namespace/moduledalam proyek, melihatnya menginstal dan menguji.

  7. Saat Anda benar-benar selesai, komit dan dorong.

Saya menemukan pendekatan ini bekerja dengan baik untuk modul M1 menggunakan https://github.com/Cotya/magento-composer-installer , karena instal yang disinkronkan kadang-kadang terasa menyakitkan dan membuat Anda tersandung ketika menambahkan direktori atau jalur baru yang sebelumnya tidak disinkronkan. oleh modman.

Tautan yang mungkin menarik

Debugging

  1. Gunakan composer require namespace/module dev-branch-name-here -vvvuntuk melihat cabang yang bisa Anda gunakan secara lokal.

  2. Periksa ulang yang minimum-stabilitytelah diatur devdalam proyek Anda menginstal modul ke.

  3. Your requirements could not be resolved to an installable set

Ditemukan dengan membaca komentar Patrick Schwisow di sini .

Jika paket lain memiliki persyaratan pada paket yang Anda ubah, cabang pengembangan Anda mungkin gagal memenuhi persyaratan tersebut (yang akan menghasilkan "Persyaratan Anda tidak dapat diselesaikan ke paket yang dapat diinstal."). Untuk memperbaikinya, Anda bisa melakukan inline alias agar semua paket lain akan melihatnya sebagai versi tertentu.

Singkatnya, Anda dapat memperbarui Anda composer.jsonuntuk memaksanya ke versi tertentu saat mengembangkan, membuatnya terbaca seperti:

"namespace/module": "dev-branch-name-here as 1.2.3"
Luke Rodgers
sumber
Pendekatan lain yang menarik di sini. Terima kasih atas masukan Anda
Raphael di Digital Pianism
1
Ini bagus. Saya cenderung menggunakan pathrepositori tipe untuk modul proyek yang tidak akan saya gunakan kembali dan kemudian git atau packagist untuk modul yang akan saya gunakan kembali.
David Manners
1
@ Davidvider Saya menggunakan aliran ini di atas dalam kombinasi dengan satis. Modul secara permanen di satis, tapi saya tidak ingin mendorong apa pun ke garis utama sampai saya menguji dan menjalankan secara lokal. Jadi gunakan alur kerja di atas, lalu dorong dan beri tag dan tunggu satis mengambilnya.
Luke Rodgers
@ LukeRodgers, dengan alur kerja ini Anda tidak menggunakan modman sama sekali dan semua file modul Anda ditempatkan di dalam file magento? (Anda tidak memiliki folder .modman untuk ekstensi Anda). Apakah saya memahaminya dengan benar?
MployBy
Hey @MployBy, saya tidak menggunakan modman secara langsung. Namun, saya tidak yakin apakah Cotya / magento-composer-installer menggunakannya di bawah tenda, sudah lama saya memasang modul magento1 baru.
Luke Rodgers
6

Saya menggunakan modman dengan hardcopy di sini, tanpa symlink.

Itu masalahnya. Jika Anda tidak dapat mengubah pengaturan ini untuk penyebaran toko Anda, pertimbangkan untuk bekerja pada ekstensi bersama pada mesin virtual terpisah di mana Anda menggunakan modman dengan symlink.

Saya menggunakan komposer dengan penginstal komposer AOE untuk mengkloning repositori ekstensi langsung ke .modmantetapi menginstal modul dari Git dengan modman bekerja juga saya kira. Apa pun cara Anda dapat bekerja secara langsung dalam repositori modul Git.

Fabian Schmengler
sumber
Ya seperti yang saya katakan di komentar, alasannya adalah salah satu dev menggunakan Windows dan IIRC kami memiliki beberapa masalah dengannya menggunakan symlink
Raphael di Digital Pianism
6
Oh, aku tidak melihatnya. Berikan dev itu VM :)
Fabian Schmengler
4

Jadi ide saya di sini untuk Anda adalah mulai bekerja dengan komposer bahkan untuk Magento1. Jika Anda memiliki pembuat paket sendiri , yang tidak terlalu sulit untuk dikelola sekarang karena aws dan google cloud sudah ada, atau Anda dapat menggunakan pembuat paket publik. Anda akan memiliki akses "mudah" ke versi yang lebih baru di toko Magento1 Anda.

Ini berarti bahwa ketika versi yang lebih baru keluar, Anda dapat composer updatedan itu akan mengotomatiskan proses penyalinan untuk Anda.

Lihatlah https://github.com/Cotya/magento-composer-installer untuk Magento1 via komposer.

Dengan pendekatan ini, Anda juga dapat langsung bekerja di repositori git di bawah folder vendor jika Anda menyetelnya untuk menyalin .gitdan dengan demikian dapat mendorong diubah kembali ke repo mereka tanpa memiliki checkout terpisah. Meskipun perhatikan Anda harus berhati-hati di sini dan pastikan Anda tahu di cabang mana Anda berada, jika tidak, Anda dapat menghapus kode Anda (melakukannya beberapa kali).

David Manners
sumber