Comment Drush et Jenkins sont-ils utilisés ensemble pour une intégration continue?

30

J'entends souvent les mots à la mode, «intégration continue», «drush» et «jenkins». Ainsi, suscitant mon intérêt.

Comment Drush et Jenkins sont-ils utilisés ensemble pour une intégration continue?

Aussi, pourquoi voudriez-vous utiliser Drush et Jenkins ensemble?

chrisjlee
la source

Réponses:

20

Pour mes projets, j'utilise un script de construction composé de commandes Drush dans un travail Jenkins. J'utilise mon projet Phing Drush Task pour exécuter Drush à partir d'un script de construction Phing . Cela me permet de tirer parti des tâches Phing existantes (par exemple, copie de fichiers, phplint, etc.). Avec l'aide de Drush, ce script de construction

  • Télécharge tout le code non personnalisé (c.-à-d. Le module et les thèmes du noyau et des contributions Drupal) avec Drush Make to./dist
  • Développe les espaces réservés dans une version settings.php(c'est-à-dire remplacer ${db_host}par le nom d'hôte DB réel) tout en le copiant dans le ./dist/sites/defaultdossier fraîchement téléchargé .
  • Copiez des modules et des thèmes personnalisés dans ./dist/sites/all/modules/customet./dist/sites/all/themes/custom
  • Exécuter phplintpour tous les fichiers de mes modules et thèmes personnalisés.
  • Copiez tout sous ./distdans une racine Web préconfigurée.
  • Exécutez drush site-install testinget drush pm-enable simpletestinstallez un nouveau site en utilisant la base de code de construction et capable d'exécuter SimpleTest.
  • Exécuter drush test-runpour exécuter mes suites de tests de modules personnalisés.
  • Courez drush coder-review.

Voici un modèle build.xml commenté pour une utilisation Drush dans Jenkins.

Pierre Buyle
la source
Est-ce à dire que votre environnement CI est sur la même machine que votre serveur php? Je ne comprends pas comment vous réussissez à copier vos propres sources dans sites / all / modules / custom (par exemple). C'est probablement parce que je ne sais pas comment travailler drush ... mais nulle part je ne vois l'équivalent de la tâche scp / ftp de votre plateforme CI à celle de Php.
Jean-Rémy Revy
1
Oui, le serveur CI et le serveur Web desservant le site de test sont sur la même machine. Bien sûr, vous pouvez également copier le fichier de l'espace de travail CI vers l'hôte du serveur Web. La commande rsync de Drush pourrait être utilisée pour cela. Ensuite, Drush peut être utilisé pour exécuter la commande sur la machine hébergeant le serveur Web.
Pierre Buyle
3

Vous pouvez utiliser Phing dans Jenkins, vous pouvez donc utiliser Drush via http://drupal.org/project/phingdrushtask (Pierre Buyle sur SE.COM)

Exemple personnalisé:

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