Como lidar com a ativação de novos módulos com Drush via makefile

8

No trabalho, estamos nos movendo para configurar nossos novos sites no git e desenvolver desenvolvimento local. Até agora, criei um arquivo make drush junto com um perfil de instalação, e eu o tenho em script via fantoche, para que, quando um usuário fizer um novo clone de um repositório, ele baixe todos os pacotes e execute uma instalação básica do site. Isso funciona bem.

Agora, minha pergunta é para quando eu preciso usar um novo módulo para um site. Por exemplo, criamos um novo módulo para o site. Eu quero que os outros desenvolvedores retirem do git e tenham o novo módulo instalado automaticamente. Adicioná-lo ao arquivo make drush fará com que ele seja baixado e a execução de 'drush si' fará com que o site seja reinstalado, eliminando todos os dados.

Qual é a melhor maneira de conseguir isso?

Editar

Sinto que não expliquei isso direito. Estou procurando uma maneira de ativar automaticamente os módulos com base nas entradas do makefile no drush. A idéia é que o usuário faça check-out de um projeto e, em seguida, executarei o fantoche 'drush make' e 'drush si' se não houver um arquivo settings.php. O que eu preciso descobrir é para quando, na próxima vez em que o usuário fizer um puxão e adicionarmos um novo módulo, como habilitá-lo automaticamente através de algum script. Se precisar, escrevo algo para analisar o makefile e executar 'drush en' manualmente, mas gostaria de encontrar algo pré-criado para fazer isso.

dragonmantank
fonte
"drush pt" não é o que você deseja?
Sam152
Eu preciso de uma maneira de automatizar isso. 'drush pt' pode ser executado a partir da CLI, mas o que eu quero é uma maneira de determinar quais módulos são novos e habilitá-los automaticamente.
dragonmantank
11
O problema será que ter um módulo presente como um conjunto de arquivos não significa que você deseja que ele esteja ativado. Alguém tem que tomar essa decisão. Por exemplo, se você baixar o Views, também receberá a interface do usuário do Views. Você quer isso ativado ou não? É uma decisão consciente. Portanto, você precisa de uma lista dos módulos e pode estar em um script.
Alfred Armstrong
Desculpe, esqueça isso. Eu meio que entendi o que você quis dizer, embora não tenha certeza do objetivo de tudo isso ser feito através do make.
Alfred Armstrong
11
@AlfredArmstrong a idéia era que, já que eu já tenho que curar o arquivo make, apenas usá-lo de alguma forma. Se eu quiser 'devel' ativado, mas não 'devel_generate', apenas 'devel' entrará no arquivo make. Se mais tarde eu decidisse ativar o 'devel_generate', acrescentaria isso ao arquivo make. Não quero fazer isso apenas com base em quais arquivos estão disponíveis especificamente pelo motivo que você mencionou, por isso preciso controlar isso de alguma forma.
dragonmantank

Respostas:

4

Eu trabalhei para uma empresa que tinha um grande fluxo de dev / stage / prod que tentava automatizar o máximo possível. Tudo tinha que ser feito em código, com script ou usando recursos ou ganchos de atualização.

Basicamente, o que você deseja é ter um módulo personalizado existente para conter ganchos de atualização. Dessa forma, quando um desenvolvedor puxa uma atualização para a base de código, ele executa a atualização do banco de dados e isso pode executar qualquer ativação / desativação do módulo que precise acontecer. Os ganchos de atualização não afetam uma nova instalação, porque supõe-se que o módulo já esteja atualizado quando estiver instalado e executará apenas atualizações mais recentes.

Para resumir:

  1. Continue usando seu perfil de instalação para executar as tarefas de instalação necessárias (ativar módulos, etc.).
  2. Use um módulo "atualização" personalizado que use hook_update_NXXX () para ativar / desativar novos módulos e, de outra forma, manter as tarefas administrativas do seu site sincronizadas.

Aqui está um post que fala sobre uma abordagem semelhante e fornece exemplos de código.

coreyp_1
fonte
1

Esta é uma grande pergunta. drush makeé conveniente para baixar módulos. Não queremos contribuir para o inchaço do módulo. Por aqui, o caso é feito para não se estender makedessa maneira. Talvez o Features seja melhor para gerenciar o estado ativado do módulo do site, bem como outros aspectos de configuração.

Screenack
fonte
1

Considere modificar seu fluxo de trabalho.

Parece que você deseja fazer um trabalho distribuído e "compartilhar" módulos de habilitação e outros valores de configuração ... de alguma forma.

Se você pensar bem, mesmo o Drupal "core" e o Drupal.org não fazem isso. O código é enviado aos módulos Principal e da comunidade, que são executados em um Processo de Construção Contínuo. Drupal.org e muitos projetos usam Jenkins.

