Wie man mit Continuous Integration (CI) für Drupal 7 beginnt
Continuous Integration (CI) hilft dabei, den Testprozess in der Drupal 7 Webentwicklung zu automatisieren. Obwohl die Drupal-Gemeinschaft zahlreiche Ressourcen über die Vorteile von CI bietet, konzentriert sich dieses Tutorial auf die Einrichtung einer vollständigen CI-Umgebung auf CentOS 7. Wir werden durch die Einrichtung von Jenkins gehen und das grundlegende Testen von Drupal-Seiten implementieren.
Systemvoraussetzungen
Unser Tutorial verwendet CentOS 7 als Basisbetriebssystem. Beginnen wir mit der Installation der notwendigen Komponenten.
Java installieren
Zuerst müssen wir Java installieren, das für Jenkins erforderlich ist:
yum install java -y
Jenkins installieren
# Jenkins Repository hinzufügen
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# Jenkins Repository-Schlüssel importieren
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# Jenkins installieren und konfigurieren
yum install jenkins -y
chkconfig jenkins on
service jenkins start
Firewall konfigurieren
Für CentOS 7 konfigurieren wir firewalld, um Jenkins Zugang zu gewähren. Es wird empfohlen, den Zugang auf vertrauenswürdige IPs zu beschränken:
# Vertrauenswürdige IP zur Firewall-Zone hinzufügen
firewall-cmd --permanent --zone=trusted --add-source=VERTRAUENSWÜRDIGE_IP_ADRESSE
# Portzugriff konfigurieren
firewall-cmd --zone=trusted --add-port=8080/tcp --permanent
firewall-cmd --reload
# Konfiguration überprüfen
firewall-cmd --get-active-zones
Datenbank einrichten
Installieren und konfigurieren Sie MariaDB:
# MariaDB installieren
yum install mariadb-server
service mariadb start
chkconfig mariadb on
# Installation absichern
/usr/bin/mysql_secure_installation
phpMyAdmin installieren
# EPEL Repository und phpMyAdmin installieren
yum install epel-release
yum install phpmyadmin
# Zugriffskontrolle konfigurieren
nano /etc/httpd/conf.d/phpMyAdmin.conf
Aktualisieren Sie die phpMyAdmin-Konfiguration, um den Zugriff auf Ihre IP zu beschränken:
# Ersetzen Sie IHRE_IP_ADRESSE durch Ihre tatsächliche IP
Require ip IHRE_IP_ADRESSE
Allow from IHRE_IP_ADRESSE
Starten Sie Apache neu, um die Änderungen anzuwenden:
systemctl restart httpd.service
PHP und Entwicklungstools
Installieren Sie PHP und die erforderlichen Abhängigkeiten:
yum install epel-release
yum install php php-devel php-gd php-ldap php-mysql php-pear php-mcrypt \
php-tidy php-xml php-xmlrpc php-mbstring php-snmp php-soap php-xml \
php-common curl curl-devel perl-libwww-perl ImageMagick libxml2 \
libxml2-devel mod_fcgid php-cli httpd-devel git
Entwicklungsabhängigkeiten installieren
Richten Sie PEAR, Composer und andere Tools ein:
# Installieren Sie PEAR und Phing
pear channel-discover pear.phing.info
pear install --alldeps phing/phing
pear install HTTP_Request2
# Installieren Sie Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# Installieren Sie Drush
pear channel-discover pear.drush.org
pear install drush/drush
Code-Qualitätstools installieren
Richten Sie Coder und PHP_CodeSniffer für Drupal 7 ein:
# Installieren Sie Coder und PHP_CodeSniffer
composer global require drupal/coder:\<8
composer global require squizlabs/PHP_CodeSniffer:\<2
# Konfigurieren Sie PHP_CodeSniffer
ln -s ~/.composer/vendor/bin/phpcs /usr/local/bin
ln -s ~/.composer/vendor/bin/phpcbf /usr/local/bin
phpcs --config-set installed_paths ~/.composer/vendor/drupal/coder/coder_sniffer
# Installieren Sie Drupal Coder
cd /root
wget http://ftp.drupal.org/files/projects/coder-7.x-2.4.tar.gz
tar xvf coder-7.x-2.4.tar.gz
Überprüfen Sie die Installation:
phpcs --version
phpcs -i # Sollte Drupal in den verfügbaren Standards auflisten
Einrichten des Jenkins-Projekts
1. Zugriff auf Jenkins unter `http://hostname:8080`
2. Sicherheitseinstellungen konfigurieren:
- Sicherheit aktivieren
- Projektbasierte Matrixberechtigung einrichten
- Ein Administratorkonto erstellen
3. Erforderliche Plugins installieren:
- Phing Plugin
- PHP Plugin
- Git Plugin (GitHub oder GitLab)
Ihr erstes Projekt erstellen
1. Erstellen Sie ein neues Freestyle-Projekt namens "drupaltest"
2. Richten Sie die Arbeitsbereichsstruktur ein:
```bash
cd /var/lib/jenkins/workspace/drupaltest
mkdir docroot scripts make reports
chown -R jenkins:jenkins *
chmod 0755 -R *
Erstellen von Build-Skripten
Erstellen Sie das PHP-Syntaxprüfungsskript (`scripts/build-syntaxcheck.xml`):
<?xml version="1.0"?>
<project name="phpsyntaxcheck" default="syntaxcheck_php">
<target name="syntaxcheck_php" description="Führt die PHP-Syntaxprüfung auf dem Projekt-Docroot aus.">
<fileset dir="../docroot" id="phpfiles">
<include name="*.php" />
<include name="**/*.php" />
<include name="**/*.inc" />
<include name="**/*.module" />
<include name="**/*.install" />
<include name="**/*.profile" />
<include name="**/*.test" />
</fileset>
<phplint haltonfailure="true">
<fileset refid="phpfiles" />
</phplint>
</target>
</project>
Erstellen Sie das Drupal-Coding-Standards-Prüfskript (`scripts/build-drupalstandards.xml`):
<?xml version="1.0"?>
<project name="phpcodesniffer" default="phpcs">
<target name="phpcs">
<fileset dir="../docroot" id="drupalfiles">
<include name="sites/all/modules/**/*.php" />
<include name="sites/all/modules/**/*.inc" />
<include name="sites/all/modules/**/*.module" />
<include name="sites/all/modules/**/*.install" />
<include name="sites/all/themes/**/*.php" />
<include name="sites/all/themes/**/*.inc" />
</fileset>
<phpcodesniffer standard="Drupal" format="checkstyle">
<fileset refid="drupalfiles" />
<formatter type="checkstyle" outfile="../reports/checkstyle.xml"/>
</phpcodesniffer>
</target>
</project>
Konfigurieren des Jenkins-Builds
1. Fügen Sie Phing-Build-Schritte hinzu:
- Erstes Ziel: `syntaxcheck_php` mit Build-Datei `$WORKSPACE/scripts/build-syntaxcheck.xml`
- Zweites Ziel: `phpcs` mit Build-Datei `$WORKSPACE/scripts/build-drupalstandards.xml`
2. Fügen Sie eine Post-Build-Aktion hinzu:
- Konfigurieren Sie den Checkstyle-Berichtspfad: `reports/checkstyle.xml`
Und drücken Sie BAUEN! Ihr erster CI-Test sollte jetzt starten! Sie können Ihre Build-Ergebnisse auf der Statusseite des Projekts und die Details jedes Builds auf der Build-Seite in der Konsolenausgabe überprüfen.
Wichtige Hinweise
- Für größere Projekte müssen Sie möglicherweise das PHP-Speicherlimit und die Ausführungszeit in php.ini erhöhen
- Testen Sie Ihre CI-Konfiguration immer zuerst in einer Entwicklungsumgebung
- Regelmäßige Wartung Ihres CI-Servers ist wichtig für eine optimale Leistung
- Erwägen Sie die Implementierung einer automatisierten Bereitstellung in zukünftigen Iterationen
