Wat is JenkinsWaarom een ​​tool voor continue integratie (CI) gebruiken?

⚡ Slimme samenvatting

Jenkins is de open-source automatiseringsserver die code bouwt en test telkens wanneer een ontwikkelaar een commit uitvoert, waardoor Continuous Integration verandert van een nachtelijke klus in een proces dat continu gedurende de werkdag draait.

  • 🔘 Doel: Jenkins Het systeem orkestreert automatisch de bouw-, test- en implementatiestappen na elke commit.
  • ☑️ Oorsprong: Afgeleid van Hudson in 2011 en nu de meest gebruikte CI-server.
  • Pijpleidingen: A JenkinsHet bestand dat bij de code is opgeslagen, definieert elke fase van het bouwproces.
  • 🧪 Plugins: Meer dan tweeduizend plug-ins zijn verbonden Jenkins naar Git, Maven, Docker en Kubernetes.
  • Afweging: Zelf hosten biedt volledige controle, maar brengt ook serverbeheer met zich mee.

Jenkins Overzicht van de continue integratieserver

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 ontwikkelingscyclus van software, van het bouwen, testen en documenteren van de software tot de implementatie en andere fasen van de softwareontwikkelingscyclus.

Jenkins is een veelgebruikte applicatie wereldwijd, met honderdduizenden installaties en een groeiend aantal dat dagelijks toeneemt. Door gebruik te maken van JenkinsSoftwarebedrijven kunnen hun softwareontwikkelingsproces versnellen, omdat Jenkins Het bouwen en testen kan in een hoog tempo geautomatiseerd worden.

Het is een servergebaseerde applicatie en vereist een webserver zoals Apache Tomcat. De reden hiervoor is... Jenkins De populariteit van deze software is te danken aan de mogelijkheid om terugkerende taken te monitoren die zich voordoen tijdens de ontwikkeling van een project. Als uw team bijvoorbeeld bezig is met de ontwikkeling van...ping een project, Jenkins Uw projectbuilds worden continu getest en fouten worden in een vroeg stadium van de ontwikkeling aan u getoond.

Let op: het inzetten van de oorlog in apache Tomcat werkt nog steeds, maar de huidige releases bevatten een ingebouwde servletcontainer, dus Jenkins Normaal gesproken werkt het zelfstandig. De 2.555.x LTS-lijn vereist Java 21.

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 werken?

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 te gebruiken JenkinsJe moet pijplijnen creëren, dat wil zeggen een reeks stappen die een Jenkins De server zal het accepteren. Jenkins Een Continuous Integration Pipeline is een krachtig instrument dat bestaat uit een reeks tools die zijn ontworpen om code, of codewijzigingen, te hosten, te bewaken, te compileren en te testen, zoals:

  • Continue Integratie Server (Jenkins, Bamboo, CruiseControl, TeamCity, en anderen)
  • Versiebeheersysteem (bijv. CVS, SVN, GIT, Mercurial, Perforce, ClearCase en andere)
  • Buildtool (Make, ANT, Maven, Ivy, Gradle, en anderen)
  • framework voor geautomatiseerd testen (Selenium, Appium, TestComplete, UFT, en anderen)

In de huidige versies bevinden die stappen zich in een Jenkinsbestand dat naast de code is opgeslagen. Jenkins De controller leest dat bestand en geeft elke fase door aan een agent, dat is de machine die het werk daadwerkelijk uitvoert.

Jenkins 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 De eigenaar van Sun Microsystems had een conflict met de open-sourcegemeenschap van Hudson, dus hebben ze Hudson afgesplitst en hernoemd naar... Jenkins.
  • Zowel Hudson als Jenkins bleef zelfstandig opereren. Maar binnen korte tijd, Jenkins verwierf veel projecten en medewerkers, terwijl Hudson slechts 32 projecten overhield. Na verloop van tijd, Jenkins Hudson werd populairder en wordt niet meer onderhouden.

Waarom Continuous Integration gebruiken met Jenkins?

Sommige mensen denken misschien dat de ouderwetse manier van ontwikkelenping Software is de betere manier. Laten we de voordelen van CI eens bekijken. Jenkins met het volgende voorbeeld

Stel je voor dat er ongeveer 10 ontwikkelaars aan een gedeelde repository werken. Sommige ontwikkelaars voltooien hun taak in 25 dagen, terwijl anderen er 30 dagen over doen.

Voor 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 De commit werd uitgevoerd, de testcyclus was zeer infrequent en er werd slechts eens in de zoveel dagen een build uitgevoerd.

De code wordt gebouwd en getest zodra de ontwikkelaar de code commit. Jenkins Ik zal de code gedurende de dag meerdere keren bouwen en testen.

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

Als de build mislukt, dan Jenkins De fouten worden doorgegeven aan het ontwikkelaarsteam.

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 individuele ontwikkelaar opnieuw wordt gecompileerd, is het eenvoudig te achterhalen wiens code de build heeft laten mislukken.
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.

LaterZe kozen voor een Continuous Integration-aanpak, zoals hieronder weergegeven. De software werd gebouwd en getest zodra een ontwikkelaar code commitde. Als er een fout werd gedetecteerd, kon de betreffende ontwikkelaar het defect snel verhelpen.

