¿Cómo se usan drush y jenkins juntos para una integración continua?

30

Escucho las palabras de moda, "integración continua", "drush" y "jenkins" a menudo. Por lo tanto, despertó mi interés.

¿Cómo se usan drush y jenkins juntos para una integración continua?

Además, ¿por qué querrías usar drush y jenkins juntos?

chrisjlee
fuente

Respuestas:

20

Para mis proyectos, uso un script de compilación hecho de comandos Drush en un trabajo de Jenkins. Uso mi proyecto de tarea Phing Drush para ejecutar Drush desde un script de compilación Phing . Esto me permite aprovechar las tareas de Phing existentes (por ejemplo, copia de archivos, phplint, etc.). Con la ayuda de Drush, este script de compilación

  • Descarga todo el código no personalizado (es decir, módulos y temas principales de Drupal y contribs) con Drush Make para./dist
  • Expande los marcadores de posición en una versión settings.php(es decir, reemplácela ${db_host}con el nombre de host de la base de datos real) mientras la copia a la ./dist/sites/defaultcarpeta recién descargada .
  • Copie módulos y temas personalizados a ./dist/sites/all/modules/customy./dist/sites/all/themes/custom
  • Ejecutar phplintpara todos los archivos de mis módulos y temas personalizados.
  • Copie todo en ./distun raíz web preconfigurado.
  • Ejecute drush site-install testinge drush pm-enable simpletestinstale un sitio nuevo utilizando la base del código de compilación y pueda ejecutar SimpleTest.
  • Ejecutar drush test-runpara ejecutar mis conjuntos de pruebas de módulos personalizados.
  • Ejecutar drush coder-review.

Aquí hay una plantilla build.xml comentada para el uso de Drush en Jenkins.

Pierre Buyle
fuente
¿Eso significa que su entorno de CI está en la misma máquina que su servidor php? No entiendo cómo logras copiar tus propias fuentes en sitios / todos / módulos / personalizados (por ejemplo). Esto probablemente se deba a que no sé cómo funciona drush ... pero en ninguna parte veo el equivalente de la tarea scp / ftp de su plataforma CI a Php uno.
Jean-Rémy Revy
1
Sí, el servidor CI y el servidor web que sirve el sitio de prueba están en la misma máquina. Por supuesto, también podría copiar el archivo desde el espacio de trabajo de CI al host del servidor web. El comando rsync de Drush podría usarse para esto. Luego, Drush se puede usar para ejecutar comandos en la máquina que aloja el servidor web.
Pierre Buyle el
3

Puede usar Phing en Jenkins, por lo que puede usar Drush a través de http://drupal.org/project/phingdrushtask (Pierre Buyle en SE.COM)

Ejemplo personalizado:

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