Como o drush e o jenkins são usados ​​juntos para integração contínua?

30

Eu ouço as palavras da moda, "integração contínua", "drush" e "jenkins" frequentemente. Assim, despertando meu interesse.

Como o drush e o jenkins são usados ​​juntos para integração contínua?

Além disso, por que você gostaria de usar drush e jenkins juntos?

chrisjlee
fonte

Respostas:

20

Para meus projetos, eu uso um script de construção feito de comandos Drush em um trabalho Jenkins. Eu uso meu projeto de tarefa Phing Drush para executar o Drush a partir de um script de construção do Phing . Isso me permite aproveitar as tarefas existentes do Phing (por exemplo, cópia de arquivos, phplint etc.). Com a ajuda do Drush, este script de construção

  • Faz o download de todo o código não personalizado (por exemplo, módulo e temas do Drupal e do Contribs ) com o Drush Make para./dist
  • Expande espaços reservados em uma versão settings.php(ou seja, substitua ${db_host}pelo nome do host do banco de dados real) enquanto o copia para a ./dist/sites/defaultpasta recém-baixada .
  • Copie módulos e temas personalizados para ./dist/sites/all/modules/custome./dist/sites/all/themes/custom
  • Executar phplintpara todos os arquivos dos meus módulos e temas personalizados.
  • Copie tudo ./distpara um webroot pré-configurado.
  • Execute drush site-install testinge drush pm-enable simpletestinstale um site novo usando a base de código de compilação e capaz de executar o SimpleTest.
  • Executar drush test-runpara executar meus conjuntos de testes de módulo personalizado.
  • Corra drush coder-review.

Aqui está um modelo build.xml comentado para uso do Drush no Jenkins.

Pierre Buyle
fonte
Isso significa que seu ambiente de IC está na mesma máquina que o servidor php? Não entendo como você consegue copiar suas próprias fontes em sites / all / modules / custom (por exemplo). Provavelmente é porque eu não sei como funciona o drush ... mas em nenhum lugar vejo equivalente da tarefa scp / ftp do CI Plateform ao Php one.
Jean-Rémy Revy
1
Sim, o servidor de IC e o servidor da web que serve o site de teste estão na mesma máquina. Obviamente, você também pode copiar o arquivo da área de trabalho do IC para o host do servidor da web. O comando rsync do Drush pode ser usado para isso. Em seguida, o Drush pode ser usado para executar o comando na máquina que hospeda o servidor da web.
Pierre Buyle
3

Você pode usar o Phing no Jenkins, para usar o Drush em http://drupal.org/project/phingdrushtask (Pierre Buyle no SE.COM)

Exemplo personalizado:

 <drush command='cc' root="${project.drupal.core.dir}" uri="${env.host.name}" assume="yes">
  <param>all</param>
</drush>
Pol Dellaiera
fonte