Vad är Jenkins? Varför använda Continuous Integration (CI) Tool?

Vad är Jenkins?

Jenkins är en öppen källkodsserver för kontinuerlig integration inskriven Java för orkestrering av en kedja av åtgärder för att uppnå den kontinuerliga integrationsprocessen på ett automatiserat sätt. Jenkins stödjer hela utvecklingslivscykeln för programvara från att bygga, testa, dokumentera programvaran, distribuera och andra stadier av mjukvaruutvecklingens livscykel.

Jenkins är en mycket använd applikation runt om i världen som har cirka 300 XNUMX installationer och som växer dag för dag. Genom att använda Jenkins kan mjukvaruföretag påskynda sin mjukvaruutvecklingsprocess, eftersom Jenkins kan automatisera bygg och test i snabb takt.

Det är en serverbaserad applikation och kräver en webbserver som Apache Tomcat. Anledningen till att Jenkins programvara blev så populär är att dess övervakning av upprepade uppgifter som uppstår under utvecklingen av ett projekt. Till exempel, om ditt team utvecklar ett projekt kommer Jenkins kontinuerligt att testa dina projektbyggen och visa dig felen i tidiga skeden av din utveckling.

Vad är kontinuerlig integration?

Kontinuerlig integration är en process för att integrera kodändringar från flera utvecklare i ett enda projekt många gånger. Programvaran testas omedelbart efter en kodkommit. Med varje kodbekräftelse byggs och testas kod. Om testet är godkänt testas byggnaden för distribution. Om distributionen lyckas skickas koden till produktion.

Denna commit, bygg, test och distribution är en kontinuerlig process och därav namnet kontinuerlig integration/distribution.

Hur fungerar Jenkins?

Jenkins är en serverbaserad applikation och kräver en webbserver som Apache Tomcat för att köras på olika plattformar som Windows, Linux, macOS, Unix, etc. För att använda Jenkins måste du skapa pipelines som är en serie steg som en Jenkins-server kommer att ta. Jenkins Continuous Integration Pipeline är ett kraftfullt instrument som består av en uppsättning verktyg utformade för att värd, bildskärm, sammanställa och test kod, eller kodändringar, som:

  • Server för kontinuerlig integration (Jenkins, Bamboo, CruiseControl, TeamCity, och andra)
  • Källkontrollverktyg (t.ex. CVS, SVN, GIT, Mercurial, Perforce, ClearCase och andra)
  • Bygg verktyg (Make, ANT, Maven, Ivy, Gradle, och andra)
  • Ramverk för automationstestning (Selenium, Appium, TestComplete, UFT och andra)

Jenkins historia

  • Kohsuke Kawaguchi, a Java utvecklaren, som arbetar på SUN Microsystems, var trött på att bygga koden och repetera fel upprepade gånger. År 2004 skapade en automatiseringsserver som heter Hudson som automatiserar bygg- och testuppgifter.
  • 2011, Oracle som ägde Sun Microsystems hade en tvist med Hudson open source-gemenskap, så de klaffade Hudson och döpte om det till Jenkins.
  • Både Hudson och Jenkins fortsatte att verka oberoende. Men på kort tid förvärvade Jenkins många projekt och bidragsgivare medan Hudson var kvar med bara 32 projekt. Med tiden blev Jenkins mer populär, och Hudson underhålls inte längre.

Varför använda kontinuerlig integration med Jenkins?

Vissa människor kanske tror att det gammaldags sättet att utveckla programvaran är det bättre sättet. Låt oss förstå fördelarna med CI med Jenkins med följande exempel

Låt oss föreställa oss att det finns ett tiotal utvecklare som arbetar med en delat förråd. Vissa utvecklare slutför sin uppgift på 25 dagar medan andra tar 30 dagar att slutföra.

Före Jenkins Efter Jenkins
När alla utvecklare hade slutfört sina tilldelade kodningsuppgifter brukade de begå sin kod samtidigt. Later, Build testas och distribueras.

Code commit byggdes, och testcykeln var mycket sällsynt, och en enda build gjordes efter många dagar.

Koden byggs och testas så fort utvecklaren begår kod. Jenkin kommer att bygga och testa kod många gånger under dagen

Om bygget lyckas distribuerar Jenkins källan till testservern och meddelar distributionsteamet.

Om bygget misslyckas kommer Jenkins att meddela felen till utvecklarteamet.

