Wat is Jenkins? Waarom de tool voor continue integratie (CI) gebruiken?

Wat is Jenkins?

Jenkins is een open-source Continuous Integration-server waarin is geschreven Java voor het orkestreren van een reeks acties om het continue integratieproces op geautomatiseerde wijze te realiseren. Jenkins ondersteunt de volledige levenscyclus van softwareontwikkeling, van het bouwen, testen, documenteren van de software, implementatie en andere fasen van de levenscyclus van softwareontwikkeling.

Jenkins is een wereldwijd veelgebruikte applicatie met ongeveer 300 installaties en een groei die met de dag toeneemt. Door Jenkins te gebruiken, kunnen softwarebedrijven hun softwareontwikkelingsproces versnellen, omdat Jenkins het bouwen en testen razendsnel kan automatiseren.

Het is een servergebaseerde applicatie en vereist een webserver zoals Apache Tomcat. De reden dat Jenkins-software zo populair werd, is het monitoren van herhaalde taken die zich tijdens de ontwikkeling van een project voordoen. Als uw team bijvoorbeeld een project ontwikkelt, zal Jenkins uw projectbuilds voortdurend testen en u de fouten in een vroeg stadium van uw ontwikkeling laten zien.

Wat is continue integratie?

Continue integratie is een proces waarbij codewijzigingen van meerdere ontwikkelaars vele malen in één project worden geïntegreerd. De software wordt onmiddellijk na een code-commit getest. Bij elke code-commit wordt code gebouwd en getest. Als de test slaagt, wordt de build getest voor implementatie. Als de implementatie succesvol is, wordt de code naar productie gepusht.

Dit vastleggen, bouwen, testen en implementeren is een continu proces en vandaar de naam continue integratie/implementatie.

Hoe werkt Jenkins?

Jenkins is een servergebaseerde applicatie en vereist een webserver zoals Apache Tomcat om op verschillende platforms te draaien, zoals Windows, Linux, macOS, Unix, enz. Om Jenkins te gebruiken, moet u pijplijnen maken, dit zijn een reeks stappen die een Jenkins-server zal nemen. Jenkins Continuous Integration Pipeline is een krachtig instrument dat bestaat uit een reeks tools die zijn ontworpen om: gastheer, controleren, compileren en proef code of codewijzigingen, zoals:

  • Continue integratieserver (Jenkins, Bamboo, CruiseControl, TeamCity, en anderen)
  • Broncontroletool (bijv. CVS, SVN, GIT, Mercurial, Perforce, ClearCase en anderen)
  • Bouwtool (Maak, ANT, Maven, Ivy, Gradle, en anderen)
  • Kader voor automatiseringstests (Selenium, Appium, TestComplete, UFT en andere)

Jenkin-geschiedenis

  • Kohsuke Kawaguchi, op Java De ontwikkelaar, werkzaam bij SUN Microsystems, was het beu om de code steeds opnieuw te bouwen en fouten op te lossen. In 2004 creëerde hij een automatiseringsserver genaamd Hudson die de bouw- en testtaken automatiseert.
  • In 2011, Oracle eigenaar van Sun Microsystems had een conflict met de open source community van Hudson, dus splitsten ze Hudson af en noemden het bedrijf Jenkins.
  • Zowel Hudson als Jenkins bleven onafhankelijk opereren. Maar in korte tijd verwierf Jenkins veel projecten en bijdragers, terwijl Hudson slechts 32 projecten overhield. Na verloop van tijd werd Jenkins populairder en Hudson wordt niet meer onderhouden.

Waarom continue integratie met Jenkins gebruiken?

Sommige mensen denken misschien dat de ouderwetse manier van softwareontwikkeling de betere manier is. Laten we de voordelen van CI met Jenkins begrijpen met het volgende voorbeeld

Laten we ons voorstellen dat er ongeveer 10 ontwikkelaars zijn die aan een gedeelde opslagplaats. Sommige ontwikkelaars voltooien hun taak in 25 dagen, terwijl andere er 30 dagen over doen.

Vóór Jenkins Na Jenkins
Zodra alle ontwikkelaars de hun toegewezen codeertaken hadden voltooid, voerden ze hun code allemaal tegelijkertijd uit. Later, Build is getest en geïmplementeerd.

Code-commit gebouwd, en de testcyclus was zeer zeldzaam, en na vele dagen werd een enkele build uitgevoerd.

De code wordt gebouwd en getest zodra de ontwikkelaar code vastlegt. Jenkin zal gedurende de dag vele malen code bouwen en testen

Als de build succesvol is, zal Jenkins de broncode op de testserver implementeren en het implementatieteam hiervan op de hoogte stellen.

