In einem früheren Artikel haben wir die Installation von Jenkins durchlaufen und alles vorbereitet, um loszulegen. Wir werden in diesem Artikel fortgesetzt, indem wir unser Projekt tatsächlich vorbereiten. Wenn Sie ein Jenkins -Setup vor zuvor haben, müssen Sie den vorherigen Teil nicht durchgehen - Sie können diesen ziemlich gut verfolgen.
Wir werden unser Projekt zuerst vorbereiten. Wir könnten das von Sebastian Bergmann gelieferte Projekt nutzen, aber es ist eher ein grundlegendes Projekt und wird ohne Probleme in Jenkins laufen. In diesem Artikel werden wir ein anderes Repository verwenden, in dem wir einige Hürden überwinden müssen. Wir werden eine Gabel von JumpH als unsere Grundlage verwenden.
In erster Linie müssen wir sicherstellen, dass wir Tools wie Phpunit und PHP-CodesNiffere zur Verfügung haben. Wir können dies auf zwei verschiedene Arten tun. Entweder installieren wir die Pakete auf unserem Jenkins -Server über PEAR oder Composer weltweit oder definieren die Abhängigkeiten in unserer Datei Composer.json. Ich habe mich für die letztere Methode entschieden, damit wir die Version dieser Tools auf unserer eigenen lokalen Maschine sowie auf Jenkins problemlos steuern können. Daher fügen wir zunächst die folgenden Zeilen zur Datei composer.json hinzu und führen die Composer -Aktualisierung aus.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
Wenn Sie mehr darüber erfahren möchten, was jedes Paket tut, sehen Sie sich Brunos Artikel über PHP -QA -Tools an.
Auf unserem Jenkins -Server werden wir Ant verwenden. Wenn Ants auf Ihrem Server noch nicht installiert ist, stellen Sie sicher, dass dies den folgenden Befehl ausführt.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
Ant hilft Ihnen, den Software -Erstellungsprozess zu automatisieren. Sie definieren in der Konfigurationsdatei Aufgaben, die als Ziele bezeichnet werden. Ant lautet diese Datei und führt die entsprechende Aktion aus. Sie können Abhängigkeiten definieren, um anzuzeigen, in welcher Reihenfolge Ameise diese Aufgaben ausführen sollte. Die Konfigurationsdatei ist die sogenannte Build.xml -Datei. Wir werden dies zu unserem Projekt hinzufügen, damit Ant diese Aufgaben auf unserem Jenkins -Server ausführen kann. Wir werden die von Sebastian Bergmann bereitgestellte Vorlage verwenden, die hier zu finden ist. Wir fügen dies zur Wurzel unseres Projekts hinzu.
Um Ameise auszuführen, können Sie Ameise Build in der Befehlszeile starten. Dies bedeutet, dass Ameise das Build -Ziel ausführt. Wenn kein Parameter angegeben ist, wird das Ziel das Ziel ausgeführt, wie in der Konfiguration als Standard angegeben, was in diesem Fall ebenfalls erstellt wird.
Schauen wir uns das Build -Ziel genauer an.
sudo apt-get install ant
Das Ziel ist leer, es hängt jedoch von vielen anderen Zielen ab. Es wird zuerst das Vorbereitungsziel ausführen und dann mit dem Lint -Ziel fortgesetzt, bis jedes Ziel ausgeführt wurde. Schauen wir uns zum Beispiel das PHPLOC-CI-Ziel an.
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>
Dieses Ziel ist ziemlich leicht zu verstehen. Sie werden feststellen, dass es vom Ziel vorbereiten. Da das bereits vom Build -Ziel betrieben wurde, wird es nicht wieder laufen. Dann erhalten wir die ausführbare Datei, die PHPLOC ist, die von ANT ausgeführt wird. Sie haben dies früher mit Composer installiert. Zuletzt werden wir die pHPLOC -spezifischen Argumente sehen. Ant wird die folgende Befehlszeileneingabe basierend auf dieser Zielkonfiguration ausführen.
<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span> </span> <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span> </span> <span><span><span><arg</span> value<span>="--count-tests"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-csv"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span> </span> <span><span><span></exec</span>></span> </span><span><span><span></target</span>></span></span>
Die $ {toolsdir} und $ {basiert} sind 2 Variablen. Abhängig davon, wie sie konfiguriert sind, haben sie möglicherweise einen Einfluss auf die Gesamterleitungsausgabe
Wie oben angegeben, sollten Sie, wenn Sie nur dieses Ziel auslösen wollten, Ant-Phploc-Ci in der Befehlszeile ausführen.
Beachten Sie, dass dieser pHPLOC -Befehl eine Phploc.csv -Datei und eine Phploc.xml -Datei ausgibt. Die in Jenkins früher installierten Plugins lesen diese Dateien und konvertieren sie beispielsweise in Diagramme. Im nächsten Artikel werden wir tiefer in dieses Thema eintauchen.
Wenn Sie die gesamte Datei cuild.xml durchsehen, werden Sie feststellen, dass sie von 3 anderen separaten Konfigurationsdateien für bestimmte Tools abhängt. bauen/phpmd.xml, bauen/phpdox.xml und bauen/phpunit.xml. Diese Konfigurationsdateien werden von den tatsächlichen Tools angefordert. Um mehr herauszufinden, schauen Sie sich ihre jeweiligen Dokumente an.
Beachten Sie, dass phpunit.xml stark von der ursprünglichen Datei phpunit.xml.dist von Symfony2 inspiriert ist, da wir uns mit einem Symfony2 -Projekt befassen.
Also, sind wir fertig? Leider noch nicht. Die Datei "Build.xml" ist sehr allgemein und nicht vollständig für unser Projekt geeignet. Zuerst müssen wir definieren, wo Werkzeuge wie Phpunit gefunden werden können. Unser Komponist hat diese automatisch im Bin -Verzeichnis im Stammverzeichnis unseres Projekts installiert. Wir müssen die ToolsDir -Eigenschaft auf den richtigen Wert ändern.
"require-dev": { "squizlabs/php_codesniffer": "~1.5.*", "phpmd/phpmd": "~2.1.*", "sebastian/phpcpd": "~2.0.*", "pdepend/pdepend": "~2.0.*", "phploc/phploc": "~2.0.*", "phpunit/phpunit": "~4.3.*", "theseer/phpdox": "~0.7.*", },
Wir können auch mehrere Befehle aufräumen. Die aktuelle Datei "Build.xml" definiert, dass wir einesseits ein SRC -Verzeichnis und andererseits ein Testverzeichnis haben. Da Symfony2 Tests im SRC -Verzeichnis enthält, können wir alle Pfade in das Testverzeichnis wie dieses Beispiel entfernen.
sudo apt-get install ant
Obwohl es nicht erforderlich ist, ziehe ich es vor, alles so sauber wie möglich zu halten, damit es unserem Projekt richtig entspricht.
Schließlich funktioniert die aktuelle Konfiguration für PHPDOX, wie in der Datei "Build.xml" angegeben, während dieses Artikel in meinem Fall nicht mit der neuesten Version funktioniert. Ich habe das Ziel wie unten geändert, so dass es unsere Konfigurationsdatei korrekt liest.
<span><span><span><target</span> name<span>="build"</span> depends<span>="prepare,lint,phploc-ci,pdepend,phpmd-ci,phpcs-ci,phpcpd-ci,phpunit,phpdox"</span> description<span>=""</span>/></span></span>
Es wurde alles eingerichtet, um sicherzustellen, dass alle unsere QA -Tools wie erwartet ausgeführt werden. Unser Projekt ist jedoch nur etwas komplizierter. Wenn Sie das Repository analysiert haben, werden Sie feststellen, dass Abhängigkeiten von Composer und Bower reguliert werden. Da es sich um ein Symfony -Projekt handelt, benötigen wir auch eine Standardparameter.yml -Datei. Wir müssen uns mit diesen Anforderungen befassen, um das Projekt korrekt auf Jenkins einzurichten.
Beginnen wir mit der Datei parameter.yml. Wir können mit dem Standardinhalt von Parametern.yml.dist arbeiten, also werden wir diese Datei nur kopieren. Wir erstellen zunächst ein neues Ziel mit dem Namen Copy-Parameters, das den CP-Befehl ausführt.
<span><span><span><target</span> name<span>="phploc-ci"</span> depends<span>="prepare"</span> description<span>="Measure project size using PHPLOC and log result in CSV and XML format. Intended for usage within a continuous integration environment."</span>></span> </span> <span><span><span><exec</span> executable<span>="${toolsdir}phploc"</span>></span> </span> <span><span><span><arg</span> value<span>="--count-tests"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-csv"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.csv"</span>/></span> </span> <span><span><span><arg</span> value<span>="--log-xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/build/logs/phploc.xml"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/src"</span>/></span> </span> <span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span> </span> <span><span><span></exec</span>></span> </span><span><span><span></target</span>></span></span>
Als nächstes stehen Komponist und Bower. Ich habe mich entschlossen, diese auf dem Jenkins -Server global zu installieren, indem ich die folgenden Befehle ausführte.
phploc --count-tests --log-csv /build/logs/phploc.csv --log-xml /build/logs/phploc.xml /src /tests
[Ed: Beachten Lassen Sie uns nun ein Ziel für den Komponisten erstellen.
Es ist wichtig, Symfony_env zu testen, damit Symfony weiß, dass es sein Test -Cache -Verzeichnis löschen muss.
<span><span><span><property</span> name<span>="toolsdir"</span> value<span>="bin/"</span> /></span></span>
lass uns mit Bower fortfahren.
Das letzte, was wir tun müssen, ist, dass diese Ziele ausgeführt werden. Deshalb ändern wir das Build -Ziel und fügen die 3 neu erstellten Ziele in der Reihenfolge hinzu, die wir ausführen möchten.
<span><span><span><arg</span> path<span>="${basedir}/tests"</span>/></span></span>
git
<span><span><span><target</span> name<span>="phpdox"</span> depends<span>="phploc-ci,phpcs-ci,phpmd-ci"</span> description<span>="Generate project documentation using phpDox"</span>></span> </span> <span><span><span><exec</span> executable<span>="${toolsdir}phpdox"</span>></span> </span> <span><span><span><arg</span> value<span>="--file"</span> /></span> </span> <span><span><span><arg</span> value<span>="${basedir}/build/phpdox.xml"</span> /></span> </span> <span><span><span></exec</span>></span> </span> <span><span><span></target</span>></span></span>
Vielleicht haben Sie sich ein wenig verwirrt über alle Änderungen, die wir vorgenommen haben. Für Ihre Bequemlichkeit finden Sie einen direkten Link zum Commit mit allen oben beschriebenen Änderungen.
<span><span><span><target</span> name<span>="copy-parameters"</span> description<span>="Copy parameters.yml file"</span>></span> </span> <span><span><span><exec</span> executable<span>="cp"</span> failonerror<span>="true"</span>></span> </span> <span><span><span><arg</span> path<span>="app/config/parameters.yml.dist"</span> /></span> </span> <span><span><span><arg</span> path<span>="app/config/parameters.yml"</span> /></span> </span> <span><span><span></exec</span>></span> </span> <span><span><span></target</span>></span></span>
Erstellen Sie das Projekt in Jenkins
Da sich unser Projekt auf GitHub befindet, empfehle ich, das Github -Plugin in Jenkins zu installieren. Wenn Sie Ihren eigenen Git -Server verwenden, können Sie einfach das reguläre Git -Plugin installieren. Wenn Sie sich nicht sicher sind, wie Sie ein Plugin installieren, überprüfen Sie den vorherigen Artikel.
Wenn Sie zum Überblick zurückkehren, müssen Sie im Menü links auf neues Element klicken. Als Artikelname füllen wir JumpH aus. Als nächstes wählen wir das vorhandene Option vorhandenem Element und füllen PHP-Template als Projekt aus.
Das Letzte, was wir tun müssen, ist die Quellverwaltung zu wählen. In unserem Fall ist dies Git. Als nächstes müssen Sie den Repository -Link ausfüllen. Wenn Sie den HTTPS -Link verwenden, müssen Sie keine zusätzlichen Anmeldeinformationen bereitstellen. Wir können entscheiden, welche Zweige gebaut werden sollen, aber da wir nur einen Master -Zweig haben, werden wir ihn so lassen, wie es ist.
Die Konfiguration erfolgt - sie ist so einfach, da wir eine vordefinierte Vorlage verwendet haben. Wenn Sie nach unten scrollen, sehen Sie genau, was die für uns konfigurierte Vorlage für uns konfiguriert hat. Vergessen Sie nicht, Ihre Konfiguration zu speichern, bevor Sie fortfahren.
Starten Sie ein Build
Vielleicht haben Sie einen grünen Ball anstelle eines blauen Balls erwartet, wenn ein Build erfolgreich ist. Es gibt ein Plugin, um grüne Kugeln anstelle von blauen zu zeigen.
In diesem Artikel haben wir uns zu einem erfolgreichen Build gearbeitet. Wir mussten unser Projekt vorbereiten und einen Job in Jenkins erstellen. Schließlich mussten wir unsere ersten paar Builds debuggen, da wir vergessen haben, einige Bibliotheken zu installieren.
Im nächsten Teil werden wir uns alle Ergebnisse ansehen, die Jenkins zurückgeben.
Was sind die Vorteile der Verwendung von Jenkins für PHP -Projekte? PHP -Projekte. Es automatisiert den Prozess des Erstellens, Testen und Bereitstellens Ihrer PHP -Anwendungen, wodurch Sie viel Zeit und Mühe sparen können. Es hilft auch, sicherzustellen, dass sich Ihr Code immer in einem bereitstellbaren Zustand befindet und die Qualität Ihrer Software verbessern kann. Darüber hinaus unterstützt Jenkins kontinuierliche Integration und kontinuierliche Lieferung, wodurch Sie Ihren Benutzern schneller und häufig Aktualisierungen liefern können. Jenkins können verwendet werden, um Tests für Ihr PHP -Projekt durch Integration in verschiedene Testwerkzeuge zu automatisieren. Beispielsweise können Sie das Phpunit -Plugin zum Ausführen von Unit -Tests oder das Selen -Plugin verwenden, um Funktionstests auszuführen. Sie müssen diese Plugins lediglich in Ihrem Jenkins -Job konfigurieren, und sie werden Ihre Tests bei jedem Erstellen Ihres Projekts automatisch ausführen. Dies kann dazu beitragen, Fehler frühzeitig zu fangen und sicherzustellen, dass Ihr Code immer in einem guten Zustand ist. Programmiersprachen neben Php. Dies schließt Java, Python, Ruby, C#und viele andere ein. Sie können Jenkins verwenden, um Anwendungen zu erstellen, zu testen und bereitzustellen, die in diesen Sprachen geschrieben wurden, indem Sie die entsprechenden Plugins installieren und Ihren Jenkins -Job entsprechend konfigurieren.
Kann ich Jenkins mit Git verwenden? Auf diese Weise können Sie Ihre Software automatisch erstellen, testen und bereitstellen, wenn Sie Änderungen in Ihr Git -Repository überschreiten. Sie können dies konfigurieren, indem Sie das Git -Plugin installieren und ein Webhook in Ihrem Git -Repository einrichten, um einen Jenkins -Build auszulösen, wenn Änderungen gedrückt werden. Jenkins bietet mehrere Tools, mit denen Sie Probleme beheben können. Dies beinhaltet Build -Protokolle, mit denen detaillierte Informationen über das enthalten sind, was während eines Builds und Systemprotokolle passiert sind, die Informationen über den Gesamtbetrieb Ihres Jenkins -Servers liefern können. Sie können auch die Jenkins CLI oder die REST -API verwenden, um mit Ihrem Jenkins -Server zu interagieren und Probleme zu diagnostizieren.
Das obige ist der detaillierte Inhalt vonVorbereitung und Bau eines PHP -Projekts in Jenkins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!