Magento 1: migliorare il flusso di lavoro di sviluppo del mio modulo (Modman, compositore, git)


14

Questo è qualcosa che avevo in mente da un po 'di tempo ma non riesco a trovare il metodo giusto per farlo.

Quindi, fondamentalmente, sto lavorando con 6 diversi siti Web, tutti con Magento CE 1.9.2+

Su quei siti web, sto usando un sacco di estensioni che io e il team con cui sto lavorando hanno sviluppato (qui stiamo parlando di oltre 50 estensioni) e il codice per quelle estensioni è memorizzato su Bitbucket. Quindi non sono l'unica persona a gestire quelle estensioni, ci sono 3 persone che ci lavorano.

Al momento, quando voglio aggiungere una funzione / correggere un bug per una di quelle estensioni, ecco il mio flusso di lavoro:

  • Installa l'ultima versione dell'estensione su uno dei siti Web tramite Modman
  • Correzione del bug / aggiunta di una funzione / test
  • Copia manualmente le modifiche in una cartella locale che contiene tutte le mie estensioni
  • Esegui il commit e il push tramite GIT da questa cartella di estensione a Bitbucket (1 repository Bitbucket per modulo)
  • Quindi la nuova versione del modulo può essere installata tramite Modman

Nota importante: sto usando modman con hardcopy qui, nessun collegamento simbolico.

Il mio problema più grande è stato evidenziato in grassetto: voglio essere in grado di saltare questo passaggio perché è una grande causa di problemi (alcuni file vengono dimenticati a volte, copia / incolla errati, comporta un'azione umana).

Quindi, come posso migliorare il mio flusso di lavoro per sbarazzarmi di questo passaggio manuale di copia / incolla? Sono aperto ai suggerimenti qui.


hai provato Submodulesfunzionalità di git?
Gopal Patel

Perché stai usando la copia cartacea? Con i collegamenti simbolici dovresti solo avere un clone git nella cartella modman. Quindi modifica sul posto e premi semplicemente.
Kristof a Fooman,

@KristofatFooman Avrei dovuto chiarirlo. Uno degli sviluppatori esegue Windows e quindi abbiamo avuto problemi con i collegamenti simbolici ^^
collegamenti


1
@RaphaelatDigitalPianism per il problema di Windows prova a guardare github.com/sitewards/modman-php
David Manners

Risposte:


8

Molto spesso adotto il seguente approccio che è piuttosto agnostico.

  1. Dai un'occhiata al modulo che desideri modificare /path/to/my/module
  2. Crea un ramo per il tuo lavoro (ramificato dal tag pertinente ecc.).
  3. Impegnati a lavorare in questo ramo (non spingere).
  4. Nel progetto, definire un repository locale per la copia locale del modulo. Questo è così che il tuo progetto può ottenere modifiche non apportate al tuo LFS.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. È quindi possibile compositore richiedere il proprio ramo di sviluppo specifico (così a lungo dire i tuoi progetti minimum-stability consentono).

    composer require namespace/module dev-branch-name-here
  6. Ti impegni /path/to/my/module, composer update namespace/modulenel progetto, a vederlo installare e testare.

  7. Quando hai finito, schiaccia i tuoi impegni e spingi verso l'alto.

Trovo che questo approccio funzioni bene con i moduli M1 funzioni https://github.com/Cotya/magento-composer-installer , poiché l'installazione con collegamento simbolico può essere un problema a volte e farti inciampare quando aggiungi nuove directory o percorsi che non erano precedentemente collegati di modman.

Collegamenti che potrebbero interessare

Debug

  1. Usa composer require namespace/module dev-branch-name-here -vvvper vedere i rami che puoi usare localmente.

  2. Ricontrolla che minimum-stabilityè stato impostato devnel progetto in cui stai installando il modulo.

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

Trovato leggendo il commento di Patrick Schwisow qui .

Se altri pacchetti hanno requisiti sul pacchetto che si sta modificando, il ramo di sviluppo potrebbe non soddisfare tali requisiti (ciò comporterà "I tuoi requisiti non possono essere risolti in un set di pacchetti installabile"). Per risolvere questo problema, puoi fare un alias inline a quello che tutti gli altri pacchetti vedranno come una versione specifica.

In breve puoi aggiornare il tuo composer.jsonper forzarlo a una versione specifica durante lo sviluppo, farlo leggere come:

"namespace/module": "dev-branch-name-here as 1.2.3"

Un altro approccio interessante qui. Grazie per il tuo contributo
Raffaello al Pianismo digitale,

1
Questo è buono. Tendo a usare pathrepository di tipi per i moduli di progetto che non userò più e quindi git o packagist per i moduli che userò di nuovo.
David Manners,

1
@DavidManners Uso questo flusso sopra in combinazione con soddisf. I moduli sono permanentemente soddisfacenti, ma non voglio inserire nulla nella linea principale fino a quando non avrò testato ed eseguito localmente. Quindi usa il flusso di lavoro sopra, quindi premi e tagga e attendi che sia soddisfacente.
Luke Rodgers,

@LukeRodgers, con questo flusso di lavoro non usi affatto modman e tutti i file del tuo modulo sono inseriti in file magento? (non hai la cartella .modman per le tue estensioni). L'ho capito bene?
MployBy

Ehi, @MployBy, non uso direttamente modman. Tuttavia, non sono sicuro che Cotya / Magento-Composer-Installer lo usi sotto il cofano, è passato un po 'di tempo da quando ho impostato un nuovo modulo Magento1.
Luke Rodgers,

6

Sto usando modman con hardcopy qui, nessun collegamento simbolico.

C'è il tuo problema Se non riesci a modificare questa impostazione per le implementazioni del tuo negozio, considera di lavorare su estensioni condivise in un'istanza separata in cui usi modman con collegamenti simbolici.

Uso il compositore con il programma di installazione del compositore AOE per clonare direttamente i repository di estensione .modmanma suppongo che l'installazione dei moduli da Git con modman funzioni. In entrambi i casi puoi lavorare direttamente nel repository Git del modulo.


Sì, come ho detto nei commenti, il motivo è che uno degli sviluppatori usa Windows e IIRC e abbiamo avuto dei problemi con lui usando i
collegamenti

6
Oh, non l'ho visto. Dai a quel dev una VM :)
Fabian Schmengler,

4

Quindi la mia idea qui per te è iniziare a lavorare con il compositore anche per Magento1. Se tu avessi il tuo packagist , che non è troppo difficile da gestire ora che aws e google cloud sono attivi, oppure puoi usare packagist pubblico. Avresti accesso "facile" alle versioni più recenti nei tuoi negozi Magento1.

Ciò significa che quando esce una versione più recente è possibile composer updatee automatizzerà il processo di copia per te.

Dai un'occhiata a https://github.com/Cotya/magento-composer-installer per Magento1 tramite compositore.

Con questo approccio puoi anche lavorare direttamente sul repository git nella cartella del fornitore se lo hai impostato per la copia nel .gite quindi puoi riportare le modifiche ai loro repository senza avere un checkout separato. Tuttavia nota che devi stare attento qui e assicurarti di sapere su quale ramo sei, altrimenti puoi rimuovere il tuo codice (fatto alcune volte).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.