Vad är Jenkins? Continuous Integration (CI) Tool

Innehållsförteckning:

Anonim

Vad är Jenkins?

Jenkins är en kontinuerlig integrationsserver med öppen källkod som kan ordna en kedja av åtgärder som hjälper till att uppnå den kontinuerliga integrationsprocessen (och inte bara) på ett automatiserat sätt.

Jenkins är gratis och är helt skrivet på Java. Jenkins är ett allmänt använt program runt om i världen som har cirka 300 000 installationer och växer dag för dag.

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

Genom att använda Jenkins kan mjukvaruföretag påskynda sin mjukvaruutvecklingsprocess, eftersom Jenkins kan automatisera bygga och testa i snabb takt. Jenkins stöder hela utvecklingslivscykeln för programvara från att bygga, testa, dokumentera programvaran, distribuera och andra steg i en livscykel för mjukvaruutveckling.

I den här handledningen lär du dig

  • Vad är Jenkins?
  • Vad är kontinuerlig integration?
  • Jenkins historia
  • Varför använda kontinuerlig integration med Jenkins?
  • Verklig fallstudie av kontinuerlig integration
  • Fördelar med att använda Jenkins
  • Nackdelar med att använda Jenkins

Vad är kontinuerlig integration?

I kontinuerlig integration efter kodförpliktelse byggs programvaran och testas omedelbart. I ett stort projekt med många utvecklare görs åtaganden många gånger under en dag. För varje kommit kod byggs och testas. Om testet klaras testas build för distribution. Om distribution är en framgång skjuts koden till produktion. Denna kommit, bygga, testa och distribuera är en kontinuerlig process och därav namnet kontinuerlig integration / distribution.

En kontinuerlig integrationsrörledning är ett kraftfullt instrument som består av en uppsättning verktyg som är utformade för att vara värd , övervaka , kompilera och testa kod eller kodförändringar, som:

  • Kontinuerlig integrationsserver (Jenkins, Bamboo, CruiseControl, TeamCity och andra)
  • Source Control Tool (t.ex. CVS, SVN, GIT, Mercurial, Perforce, ClearCase och andra)
  • Byggverktyg (Make, ANT, Maven, Ivy, Gradle och andra)
  • Ramverk för automatiseringstest (Selen, Appium, TestComplete, UFT och andra)

Jenkins historia

  • Kohsuke Kawaguchi, en Java-utvecklare, som arbetar på SUN Microsystems, var trött på att bygga koden och fixa fel upprepade gånger. År 2004 skapade en automatiseringsserver som heter Hudson som automatiserar bygg- och testuppgift.
  • År 2011 hade Oracle som ägde Sun Microsystems en tvist med Hudson open source-community, så de gafflade Hudson och döpte om det till Jenkins.
  • Både Hudson och Jenkins fortsatte att arbeta självständigt. Men på kort tid förvärvade Jenkins många projekt och bidragsgivare medan Hudson bara stod 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 cirka tio utvecklare som arbetar med ett delat arkiv. Vissa utvecklare slutför sin uppgift på 25 dagar medan andra tar 30 dagar att slutföra.

Innan Jenkins Efter Jenkins
När alla utvecklare hade slutfört sina tilldelade kodningsuppgifter brukade de begå sin kod samtidigt. Senare testas och distribueras Build. Code commit byggt, och testcykeln var mycket sällsynt, och en enda build gjordes efter många dagar. Koden byggs och testas så snart utvecklare begår kod. Jenkin kommer att bygga och testa kod många gånger under dagen Om byggningen lyckas kommer Jenkins att distribuera källan till testservern och meddela distributionsteamet. Om konstruktionen misslyckas kommer Jenkins att meddela felen till utvecklargruppen.
Eftersom koden byggdes på en gång skulle vissa utvecklare behöva vänta tills andra utvecklare har kodat för att kontrollera deras byggnad Koden byggs omedelbart efter att någon av utvecklarna har begått.
Det är inte en lätt uppgift att isolera, upptäcka och fixa fel för flera åtaganden. Eftersom koden byggs efter varje engagemang från en enda utvecklare är det lätt att upptäcka vars kod orsakade att byggnaden misslyckades
Kodbyggnad och testprocess är helt manuell, så det finns många chanser för misslyckande. Automatiserad byggnad och testprocess sparar tidpunkt och minskar defekter.
Koden distribueras när alla fel har fixats och testats. Koden distribueras efter varje framgångsrik build och test.
Utvecklingscykeln är långsam Utvecklingscykeln är snabb. Nya funktioner är lättare tillgängliga för användarna. Ö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 ett förfarande som kallas nattlig byggnad. Efter flera åtaganden från olika utvecklare under dagen byggdes programvaran varje natt. Eftersom programvaran byggdes bara en gång om dagen är det en enorm smärta att isolera, identifiera och åtgärda felen i en stor kodbas.

Senare antog de en kontinuerlig integrationsstrategi. Programvaran byggdes och testades så snart en utvecklare begick kod. Om något fel upptäcks kan respektive utvecklare snabbt åtgärda defekten.

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. För integrering med verktyg som Maven, Amazon EC2 måste du faktiskt installera respektive plugins i dina Jenkins.

Plugin-integration i Jenkins

Fördelar med att använda Jenkins

  • Jenkins hanteras av samhället som är mycket öppet. Varje månad håller de offentliga möten och tar information från allmänheten för utvecklingen av Jenkins-projektet.
  • Hittills är cirka 280 biljetter stängda och projektet publicerar en stabil release var tredje månad.
  • När tekniken växer växer Jenkins också. Hittills har Jenkins cirka 320 plugins publicerade i sin plugin-databas. Med plugins blir Jenkins ännu mer kraftfull och funktionsrik.
  • Jenkins 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.

  • Gränssnittet är föråldrat och inte användarvänligt jämfört med nuvarande UI-trender.
  • Även om Jenkins älskas av många utvecklare är det inte så enkelt att underhålla det eftersom Jenkins körs på en server och kräver vissa kunskaper som serveradministratör för att övervaka dess aktivitet.
  • En av anledningarna till att många inte implementerar Jenkins beror på dess svårigheter att installera och konfigurera Jenkins.
  • Kontinuerliga integrationer bryts regelbundet på grund av några små inställningsändringar. Kontinuerlig integration kommer att pausas och kräver därför en del utvecklaruppmärksamhet.

Slutsats:

  • I kontinuerlig integration, efter en kodförpliktelse, byggs och testas programvaran omedelbart
  • Jenkins är en öppen källkod för kontinuerlig integrationsserver som kan ordna en kedja av åtgärder
  • Innan Jenkins, när alla utvecklare hade slutfört sina tilldelade kodningsuppgifter, brukade de begå sin kod samtidigt. Senare testas och distribueras Build.
  • Efter Jenkins byggs koden och testar så snart utvecklare 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
  • De största fördelarna med Jenkins är att den hanteras av samhället som håller offentliga möten och tar insatser från allmänheten för utveckling av Jenkins-projekt
  • Den största nackdelen med Jenkin är att dess gränssnitt är inaktuellt och inte användarvänligt jämfört med nuvarande UI-trender.