Magento 2 como requisito de desenvolvimento do compositor para extensões

8

Ao escrever uma extensão, faria sentido adicionar magento/project-community-editionà require-devseção do compositor.json?

A idéia por trás disso é que seria necessário apenas uma composer installinstalação completa do Magento para desenvolvimento ou IC.

Para configurar o banco de dados, eu adicionaria um script pós-instalação com bin/magento setup:install.

Para usar as ferramentas de teste, você precisa copiar as seções autoload-deve require-devde magento/project-community-editionporque elas são usadas apenas a partir da raiz, não dos requisitos.

Uma desvantagem que vejo é que você precisaria alterar a versão necessária para testar em mais de duas versões diferentes (duas porque você pode especificar um intervalo e instalar uma vez com ele --prefer-lowest), mas isso é relativamente fácil de solucionar.

Mais alguma coisa que eu preciso considerar?

Fabian Schmengler
fonte

Respostas:

4

A resposta depende das necessidades do seu IC.

Atualmente, para testes de unidade, estou analisando a abordagem para incluir apenas na seção require os módulos reais do Magento que tenho como dependência direta (que eu recebo quase todos os módulos dessa maneira, de qualquer maneira, é para o Magento resolver):

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

Isso funciona bem para uma das minhas extensões, veja Travis aqui, mas está enfrentando um problema interessante em outra extensão em que o Magento deve gerar automaticamente uma interface para obter detalhes simulados aqui.

Se você está procurando além dos testes de unidade, acho que faz sentido ter um ambiente Magento pré-construído no qual você instala a extensão, em vez de executar um script de instalação para o ambiente Magento em todas as compilações.

Kristof na Fooman
fonte
1

Parece razoável. 2 pontos a serem lembrados:

  1. A instalação via compositor leva bastante tempo
  2. Quando você tem vários módulos, é bastante desconfortável dar suporte / manipular o procedimento de instalação no CI com scripts exclusivos para cada módulo. Quando você precisar alterar algo aqui, precisará alterar todas as extensões que possui.

Uma das maneiras de evitá-lo é manter tudo relacionado à criação no IC em um repositório separado e incluí-lo em módulos como sub-repositórios.


Postado em nome de Peter Samoilov do aheadWorks, pois ele não está no StackExchange. :)

Alexander Galtsow
fonte
1

Faz sentido incluir apenas os módulos Magento que seu módulo exige:

  • É claro para todos que o instalam do que depende, toda a edição da comunidade é muito ampla.
  • Você provavelmente deseja testá-lo principalmente na unidade (e alguns testes de integração), para que não precise de uma loja virtual em funcionamento.
  • Os testes funcionais podem ser criados no seu repositório principal de lojas virtuais, pois faz mais sentido usar um front-end e também depende de toda a estrutura como coisas interconectadas.

Basicamente, seu próprio módulo não depende de toda a edição da comunidade, depende apenas de uma parte dele, e é isso que especificar. Dessa forma, você ainda pode testá-lo, mas também mantenha claro quais são as dependências.

stefandoorn
fonte
0

Também não tenho certeza sobre isso. Minha primeira abordagem será instalar o magento2 a partir de uma imagem do docker para executar todos os testes.

Isso fornecerá um ambiente de teste em execução em pouco tempo, mas você precisará criar uma configuração mais específica da compilação do que instalar tudo via compositor, eu acho.

David Verholen
fonte