Concorde 100% com a claudiu-creanga em não comprometer o fornecedor e também evitar executar a instalação do compositor na produção.
A maneira como lidamos com isso é ter uma pasta ativa e uma pasta candidata a lançamento. É na pasta release-candidate que executamos os comandos git pull e a instalação do compositor --no-dev. Nosso processo pode ser resumido assim:
Na pasta release-candidate:
- Verifique se há alterações inesperadas
- Atualizar repositório
- Instalação do compositor
Sincronizar arquivos para a pasta do site ativo
- Na pasta do site ativo:
- Implantar arquivos estáticos
- Ativar modo de manutenção
- Ativar módulos
- Executar scripts de instalação
- Compile DI
- Limpar cache
- Desativar modo de manutenção
- Atualizar permissões
Eu escrevi um artigo de blog mais longo, fornecendo os comandos e o raciocínio por trás disso: https://www.c3media.co.uk/blog/c3-news/deploying-magento-2-production-environment/
ATUALIZAÇÃO: Agora, copiamos o banco de dados ativo para um banco de dados intermediário e o usamos para executar scripts de instalação, implantar arquivos estáticos e compilar todos os DI offline. Isso pode ser implementado para viver, incluindo arquivos pub / estáticos e var. Ainda retiramos o site brevemente se os scripts de instalação estão sendo executados, mas, caso contrário, o site é deixado para cima. Mais detalhes em https://www.c3media.co.uk/blog/c3-news/magento-2-deployment-without-downtime/
ATUALIZAÇÃO: Mudei de idéia sobre o envio da pasta do fornecedor. Ao confirmar a pasta, você obtém a capacidade de rastrear o histórico de como esses arquivos são alterados, ver se você mudou algo acidentalmente e, o mais importante, evitar rodar o compositor no momento da implantação. O último é vital agora que estamos contando com fornecedores externos de repositórios. E se um deles não estiver disponível? De repente, você não pode implantar. As desvantagens são um repositório maior, o risco de cometer hacks principais e o repulsão de desenvolvedores como eu :)