Eftersom koden byggdes på en gång, skulle vissa utvecklare behöva vänta tills andra utvecklare är klara med kodningen för att kontrollera sin konstruktion Koden byggs omedelbart efter att någon av utvecklarna åtar sig.
Det är inte en lätt uppgift att isolera, upptäcka och åtgärda fel för flera commits. Eftersom koden byggs efter varje commit av en enskild utvecklare, är det lätt att upptäcka vems kod som orsakade att den byggda misslyckades
Kodbygge och testprocess är helt manuella, så det finns många chanser att misslyckas. Automatiserad bygg- och testprocess som sparar tid och minskar defekter.
Koden distribueras när alla fel är åtgärdade och testade. Koden distribueras efter varje framgångsrik konstruktion och test.
Utvecklingscykeln är långsam Utvecklingscykeln är snabb. Nya funktioner är mer lättillgängliga för användare. Ökar vinsten.

Verklig fallstudie av kontinuerlig integration

Jag är säker på att ni alla känner till den gamla Nokia-telefonen. Nokia brukade implementera en procedur som kallas nattlig konstruktion. Efter flera åtaganden från olika utvecklare under dagen byggdes programvaran varje natt. Eftersom programvaran bara byggdes en gång om dagen, är det en enorm smärta att isolera, identifiera och åtgärda felen i en stor kodbas.

Later, antog de Continuous Integration-metoden. Mjukvaran byggdes och testades så snart en utvecklare begick kod. Om något fel upptäcks kan respektive utvecklare snabbt åtgärda defekten.

Verklig fallstudie av kontinuerlig integration

Jenkins plugins

Som standard kommer Jenkins med en begränsad uppsättning funktioner. Om du vill integrera din Jenkins-installation med versionskontrollverktyg som Git, måste du installera plugins relaterade till Git. Faktum är att för integration med verktyg som Maven, Amazon EC2 måste du installera respektive plugins i din Jenkins.

Jenkins plugins
Plugins integration i Jenkins

Fördelar med att använda Jenkins

  • Jenkins hanteras av samhället som är väldigt öppet. Varje månad håller de offentliga möten och tar emot synpunkter från allmänheten för utvecklingen av Jenkins projekt.
  • Hittills är cirka 280 biljetter stängda, och projektet publicerar stabila släpp var tredje månad.
  • I takt med att tekniken växer, växer Jenkins också. Hittills har Jenkins cirka 320 plugins publicerade i sin plugindatabas. Med plugins blir Jenkins ännu mer kraftfull och funktionsrik.
  • Jenkins verktyg stöder också molnbaserad arkitektur så att du kan distribuera Jenkins i molnbaserade plattformar.
  • Anledningen till att Jenkins blev populär är att den skapades av en utvecklare för utvecklare.

Nackdelar med att använda Jenkins

Även om Jenkins är ett mycket kraftfullt verktyg, har det sina brister.

  • Dess gränssnitt är föråldrat och inte användarvänligt jämfört med nuvarande UI-trender.
  • Även om Jenkins är älskad av många utvecklare, är det inte så lätt att underhålla det eftersom Jenkins körs på en server och kräver vissa färdigheter som serveradministratör för att övervaka dess aktivitet.
  • En av anledningarna till att många människor inte implementerar Jenkins är på grund av dess svårighet att installera och konfigurera Jenkins.
  • Kontinuerliga integrationer bryter regelbundet på grund av några små inställningsändringar. Kontinuerlig integration kommer att pausas och kräver därför viss uppmärksamhet från utvecklare.

Slutsats

  • I kontinuerlig integration byggs och testas programvaran omedelbart efter en kodkommit
  • Jenkins användes för att iscensätta en kedja av åtgärder för kontinuerlig integration i ett mjukvaruprojekt
  • Innan Jenkins när alla utvecklare hade slutfört sina tilldelade kodningsuppgifter brukade de begå sin kod samtidigt. Later, Build testas och distribueras.
  • Efter Jenkins byggs koden och testas så snart utvecklaren begår kod. Jenkin kommer att bygga och testa kod många gånger under dagen
  • Som standard kommer Jenkins med en begränsad uppsättning funktioner. Om du vill integrera din Jenkins-installation med versionskontrollverktyg som Git, måste du installera plugins relaterade till Git. Kolla också Bästa Jenkins alternativa verktyg
  • De största fördelarna med Jenkins är att det hanteras av samhället som håller offentliga möten och tar emot synpunkter från allmänheten för utvecklingen av Jenkins-projekt
  • Den största nackdelen med Jenkins är att dess gränssnitt är föråldrat och inte användarvänligt jämfört med nuvarande UI-trender. Om du överväger andra alternativ som kan erbjuda en mer modern användarupplevelse, kanske du vill utforska några av de toppverktyg för kontinuerlig integration tillgängliga.