De nightly build van Nokia is vervangen door een continue integratiecyclus die wordt geactiveerd door een commit.

Jenkins Plugins

Standaard Jenkins Het beschikt over een beperkt aantal functies. Als u uw Jenkins Als je een versiebeheersysteem zoals Git gebruikt, moet je de bijbehorende plug-ins installeren. Voor integratie met tools zoals Maven is dat bijvoorbeeld ook nodig. Amazon Voor EC2 moet je de bijbehorende plugins installeren in je... Jenkins, zoals de onderstaande pluginmanager laat zien.

Jenkins Pluginmanager met een overzicht van beschikbare plugins die klaar zijn om te installeren.

Voordelen van het gebruik Jenkins

  • Jenkins Het wordt beheerd door de gemeenschap, die zeer open is. Elke maand houden ze openbare bijeenkomsten en verzamelen ze input van het publiek voor de ontwikkeling van het project. Jenkins project.
  • Het project hanteert een voorspelbaar releaseritme: elke twaalf weken wordt een nieuwe basislijn voor langetermijnondersteuning gekozen, die vervolgens volgens schema wordt bijgewerkt met patches.
  • Naarmate de technologie zich ontwikkelt, ontwikkelt zich ook... JenkinsDe plugin-database bevat nu meer dan tweeduizend plugins. Met plugins, Jenkins wordt nog krachtiger en rijker aan functies.
  • Jenkins De tool ondersteunt ook cloudgebaseerde architecturen, zodat u deze kunt implementeren. Jenkins op cloudgebaseerde platforms.
  • De reden waarom Jenkins Het feit dat het populair is geworden, komt doordat het door een ontwikkelaar voor ontwikkelaars is gemaakt.

Nadelen van het gebruik: Jenkins

Hoewel Jenkins Het is een zeer krachtig instrument, maar het heeft ook zijn gebreken.

  • De interface is verouderd en niet gebruiksvriendelijk in vergelijking met de huidige UI-trends, hoewel recente releases een groot deel van het schermontwerp hebben gemoderniseerd.
  • Hoewel Jenkins Het is geliefd bij veel ontwikkelaars, maar het is niet zo eenvoudig om het te onderhouden, omdat Jenkins Het draait op een server en vereist enige kennis van serverbeheer om de activiteiten ervan te monitoren.
  • Een van de redenen waarom veel mensen het niet implementeren Jenkins Dit komt door de moeilijkheid van de installatie en configuratie. 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.
  • Afhankelijkheidsconflicten tussen plugins ontstaan ​​wanneer veel plugins op verschillende tijdstippen worden bijgewerkt. Daarom hebben pluginupdates een eigen onderhoudsperiode nodig.

Als die afwegingen belangrijk zijn voor je team, vergelijk dan de Beste Jenkins Alternatieve tools en de bredere lijst van beste tools voor continue integratie voordat je besluit om een ​​server in eigen beheer te nemen.

Veelgestelde vragen

Ja. Jenkins Het programma is uitgebracht onder de MIT-licentie en is gratis te downloaden en uit te voeren. De kosten zijn indirect: de server, opslag en beheerderstijd die nodig zijn om een ​​zelfgehoste controller goed te laten functioneren.

De 2.555.x Long-Term Support-lijn draait op Java 21, met Java Ook 25 steunden dit; Java Versie 2.555.1 is verwijderd uit versie 17. Controleer de vereisten voordat u een upgrade uitvoert, want een oude JDK voorkomt dat de controller opstart.

A JenkinsHet bestand is een tekstbestand met de pipeline-definitie, dat samen met de applicatiecode wordt opgeslagen. Het kan in declaratieve of scriptmatige syntaxis worden geschreven en moetping Door het in versiebeheer op te nemen, kan de build net als elke andere wijziging worden beoordeeld.

De controller is de Jenkins Een installatie die taken inplant en de webinterface verzorgt. Een agent is een aparte machine die de toegewezen bouwstappen uitvoert, waardoor de belasting wordt verdeeld en builds op verschillende besturingssystemen mogelijk zijn.

Machine learning-modellen groeperen herhaalde fouten, scheiden echte regressies van onbetrouwbare tests en wijzen de meest waarschijnlijke oorzaak aan. Daardoor wordt een lange consolelog omgezet in een korte, gerangschikte lijst voor de dienstdoende ontwikkelaar.

GitHub-copiloot Ontwerpt verklarende fasen en gemeenschappelijke stappen uit een commentaar. RevBekijk elke suggestie, want er worden vaak namen voor pluginstappen bedacht die niet op je controller zijn geïnstalleerd.

Gehoste services vereisen geen serveronderhoud en starten sneller, terwijl Jenkins Biedt volledige controle over hardware, plug-ins en datalocatie. Teams met ongebruikelijke ontwikkelomgevingen bewaren deze doorgaans JenkinsBij kleinere projecten is een runner vaak de voorkeur.

Ja. Bouwstappen kunnen worden aangeroepen. Maven, Gradle of mier, en JUnit, TestNG or Selenium De resultaten worden teruggekoppeld naar de taakpagina, dus als een testsuite mislukt, wordt de hele build rood gemarkeerd.

Vat dit bericht samen met: