Magento 1: melhorando o fluxo de trabalho de desenvolvimento do meu módulo (Modman, compositor, git)

14

Isso é algo que eu tenho em mente há algum tempo, mas não consigo encontrar o método certo para fazê-lo.

Então, basicamente, estou trabalhando com 6 sites diferentes, todos rodando o Magento CE 1.9.2+

Nesses sites, estou usando várias extensões que eu e a equipe com quem trabalho desenvolvemos (aqui estamos falando de mais de 50 extensões) e o código para essas extensões é armazenado no Bitbucket. Portanto, não sou a única pessoa que gerencia essas extensões, somos três pessoas trabalhando nelas.

No momento, quando quero adicionar um recurso / corrigir um bug em uma dessas extensões, eis o meu fluxo de trabalho:

  • Instale a última versão da extensão em um dos sites via Modman
  • Corrija o erro / adicione um recurso / teste
  • Copie manualmente as alterações para uma pasta local que contém todas as minhas extensões
  • Confirme e envie via GIT desta pasta de extensão para o Bitbucket (1 repositório Bitbucket por módulo)
  • Em seguida, a nova versão do módulo pode ser instalada via Modman

Nota importante: Estou usando o modman com cópia impressa aqui, sem link simbólico.

Meu maior problema foi destacado em negrito: quero poder pular esta etapa porque é uma grande causa de problemas (às vezes, alguns arquivos são esquecidos, copiar / colar incorretamente, envolve ação humana).

Então, como posso melhorar meu fluxo de trabalho para me livrar dessa etapa manual de copiar / colar? Estou aberto a sugestões aqui.

Raphael na Digital Pianism
fonte
você já tentou o Submodulesrecurso do git?
Gopal Patel
Por que você está usando uma cópia impressa? Com links simbólicos, você deve ter apenas um clone do git na pasta modman. Em seguida, basta editar no local e simplesmente pressionar.
Kristof em Fooman
@KristofatFooman Eu deveria ter esclarecido isso. Um dos dev está executando o Windows e, portanto, tivemos problemas com links simbólicos ^^
Raphael em Digital pianismo
1
@RaphaelatDigitalPianism para o Windows problema tente olhar para github.com/sitewards/modman-php
David Manners

Respostas:

8

Costumo seguir a seguinte abordagem, que é bastante independente da estrutura.

  1. Confira o módulo para o qual você deseja editar /path/to/my/module
  2. Crie um ramo para o seu trabalho (ramificado da etiqueta relevante, etc.).
  3. Confirme o trabalho neste ramo (não empurre).
  4. No seu projeto, defina um repositório local para sua cópia local do módulo. Isso é para que seu projeto possa obter alterações não pressionadas do seu LFS.

    {
        "repositories": [
        {
            "type": "path",
            "url": "/path/to/my/module"
        }
    ],
  5. Você pode, então, o compositor exigir seu ramo de desenvolvimento específico (desde que seus projetos minimum-stabilitypermitam).

    composer require namespace/module dev-branch-name-here
  6. Você se compromete /path/to/my/module, composer update namespace/moduleno projeto, a vê-lo instalar e testar.

  7. Quando você terminar, esmague seus commits e empurre para cima.

Acho que essa abordagem funciona bem para os módulos M1 usando o https://github.com/Cotya/magento-composer-installer , pois a instalação com link simbólico pode ser um problema às vezes e faz com que você desista de adicionar novos diretórios ou caminhos que anteriormente não eram linkados por modman.

Links que podem interessar

Depuração

  1. Use composer require namespace/module dev-branch-name-here -vvvpara ver os ramos que você pode usar localmente.

  2. Verifique novamente que minimum-stabilityfoi definido devno projeto em que você está instalando o módulo.

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

Encontrado lendo o comentário de Patrick Schwisow aqui .

Se outros pacotes tiverem requisitos no pacote que você está alterando, seu ramo de desenvolvimento poderá não atender a esses requisitos (o que resultará em "Seus requisitos não puderam ser resolvidos para um conjunto instalável de pacotes"). Para corrigir isso, você pode fazer um alias embutido para que todos os outros pacotes o vejam como uma versão específica.

Em suma, você pode atualizar o seu composer.jsonpara forçá-lo a uma versão específica durante o desenvolvimento, fazê-lo ler como:

"namespace/module": "dev-branch-name-here as 1.2.3"
Luke Rodgers
fonte
Outra abordagem interessante aqui. Obrigado pela sua contribuição
Raphael no Digital Pianism
1
Essa é boa. I tendem a usar pathrepos tipo para os módulos do projeto que eu não vou reutilização e vou voltar a usar, em seguida, git ou packagist para módulos.
David Manners
1
@DavidManners Eu uso esse fluxo acima em combinação com satis. Os módulos estão permanentemente satisfeitos, mas não quero colocar nada na linha principal até testar e executar localmente. Portanto, use o fluxo de trabalho acima e, em seguida, pressione e identifique e aguarde satis para buscá-lo.
Luke Rodgers
@LukeRodgers, com esse fluxo de trabalho você não usa o modman e todos os arquivos de seu módulo são colocados dentro de arquivos magento? (você não possui uma pasta .modman para suas extensões). Eu entendi direito?
MployBy
Hey @MployBy, eu não uso o modman diretamente. No entanto, não tenho certeza se o Cotya / magento-compositer-installer o usa sob o capô, já faz um tempo desde que eu configurei um novo módulo magento1.
Luke Rodgers
6

Estou usando o modman com cópia impressa aqui, sem link simbólico.

Esse é o seu problema. Se você não pode alterar essa configuração para as implantações de sua loja, considere trabalhar em extensões compartilhadas em uma instância separada em que você usa o modman com links simbólicos.

Eu uso o compositor com o instalador do AOE para clonar os repositórios de extensão diretamente, .modmanmas a instalação de módulos do Git com modman também funciona. De qualquer maneira, você pode trabalhar diretamente no repositório do módulo Git.

Fabian Schmengler
fonte
Sim, como eu disse nos comentários, a razão é um dos usos dev Windows e IIRC tivemos alguns problemas com ele usando links simbólicos
Raphael em Digital pianismo
6
Oh, eu não vi isso. Dê a esse dev uma VM :)
Fabian Schmengler
4

Então, minha idéia aqui para você é começar a trabalhar com o compositor, mesmo para o Magento1. Se você possui seu próprio packagist , que não é muito difícil de gerenciar agora que o aws e o google cloud estão no lugar, ou você pode usar o packagist público. Você teria acesso "fácil" a versões mais recentes em suas lojas Magento1.

Isso significa que, quando uma versão mais recente for lançada, você poderá composer updatee automatizará o processo de cópia para você.

Dê uma olhada no https://github.com/Cotya/magento-composer-installer para Magento1 via compositor.

Com essa abordagem, você também pode trabalhar diretamente no repositório git na pasta vendor, se você o tiver configurado para copiar .gite, assim, for possível retornar as alterações aos seus repositórios sem fazer uma verificação separada. Porém, observe que você deve ter cuidado aqui e não se esqueça de saber em qual filial você está, caso contrário, poderá remover seu código (feito isso algumas vezes).

David Manners
fonte