Als de build mislukt, zal Jenkins de fouten aan het ontwikkelaarsteam melden.

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 een commit heeft gedaan.
Het is geen gemakkelijke taak om fouten voor meerdere commits te isoleren, detecteren en repareren. Omdat de code na elke commit van een enkele ontwikkelaar wordt gebouwd, is het gemakkelijk om te detecteren wiens code ervoor zorgde dat de build mislukte
Code bouwen en testproces zijn volledig handmatig, dus er zijn veel kansen op mislukking. Geautomatiseerd bouw- en testproces, waardoor timing wordt bespaard en fouten worden verminderd.
Zodra alle fouten zijn opgelost en getest, wordt de code geïmplementeerd. De code wordt na elke succesvolle build en test geïmplementeerd.
De ontwikkelingscyclus is traag De ontwikkelingscyclus is snel. Nieuwe functies zijn gemakkelijker beschikbaar voor gebruikers. Verhoogt de winst.

Real-world casestudy van continue integratie

Ik weet zeker dat jullie allemaal op de hoogte zijn van de oude telefoon van Nokia. Nokia implementeerde vroeger een procedure genaamd nightly build. Na meerdere commits van diverse ontwikkelaars gedurende de dag werd de software elke nacht gebouwd. Omdat de software maar één keer per dag wordt gebouwd, is het enorm lastig om de fouten in een grote codebasis te isoleren, identificeren en repareren.

Later, kozen ze voor de Continuous Integration-aanpak. De software werd gebouwd en getest zodra een ontwikkelaar code had vastgelegd. Als er een fout wordt gedetecteerd, kan de betreffende ontwikkelaar het defect snel herstellen.

Real-world casestudy van continue integratie

Jenkins-plug-ins

Standaard wordt Jenkins geleverd met een beperkt aantal functies. Als je je Jenkins-installatie wilt integreren met versiebeheertools zoals Git, dan moet je plug-ins installeren die verband houden met Git. Voor integratie met tools als Maven is het zelfs zo dat Amazon EC2, moet u de respectieve plug-ins in uw Jenkins installeren.

Jenkins-plug-ins
Integratie van plug-ins in Jenkins

Voordelen van het gebruik van Jenkins

  • Jenkins wordt beheerd door de community die erg open is. Elke maand houden ze openbare vergaderingen en nemen ze input van het publiek voor de ontwikkeling van het Jenkins-project.
  • Tot nu toe zijn er ongeveer 280 tickets gesloten en publiceert het project 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-insdatabase. Met plug-ins wordt Jenkins nog krachtiger en rijker aan functies.
  • De Jenkins-tool ondersteunt ook cloudgebaseerde architectuur, zodat u Jenkins op 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, kent het zijn tekortkomingen.

  • De interface is verouderd en niet gebruiksvriendelijk vergeleken 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 de activiteit ervan te controleren.
  • Een van de redenen waarom veel mensen Jenkins niet implementeren, is de moeilijkheid bij het installeren en configureren van Jenkins.
  • Continue integraties breken regelmatig vanwege enkele kleine wijzigingen in de instellingen. De continue integratie wordt gepauzeerd en vereist daarom enige aandacht van de ontwikkelaar.

Conclusie

  • Bij Continuous Integration wordt de software na een codecommit onmiddellijk gebouwd en getest
  • Jenkins gebruikt voor het orkestreren van een reeks acties voor continue integratie in een softwareproject
  • Vóór Jenkins, toen alle ontwikkelaars de hun toegewezen codeertaken hadden voltooid, committen ze hun code allemaal tegelijkertijd. Later, Build is getest en geïmplementeerd.
  • Na Jenkins wordt de code gebouwd en getest zodra de ontwikkelaar code commit. Jenkin zal gedurende de dag vele malen code bouwen en testen
  • Standaard wordt Jenkins geleverd met een beperkt aantal functies. Als je je Jenkins-installatie wilt integreren met versiebeheertools zoals Git, dan moet je plug-ins installeren die verband houden met Git. Controleer ook Beste Jenkins alternatieve hulpmiddelen
  • Het grootste voordeel van Jenkins is dat het wordt beheerd door de gemeenschap die openbare bijeenkomsten houdt en input van het publiek ontvangt voor de ontwikkeling van Jenkins-projecten.
  • Het grootste nadeel van Jenkins is dat de interface verouderd en niet gebruiksvriendelijk is in vergelijking met de huidige UI-trends. Als u andere opties overweegt die een modernere gebruikerservaring kunnen bieden, wilt u misschien enkele van deze opties verkennen beste tools voor continue integratie beschikbaar.