Schlüsselpunkte
Dieser Artikel wurde ursprünglich auf TestProject - Test Automation Blog
veröffentlichtFolgendes wird ausführlich die Continuous Integration (CI), eine wesentliche Praxis in der Softwareentwicklung, und Jenkins, das branchenabhängige Open-Source-Integrationstool, einführen. Durch die Implementierung der kontinuierlichen Integration und Jenkins -CI -Server erfahren Sie, wie Jenkins -Bereitstellungen Ihrem Entwicklungsteam helfen können, Software mit höherer Qualität zu veröffentlichen und wertvolle Zeit zu sparen.
Möchten Sie mehr über Jenkins und kontinuierliche Integration erfahren? Bitte überprüfen Sie den folgenden Link:
moderne Softwareentwicklungspraktiken erfordern die Bereitstellung von voll funktionsfähiger Software so bald wie möglich oder häufig in Produktionsumgebungen. Ein agiler Ansatz setzt dieses Verhalten beispielsweise direkt durch, indem das Team in kleinen Schritten arbeitet und nach jedem Sprint in eine Produktionsumgebung eingesetzt wird (Lesen: Testautomatisierungsstrategien für agile Projekte).
Das Entwicklungsteam hat Monate damit verbracht, die Software zu entwickeln und sie dann an QA, UAT und alle Produktionslinien weiterzugeben. Heute liegt der Fokus auf einer voll funktionsfähigen Software und auf Situationen, in denen die Softwarequalität gefährdet ist, z. B. wichtige Software -Änderungen am Ende des Release -Zyklus. Hier kommt die kontinuierliche Integration ins Spiel.
CI ist eine Praxis, die Strategien erzwingt, um den getesteten Code häufig in stabile Zweige von Projekten zu integrieren. Ich möchte insbesondere den "getesteten Code" hervorheben, da dies bedeutet, dass die auf getrennte Zweige entwickelte Funktionen ebenfalls getestet und daher in stabile Zweige integriert wird.
Normalerweise sind DevOps -Ingenieure normalerweise für die Einrichtung von CI -Pipelines verantwortlich. Heute ist die Rolle von DevOps Engineers der von Testingenieuren sehr ähnlich, da sowohl die Prozess- als auch die Softwarequalität sicherstellen. Normalerweise sage ich, dass QA und Produktion die engsten Kreuzungen für Kunden sind. In diesem Sinne bietet CI Testingenieuren ein sehr leistungsstarkes Tool zur Verbesserung des Gesamtprozesses und der Softwarequalität, indem Sie aktiv an den folgenden Bereichen teilnehmen:
Das Entwicklungsteam verfügt über ein eigenes Repository für die Quellcode -Versionskontrolle, das Projekte enthält (normalerweise GitHub heute). Ein stabiler Zweig (Hauptzweig) wird häufig als Arbeitszweig angesehen und entwickelt selten neue Funktionen direkt auf der Hauptzweig. Stattdessen erstellen Entwickler ihre eigenen Zweige, um neue Funktionen zu entwickeln (Zweig A von Feature A). Wenn Änderungen in das Repository in diesem bestimmten Zweig gedrückt werden und der Entwickler eine Pull -Anfrage stellt, sollte ein grundlegender Testsatz (Rauchentest) gegen diesen Zweig durchgeführt werden. Aus CI -Sicht bedeutet dies normalerweise Folgendes:
Wenn der CI -Prozess abgeschlossen ist, gibt es einige Anforderungen aus der Perspektive von Testingenieuren und Entwicklern:
Rauchtest spart für Entwicklern, die Code -Bewertungen und Testingenieure, die die Funktionen A in der Pull -Anfrage -Filiale erneut testen müssen, viel Zeit sparen. Wenn der Rauchtest auf der Pull -Anforderung fehlschlägt, ist der für die Funktion A verantwortliche Entwickler jetzt für die Festlegung der Rauchentestfunktion und die Ausstellung einer neuen Pull -Anfrage verantwortlich (bis das Problem behoben ist, wird der problematische Code nicht in die Hauptzweigung verschmolzen ).
Wenn dies erfolgt und der neue Code für Funktion A aus der Perspektive von CI in den Hauptzweig verschmilzt, tritt Folgendes auf:
Ein auf Feature a). Natürlich ist es eine gute Angewohnheit, die Testautomationssuite im Laufe der Zeit zu verbessern, um die meisten Funktionen abzudecken.
Dies wird in verspäteten Iterationen des Projekts immer wichtiger, da der Testingenieur über mehr Aufgaben (Teststromfunktionen und alle früheren Funktionen) verfügt. Hier ist die Regressionstests nützlich: Aus CI -Sicht erfolgt die Ausführung von Regressionstests normalerweise, wenn der Testingenieur den Regressionstest ausdrücklich ausführt oder bei der Verwendung eines Schedulers (z. Es ist eine gute Angewohnheit, diesen Job anzupassen, damit wir angeben können, für welche Zweigstelle dieser Job ausgeführt wird (hier können Sie mehr darüber lesen, warum und wann Sie Regressionstestautomation durchführen sollen). Der Prozess ist wie folgt:
Hausaufgaben: Die wichtigste "Einheit" in der Jenkins -Terminologie ist Hausaufgaben. Ein Job ist eine einzelne Ausführungseinheit in einem Jenkins -CI -Server und muss bestimmte Ergebnisse haben (Pass/Fail). Zum Beispiel: Der Job kann ein Bereitstellungsjob, ein Rauchtestjob, ein Regressionstestjob usw. sein. Jobs bestehen aus mehreren in der Sequenz ausgeführten Bereichen, die im nächsten Absatz erklärt werden: die Struktur von Jenkins -Jobs.
Plugins: Eine der Hauptmerkmale der Jenkins -Testautomatisierung ist die Möglichkeit, sie durch Verwendung vorhandener Plugins oder Erstellen eigener Plugins anzupassen. Alles im Jenkins-Tool vom Abschnitt "Jobkonfiguration bis zum Abschnitt Jenkins Configuration" ist eigentlich ein Plug-In. Aufgrund der Größe der Jenkins -Community gibt es bereits verschiedene Jenkins -Plugins, um den Anforderungen der anspruchsvollsten CI -Workflow -Aufgaben zu erfüllen. Dies bedeutet, dass Sie höchstwahrscheinlich auf ein nützliches Plugin stoßen, anstatt eine benutzerdefinierte Lösung zu erstellen.
Knoten: Im einfachsten Setup wird die Jenkins -Instanz auf einer Maschine ausgeführt, auf der alle Jobs ausgeführt werden. Für kleine Tests und kleine Mengen an Aufgaben ist dies sinnvoll. In der Praxis gibt es jedoch häufig Fälle, in denen mehrere Teams dieselbe Jenkins -Instanz verwenden. Da sie eine große Anzahl von Arbeitsplätzen haben, wird es aus folgenden Gründen als schlecht angesehen, in einer Instanz auszuführen: Sicherheit, Katastrophenwiederherstellung, Leistung, Skalierbarkeit usw.
Master/Slave in Jenkins eingeben: Der Jenkins -Masterknoten wird nur verwendet, um Jobs zu planen, die auf dem Jenkins -Sklaven ausgeführt werden sollen. Auf diese Weise wird der Jenkins -Host nicht stark genutzt, und das Team hat seine eigenen Sklavenmaschinen, die für seine Testautomatisierungsprojekte die beste Größe haben. Darüber hinaus wird der Slaveknoten dann so konfiguriert, dass mehrere parallele Jobs ausgeführt werden (Anzahl der Ausführende pro Knoten). Sie können auch On-Demand-Knoten von AWS konfigurieren. Dies bedeutet, dass der Knoten nur existiert, wenn ein Job darauf ausgeführt werden muss. Dies ist sehr nützlich, da wir größere Maschinen wünschen, die beim Ausführen von Regressionstests nur vollständig genutzt werden. In diesem Fall wird eine größere EC2 -Instanz auf AWS gestartet, auf der der Job ausgeführt wird, und nach Abschluss (basierend auf der Leerlaufzeit der Konfiguration) bleibt die Instanz für einen bestimmten Zeitraum aktiv. Danach wird festgelegt, welcher Ansatz bei der Verwendung eines stündlichen bezahlten Dienstes wie einem AWS -Service vorteilhafter ist.
In einem Jenkins CI -Server enthält jeder Jenkins -Job mehrere Teile:
Allgemein: Hier geben wir den Projekt/den Arbeitsplatzname/die Beschreibung an, fügen Sie bei Bedarf Jobparameter hinzu, definieren Sie die Strategie zur Rotation von Jobprotokolls usw. Der nächste Bildschirm zeigt, wie die Protokolldrehung konfiguriert wird (Sie können die Anzahl der Tage angeben, um das Build -Protokoll oder die Anzahl der zuletzten Build -Protokolle beizubehalten) und die Parametrisierung des Auftrags (durch Hinzufügen des String Build_ID mit dem Standardwert von 0.0.1, diese Werte können jedoch angegeben werden, wenn Sie einen Job starten) und wie man konfiguriert, wo dieser Job ausgeführt wird (Slaveknotenname):
Jenkins Quellcodeverwaltung: Wie der Name schon sagt, definieren wir hier ein Quellcode -Repository (wie Github oder Subversion) in einem Jenkins -CI -Server:
Jenkins erstellen Auslöser: Planen Sie die Ausführungszeit planen (regelmäßig nach anderen Jobs, wenn Github Pull -Anfrage auftritt, wenn Änderungen auf GitHub usw. gedrückt werden).
Jenkins Build -Umgebung: Hier definieren wir Optionen im Zusammenhang mit der Umgebung, die der Build ausführt (löschen Sie den Arbeitsbereich jedes Mal, wenn der Job ausgeführt wird, und fällt den Job ab, wenn er für einen bestimmten Zeitraum suspendiert wird ... usw.).
Jenkins Build: Auf dem Jenkins CI -Server ist dies der wichtigste Schritt für jeden Job. Das Ergebnis dieses Schritts wirkt sich auf den Status des Jobs am Ende der Ausführung aus. Abhängig von den installierten Plug-Ins sind viele Optionen zur Verfügung.
Dies ist ein Beispiel für ein häufig verwendetes "Executute Shell" -Gladin, das in der Lage ist, Ihr eigenes Shell -Skript zu investieren oder vorhandene Shell -Skripte auszuführen.
Jenkins Operation Operation: Dieser Teil des Jobs wird verwendet, um die Ergebnisse des Jobs zu melden oder andere Jobs in der Jenkins-Pipeline anzurufen. Im Allgemeinen können wir E -Mails senden, die den Ausführungsstatus des Jobs enthalten, HTML -Berichte veröffentlichen, junger Ergebnisse veröffentlichen, Artefakte veröffentlichen, die in der Build -Phase auf S3 gebaut wurden, usw.
Bitte beachten Sie, wie $ Build_id in der Betreffzeile der E -Mail angegeben ist. Da dieser Job parametrisiert ist, wird dieser Wert angegeben, wenn der Job gestartet wird. Dieser Parameter kann im Abschnitt Jenkins Build und Post-Build-Operationen des Jobs verwendet werden.
Sie haben bisher die Hauptvorteile von Jenkins CI -Servern und wie CI selbst zum Softwareentwicklungsprozess und den Testingenieuren hinzugefügt wird. Wie jede andere Technologie braucht es Zeit, um die Grundlagen zu beherrschen und die Vorteile zu erleben. Ich empfehle Ihnen dringend, Ihre Zeit in CI zu investieren, was auf lange Sicht auf jeden Fall wert ist. Sobald Jenkins CI Server angewendet wurde, werden viele schmerzhafte und sich wiederholende Prozesse automatisiert und Sie werden plötzlich mehr Zeit haben, sich auf Produktverbesserungen zu konzentrieren.
Hat Ihr Team auch Continuous Integration und Jenkins CI -Server implementiert? Fühlen Sie sich frei, die Erfahrungen Ihres Teams zu teilen und Fragen in den Kommentaren zu stellen!
Dieser Artikel wurde ursprünglich auf TestProject - Test Automation Blog
veröffentlichtJenkins und Travis CI sind beide beliebte kontinuierliche Integrationstools, haben jedoch einige wichtige Unterschiede. Jenkins ist eine selbst gehostete Lösung, bei der Sie Ihre eigenen Server verwalten und pflegen müssen. Es ist sehr anpassbar und kann so konfiguriert werden, dass sie nahezu jeden CI/CD -Workflow aufnehmen. Travis CI hingegen ist ein Cloud-basierter Dienst, der einfach einzurichten und zu verwenden ist. Es integriert sich gut in GitHub und unterstützt viele Sprachen außerhalb des Box. Bei komplexen Workflows ist es jedoch möglicherweise nicht so flexibel wie Jenkins.
Jenkins und Gitlab CI/CD bieten beide leistungsstarke kontinuierliche Integrationslösungen. Jenkins ist bekannt für seine Flexibilität und ein großes Plugin -Ökosystem, während Gitlab CI/CD für seine nahtlose Integration in das Gitlab -Ökosystem gelobt hat. GitLab CI/CD bietet auch einen integrierten Docker-Support, der für Teams, die Docker verwenden, ein großer Vorteil sein kann.
Jenkins bietet gegenüber anderen CI -Servern mehrere Vorteile. Es ist Open Source und hat eine große und aktive Gemeinschaft, was bedeutet, dass sie sich ständig verbessert und aktualisiert. Es verfügt auch über ein riesiges Ökosystem von Plug-Ins, mit dem Sie seine Funktionen auf Ihre spezifischen Anforderungen entsprechen können. Darüber hinaus unterstützt Jenkins eine Vielzahl von Sprachen und Tools und macht es für viele verschiedene Projekte zu einer gemeinsamen Wahl.
Jenkins ist ein universelles Werkzeug, das die kontinuierliche Integration von Python -Projekten übernimmt. Es automatisiert die Konstruktion, Prüfung und Bereitstellung von Python -Anwendungen und unterstützt viele beliebte Python -Test -Frameworks. Jenkins integriert sich auch gut in Versionskontrollsysteme wie Git und erleichtert es einfach, sich in Ihren vorhandenen Workflow zu integrieren.
Wenn Sie zwischen Jenkins und Travis CI wählen, sollten Sie Faktoren wie das technische Know -how des Teams, die Komplexität Ihres CI/CD -Workflows und das Budget berücksichtigen. Jenkins benötigt mehr Setup und Wartung, bietet jedoch eine größere Flexibilität und Kontrolle. Travis CI ist leichter einzurichten und zu verwenden, ist jedoch möglicherweise nicht flexibel genug für komplexe Workflows. Es ist auch ein bezahlter Service und Jenkins ist kostenlos und Open Source.
Jenkins unterstützt CI/CD -Pipelines von der Integration und dem Test bis zur Bereitstellung, indem alle Phasen der Codezustellung automatisiert werden. Es ermöglicht kontinuierliches Feedback, da Entwickler Probleme in ihrem Code schnell identifizieren und beheben können. Jenkins integriert sich auch in eine Vielzahl von Tools im CI/CD -Ökosystem, was es zu einer gemeinsamen Wahl für die Implementierung von CI/CD -Pipelines macht.
Ja, Jenkins können für Projekte verwendet werden, die nicht auf GitHub gehostet werden. Es unterstützt eine Vielzahl von Versionskontrollsystemen, einschließlich Subversion, Mercurial und Perforce. Dies macht Jenkins zu einer universellen Wahl für Teams, die verschiedene Versionskontrollsysteme verwenden.
Jenkins verarbeitet parallele Builds, indem Aufgaben zwischen mehreren Maschinen oder Testamentsvollstreckern zugewiesen werden. Dies ermöglicht schnellere Bauzeiten und eine effizientere Ressourcenauslastung. Sie können Jenkins so konfigurieren, dass Sie Ihre Build -Infrastruktur automatisch verwalten oder angeben, welche Aufgaben auf welchen Maschinen ausgeführt werden sollen.
Einige häufige Herausforderungen beim Einrichten von Jenkins umfassen das Verwalten von Abhängigkeiten, das Konfigurieren von Build -Triggern und das Einrichten sicherer Zugriff. Jenkins hat jedoch eine große und aktive Gemeinschaft, daher gibt es viele Ressourcen, die Ihnen helfen, diese Herausforderungen zu bewältigen.
Sie können die Funktionalität von Jenkins durch Installieren von Plugins erweitern. Jenkins verfügt über ein riesiges Ökosystem von Plugins, die Plugins für eine Vielzahl von Funktionen von Integration mit verschiedenen Versionskontrollsystemen bis hin zu verbesserten Benutzeroberflächen enthalten. Wenn Sie Funktionen benötigen, die nicht von vorhandenen Plugins bereitgestellt werden, können Sie auch Ihre eigenen Plugins schreiben.
Das obige ist der detaillierte Inhalt vonWichtige Richtlinien für kontinuierliche Integration und Jenkins CI Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!