Wat is Jenkins?
Jenkins is een open source Continuous Integration-server die in staat is om een reeks acties te orkestreren die helpen om het Continuous Integration-proces (en niet alleen) op een geautomatiseerde manier te bereiken.
Jenkins is gratis en is volledig geschreven in Java. Jenkins is een veelgebruikte applicatie over de hele wereld met ongeveer 300.000 installaties en groeit met de dag.
Het is een servergebaseerde applicatie en vereist een webserver zoals Apache Tomcat. De reden dat Jenkins zo populair werd, is dat het toezicht houdt op herhaalde taken die zich voordoen tijdens de ontwikkeling van een project. Als uw team bijvoorbeeld een project aan het ontwikkelen is, zal Jenkins uw projectbuilds continu testen en u de fouten in de vroege stadia van uw ontwikkeling laten zien.
Door Jenkins te gebruiken, kunnen softwarebedrijven hun softwareontwikkelingsproces versnellen, aangezien Jenkins het bouwen en testen in een hoog tempo kan automatiseren. Jenkins ondersteunt de volledige ontwikkelingscyclus van software, van het bouwen, testen, documenteren van de software, implementatie en andere fasen van een softwareontwikkelingscyclus.
In deze tutorial leer je
- Wat is Jenkins?
- Wat is continue integratie?
- Jenkin geschiedenis
- Waarom continue integratie met Jenkins gebruiken?
- Praktijkvoorbeeld van continue integratie
- Voordelen van het gebruik van Jenkins
- Nadelen van het gebruik van Jenkins
Wat is continue integratie?
Bij continue integratie wordt de software na een code commit direct gebouwd en getest. In een groot project met veel ontwikkelaars worden gedurende een dag vaak commits gemaakt. Met elke commit wordt code gebouwd en getest. Als de test is geslaagd, wordt build getest voor implementatie. Als de implementatie een succes is, wordt de code naar productie gepusht. Dit vastleggen, bouwen, testen en implementeren is een continu proces en vandaar de naam continue integratie / implementatie.
Een continue integratiepijplijn is een krachtig instrument dat bestaat uit een set tools die zijn ontworpen voor het hosten , bewaken , compileren en testen van code of codewijzigingen, zoals:
- Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity en anderen)
- Source Control Tool (bijv. CVS, SVN, GIT, Mercurial, Perforce, ClearCase en anderen)
- Bouwtool (Make, ANT, Maven, Ivy, Gradle en anderen)
- Testkader voor automatisering (Selenium, Appium, TestComplete, UFT en andere)
Jenkin geschiedenis
- Kohsuke Kawaguchi, een Java-ontwikkelaar, werkzaam bij SUN Microsystems, was het zat om de code te bouwen en herhaaldelijk fouten op te lossen. In 2004 creëerde een automatiseringsserver genaamd Hudson die de bouw- en testtaak automatiseert.
- In 2011 had Oracle, eigenaar van Sun Microsystems, een geschil met de open source-community van Hudson, dus splitsten ze Hudson op en hernoemden het naar Jenkins.
- Zowel Hudson als Jenkins bleven onafhankelijk opereren. Maar in korte tijd verwierf Jenkins veel projecten en bijdragers, terwijl Hudson met slechts 32 projecten bleef. Na verloop van tijd werd Jenkins populairder en wordt Hudson niet meer onderhouden.
Waarom continue integratie met Jenkins gebruiken?
Sommige mensen denken misschien dat de ouderwetse manier om de software te ontwikkelen de betere manier is. Laten we de voordelen van CI met Jenkins begrijpen met het volgende voorbeeld
Laten we ons eens voorstellen dat er ongeveer 10 ontwikkelaars zijn die aan een gedeelde repository werken. Sommige ontwikkelaars voltooien hun taak in 25 dagen, terwijl anderen er 30 dagen over doen.
Voordat Jenkins | Na Jenkins |
---|---|
Nadat alle ontwikkelaars hun toegewezen coderingstaken hadden voltooid, legden ze hun code allemaal tegelijk vast. Later wordt Build getest en geïmplementeerd. Code commit gebouwd, en testcyclus was zeer zeldzaam, en een enkele build werd na vele dagen gedaan. | De code wordt gebouwd en getest zodra de ontwikkelaar code vastlegt. Jenkin zal gedurende de dag vele keren code bouwen en testen. Als de build succesvol is, zal Jenkins de broncode in de testserver implementeren en het implementatieteam hiervan op de hoogte stellen. Als de build mislukt, zal Jenkins de fouten melden aan het ontwikkelteam. |
Omdat de code in één keer is gebouwd, moeten sommige ontwikkelaars wachten tot andere ontwikkelaars klaar zijn met coderen om hun build te controleren | De code wordt onmiddellijk gebouwd nadat een van de ontwikkelaars zich heeft gecommitteerd. |
Het is geen gemakkelijke taak om fouten voor meerdere commits te isoleren, detecteren en repareren. | Omdat de code wordt gebouwd na elke commit van een enkele ontwikkelaar, is het gemakkelijk om te detecteren wiens code ervoor zorgde dat het bouwen mislukte |
Code-build en testproces zijn volledig handmatig, dus er zijn veel kansen op mislukking. | Geautomatiseerd bouw- en testproces waardoor timing wordt bespaard en defecten worden verminderd. |
De code wordt geïmplementeerd zodra alle fouten zijn verholpen en getest. | De code wordt geïmplementeerd na elke succesvolle build en test. |
De ontwikkelingscyclus is traag | De ontwikkelingscyclus is snel. Nieuwe functies zijn gemakkelijker beschikbaar voor gebruikers. Verhoogt de winst. |
Praktijkvoorbeeld van continue integratie
Ik weet zeker dat jullie allemaal op de hoogte zijn van de oude Nokia-telefoon. Nokia implementeerde vroeger een procedure die nightly build werd genoemd. Na meerdere commits van verschillende ontwikkelaars gedurende de dag, wordt de software elke nacht gebouwd. Omdat de software maar één keer per dag werd gebouwd, is het erg lastig om de fouten in een grote codebasis te isoleren, identificeren en repareren.
Later kozen ze voor een continue integratie-aanpak. De software is gebouwd en getest zodra een ontwikkelaar code heeft gecommitteerd. Als er een fout wordt gedetecteerd, kan de respectieve ontwikkelaar het defect snel herstellen.
Jenkins-plug-ins
Jenkins wordt standaard geleverd met een beperkte set functies. Als je je Jenkins-installatie wilt integreren met versiebeheertools zoals Git, dan moet je plug-ins installeren die gerelateerd zijn aan Git. Voor integratie met tools zoals Maven, Amazon EC2, moet u de respectieve plug-ins in uw Jenkins installeren.
Voordelen van het gebruik van Jenkins
- Jenkins wordt beheerd door de gemeenschap die heel open is. Elke maand houden ze openbare bijeenkomsten en nemen ze input van het publiek voor de ontwikkeling van het Jenkins-project.
- Tot dusver zijn ongeveer 280 tickets gesloten en het project publiceert elke drie maanden een stabiele release.
- Naarmate de technologie groeit, groeit Jenkins ook. Tot nu toe heeft Jenkins ongeveer 320 plug-ins gepubliceerd in zijn plug-ins-database. Met plug-ins wordt Jenkins nog krachtiger en rijker aan functies.
- Jenkins ondersteunt ook cloudgebaseerde architectuur, zodat u Jenkins in cloudgebaseerde platforms kunt implementeren.
- De reden waarom Jenkins populair werd, is dat het is gemaakt door een ontwikkelaar voor ontwikkelaars.
Nadelen van het gebruik van Jenkins
Hoewel Jenkins een zeer krachtig hulpmiddel is, heeft het zijn gebreken.
- De interface is verouderd en niet gebruiksvriendelijk in vergelijking met de huidige UI-trends.
- Hoewel Jenkins geliefd is bij veel ontwikkelaars, is het niet zo eenvoudig om het te onderhouden, omdat Jenkins op een server draait en enige vaardigheden als serverbeheerder vereist om zijn activiteit te controleren.
- Een van de redenen waarom veel mensen Jenkins niet implementeren, is vanwege de moeilijkheid bij het installeren en configureren van Jenkins.
- Doorlopende integraties worden regelmatig afgebroken vanwege enkele kleine instellingswijzigingen. Continue integratie wordt onderbroken en vereist daarom enige aandacht van de ontwikkelaar.
Gevolgtrekking:
- Bij continue integratie wordt de software, na een code commit, direct gebouwd en getest
- Jenkins is een open source Continuous Integration-server die een reeks acties kan orkestreren
- Vóór Jenkins, toen alle ontwikkelaars hun toegewezen coderingstaken hadden voltooid, legden ze hun code allemaal tegelijk vast. Later wordt Build getest en geïmplementeerd.
- Na Jenkins wordt de code gebouwd en getest zodra de ontwikkelaar code vastlegt. Jenkin zal gedurende de dag vele malen code bouwen en testen
- Jenkins wordt standaard geleverd met een beperkte set functies. Als je je Jenkins-installatie wilt integreren met versiebeheertools zoals Git, dan moet je plug-ins installeren die gerelateerd zijn aan Git
- De grootste voordelen van Jenkins is dat het wordt beheerd door de gemeenschap die openbare bijeenkomsten houdt en input van het publiek neemt voor de ontwikkeling van Jenkins-projecten
- Het grootste nadeel van Jenkin is dat de interface verouderd is en niet gebruiksvriendelijk in vergelijking met de huidige UI-trends.