Wie werden Drush und Jenkins für die kontinuierliche Integration zusammen verwendet?

30

Ich höre oft die Schlagworte "kontinuierliche Integration", "Drush" und "Jenkins". So weckte ich mein Interesse.

Wie werden Drush und Jenkins für die kontinuierliche Integration zusammen verwendet?

Warum sollten Sie Drush und Jenkins zusammen verwenden?

chrisjlee
quelle

Antworten:

20

Für meine Projekte verwende ich ein Erstellungsskript aus Drush-Befehlen in einem Jenkins-Job. Ich verwende mein Phing Drush Task- Projekt, um Drush über ein Phing- Build-Skript auszuführen . Auf diese Weise kann ich die vorhandenen Phing-Aufgaben (z. B. Kopieren von Dateien, Phplint usw.) nutzen. Mit Hilfe von Drush dieses Build-Skript

  • Lädt den gesamten nicht benutzerdefinierten Code (dh Drupal-Kern und Beiträge zu Modulen und Themen) mit Drush Make to herunter./dist
  • Erweitert Platzhalter in einer versionierten Datei settings.php(dh durch ${db_host}den tatsächlichen DB-Hostnamen ersetzen ), während sie in den frisch heruntergeladenen ./dist/sites/defaultOrdner kopiert werden .
  • Kopieren Sie benutzerdefinierte Module und Designs nach ./dist/sites/all/modules/customund./dist/sites/all/themes/custom
  • Führen Sie phplintfür alle Dateien aus meinen benutzerdefinierten Modulen und Themen.
  • Kopieren Sie alles unter ./distauf eine vorkonfigurierte Webroot.
  • Führen Sie eine neue Site aus drush site-install testingund drush pm-enable simpletestinstallieren Sie sie mithilfe des Build-Codes, um SimpleTest auszuführen.
  • Ausführen drush test-run, um meine benutzerdefinierten Modultestsuiten auszuführen.
  • Rennen drush coder-review.

Hier ist eine kommentierte build.xml-Vorlage für die Verwendung von Drush in Jenkins.

Pierre Buyle
quelle
Bedeutet das, dass sich Ihre CI-Umgebung auf demselben Computer befindet wie Ihr PHP-Server? Ich verstehe nicht, wie Sie es schaffen, Ihre eigenen Quellen in sites / all / modules / custom (zum Beispiel) zu kopieren. Dies ist wahrscheinlich, weil ich nicht weiß, wie Arbeit drush ... aber nirgendwo sehe ich eine Entsprechung von SCP / FTP-Aufgabe von Ihrem CI Plateform zu PHP.
Jean-Rémy Revy
1
Ja, der CI-Server und der Webserver, der die Testsite bedient, befinden sich auf demselben Computer. Natürlich können Sie die Datei auch vom CI-Arbeitsbereich auf den Webserver-Host kopieren. Hierfür könnte der Befehl rsync von Drush verwendet werden. Anschließend kann mit Drush der Befehl auf dem Computer ausgeführt werden, auf dem sich der Webserver befindet.
Pierre Buyle
3

Sie können Phing in Jenkins verwenden, also können Sie Drush über http://drupal.org/project/phingdrushtask (Pierre Buyle auf SE.COM) verwenden.

Benutzerdefiniertes Beispiel:

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