Para uma instalação do Jenkins voltada para o desenvolvimento do Drupal, ele também usa o Phing, consulte este repositório do git: http://reload.github.io/jenkins-drupal-template/

Usando o Jenkins, você pode enviar o código ao seu repositório principal do Git e criar o site para um site de demonstração a partir do seu perfil de instalação e dos arquivos de composição de drush. Isso não resolve seu problema exatamente, mas fornece 1 local em que todos pressionam alterações para adicionar / ativar / excluir módulos e, esperamos, que todos vocês não "quebrem a compilação".

Supondo que a compilação não esteja quebrada - é seguro inserir as alterações no sistema de desenvolvimento local.

O servidor Jenkins + Staging ou Development é apenas 1 parte do desenvolvimento.

Seu fluxo de trabalho local pode usar perfis de instalação + makefiles. Considere compartilhar conteúdo usando módulos personalizados com o Migrate se você puder pagar o tempo de geração de conteúdo. Exemplos de compartilhamento de conteúdo com desenvolvedores usando Migrate e uso de Phing podem ser lidos aqui:

http://marzeelabs.org/blog/2014/03/17/coding-as-a-team-content-fixtures/ http://marzeelabs.org/blog/2014/03/03/coding-as-a- automação de equipe usando phing /

Por fim, consulte este PDF em uma sessão do Drupal Camp Ohio 2014 sobre integração contínua e trabalho com sua equipe:

tenken
fonte
1

Para o mesmo propósito, estamos usando o Master . Ele usa o settings.php para fornecer informações sobre o que são os módulos principais. Com um comando simplesdrush master-execute todos os módulos (e suas dependências) ausentes são ativados e os módulos que não são mais usados ​​são desativados.

Atualmente, o módulo não lê as informações do makefile, mas talvez isso possa ser uma opção para uma nova versão.

derhasi
fonte
0

Você pode ativar os módulos manualmente, passando pela opção Módulos ou pelo terminal usando o comando drush

drush en -y modulename1 modulename2 

e assim por diante.

Nitesh Sethia
fonte
Estou procurando uma maneira de automatizar isso com base em makefiles, não apenas como habilitar um módulo manualmente.
dragonmantank
0

Os módulos podem ser ativados de 2 maneiras:

  1. do terminal usando o comando drush :
    A. drush dl modulename- para fazer o download do módulo em primeiro lugar
    B. drush en -y modulename- para ativar o módulo

  2. Utilizando a opção de menu Módulo e ativando o módulo a partir do número de módulos sendo exibidos.

neetu morwani
fonte
Estou procurando uma maneira de automatizar isso com base em makefiles, não apenas como habilitar um módulo manualmente.
precisa
Existem mais algumas maneiras. module_enable()por exemplo. Ou importando um banco de dados preparado.
Leymannx
0

Eu quero alguns isso que tenha certeza. A função make é usada para baixar as diferentes partes do site: módulo, temas e projeto via git. Ao escrever seu perfil de instalação, você está escrevendo no arquivo info os módulos dependentes. O problema é quando você precisa adicionar um novo módulo ao seu perfil de instalação para o perfil existente - estou correto?

Para isso, você precisa usar o hook_update_N quando N representar a atualização do número. O gancho é usado para o módulo que precisa executar ações como: atualizar esquemas, adicionar variáveis ​​e usado para sites e distorção, como o OpenScholar, para ativar novos módulos baixados no site ativo.

Você provavelmente precisará adicionar isso no módulo mais genérico e a função será semelhante a https://github.com/openscholar/openscholar/blob/SCHOLAR-3.x/openscholar/modules/os/os.install#L16

O gancho precisa estar localizado no arquivo module.install. Se você estiver usando a interface do usuário, precisará acessar www.site.com/update.php e, se estiver usando drush, use o comando drush updb.

Roy Segall
fonte
0

Pelo que entendi, o arquivo Drush .make baixa apenas projetos do drupal.org, se você deseja ativar alguns módulos, pode fazer com um perfil de instalação ** (. Install) **. Um perfil de instalação fornece opções, quais módulos você deseja ativar no momento da instalação.

Recentemente, também contribuí com uma distribuição com a ajuda do arquivo .make. Até eu compartilhei toda a experiência do .make aqui . Sei que isso não está relacionado exatamente ao que você está perguntando, mas pode ajudá-lo a entender o que exatamente o arquivo .make faz.

Então, de toda essa tarefa, o que eu entendo, usando .make arquivo você não pode automatizar a ativação do módulo. Para fazer isso, você precisa seguir outra abordagem.

Espero que este URL do fórum possa ajudá-lo. Automação Drupal com script Bash e Drush .

Você precisa escrever algum script bash onde exatamente você usará os comandos Drush.

drush en -y modulename
Pushpinder Rana
fonte