Hva er Jenkins? Hvorfor bruke Continuous Integration (CI) Tool?
Hva er Jenkins?
Jenkins er en åpen kildekode Continuous Integration-server skrevet inn Java for å orkestrere en kjede av handlinger for å oppnå den kontinuerlige integrasjonsprosessen på en automatisert måte. Jenkins støtter hele utviklingslivssyklusen til programvare fra bygging, testing, dokumentering av programvaren, distribusjon og andre stadier av programvareutviklingens livssyklus.
Jenkins er et mye brukt program over hele verden som har rundt 300 XNUMX installasjoner og vokser dag for dag. Ved å bruke Jenkins kan programvareselskaper akselerere programvareutviklingsprosessen sin, ettersom Jenkins kan automatisere bygg og test i rask hastighet.
Det er en serverbasert applikasjon og krever en webserver som Apache Tomcat. Grunnen til at Jenkins-programvaren ble så populær er at den overvåker gjentatte oppgaver som oppstår under utviklingen av et prosjekt. For eksempel, hvis teamet ditt utvikler et prosjekt, vil Jenkins kontinuerlig teste prosjektbyggene dine og vise deg feilene i tidlige stadier av utviklingen.
Hva er kontinuerlig integrasjon?
Kontinuerlig integrasjon er en prosess med å integrere kodeendringer fra flere utviklere i et enkelt prosjekt mange ganger. Programvaren testes umiddelbart etter en kodebekreftelse. Med hver kodebekreftelse bygges og testes koden. Hvis testen er bestått, testes bygningen for distribusjon. Hvis distribusjonen er vellykket, blir koden sendt til produksjon.
Denne forpliktelsen, byggingen, testen og distribusjonen er en kontinuerlig prosess og derav navnet kontinuerlig integrasjon/distribusjon.
Hvordan fungerer Jenkins?
Jenkins er en serverbasert applikasjon og krever en webserver som Apache Tomcat for å kjøre på ulike plattformer som Windows, Linux, macOS, Unix, etc. For å bruke Jenkins, må du lage pipelines som er en rekke trinn som en Jenkins-server vil ta. Jenkins Continuous Integration Pipeline er et kraftig instrument som består av et sett med verktøy designet for å vert, overvåke, kompilere og test kode eller kodeendringer, som:
- Kontinuerlig integrasjonsserver (Jenkins, Bamboo, CruiseControl, TeamCity, og andre)
- Kildekontrollverktøy (f.eks. CVS, SVN, GIT, Mercurial, Perforce, ClearCase og andre)
- Bygg verktøy (Make, ANT, Maven, Ivy, Gradle, og andre)
- Ramverk for testing av automatisering (Selenium, Appium, TestComplete, UFT og andre)
Jenkins historie
- Kohsuke Kawaguchi, en Java utvikler, som jobbet hos SUN Microsystems, var lei av å bygge koden og fikse feil gjentatte ganger. I 2004 opprettet en automatiseringsserver kalt Hudson som automatiserer bygge- og testoppgaver.
- I 2011, Oracle som eide Sun Microsystems hadde en tvist med Hudson åpen kildekode-fellesskap, så de gaflet Hudson og ga det nytt navn til Jenkins.
- Både Hudson og Jenkins fortsatte å operere uavhengig. Men i løpet av kort tid skaffet Jenkins mange prosjekter og bidragsytere mens Hudson forble med bare 32 prosjekter. Med tiden ble Jenkins mer populær, og Hudson vedlikeholdes ikke lenger.
Hvorfor bruke kontinuerlig integrasjon med Jenkins?
Noen tror kanskje at den gammeldagse måten å utvikle programvaren på er den beste måten. La oss forstå fordelene med CI med Jenkins med følgende eksempel
La oss forestille oss at det er rundt 10 utviklere som jobber med en delt depot. Noen utviklere fullfører oppgaven sin på 25 dager, mens andre tar 30 dager å fullføre.
Før Jenkins | Etter Jenkins |
---|---|
Når alle utviklere hadde fullført de tildelte kodeoppgavene, pleide de å forplikte koden sin samtidig. Later, Bygg er testet og distribuert.
Code commit bygget, og testsyklusen var svært sjelden, og en enkelt build ble utført etter mange dager. |
Koden bygges og testes så snart utvikleren forplikter koden. Jenkin vil bygge og teste kode mange ganger i løpet av dagen
Hvis byggingen er vellykket, vil Jenkins distribuere kilden til testserveren og varsle distribusjonsteamet. Hvis byggingen mislykkes, vil Jenkins varsle utviklerteamet om feilene. |
Siden koden ble bygget på en gang, ville noen utviklere måtte vente til andre utviklere er ferdige med kodingen for å sjekke bygget | Koden bygges umiddelbart etter at en av utviklerne forplikter seg. |
Det er ikke en lett oppgave å isolere, oppdage og fikse feil for flere forpliktelser. | Siden koden bygges etter hver forpliktelse av en enkelt utvikler, er det lett å oppdage hvem sin kode som forårsaket at den bygget mislyktes |
Kodebygg og testprosess er helt manuelle, så det er mange sjanser for feil. | Automatisert bygge- og testprosess sparer timing og reduserer defekter. |
Koden distribueres når alle feilene er fikset og testet. | Koden distribueres etter hver vellykket bygg og test. |
Utviklingssyklusen er treg | Utviklingssyklusen er rask. Nye funksjoner er lettere tilgjengelig for brukere. Øker fortjenesten. |
Real-world case-studie av kontinuerlig integrasjon
Jeg er sikker på at alle dere er klar over den gamle Nokia-telefonen. Nokia pleide å implementere en prosedyre kalt nattlig bygg. Etter flere forpliktelser fra forskjellige utviklere i løpet av dagen, ble programvaren bygget hver natt. Siden programvaren ble bygget bare én gang om dagen, er det en stor smerte å isolere, identifisere og fikse feilene i en stor kodebase.
Later, tok de i bruk tilnærmingen til kontinuerlig integrasjon. Programvaren ble bygget og testet så snart en utvikler forpliktet kode. Hvis det oppdages en feil, kan den respektive utvikleren raskt fikse feilen.
Jenkins plugins
Som standard kommer Jenkins med et begrenset sett med funksjoner. Hvis du vil integrere Jenkins-installasjonen din med versjonskontrollverktøy som Git, må du installere plugins relatert til Git. Faktisk, for integrasjon med verktøy som Maven, Amazon EC2, må du installere respektive plugins i Jenkins.
Fordeler med å bruke Jenkins
- Jenkins blir administrert av samfunnet som er veldig åpent. Hver måned holder de offentlige møter og tar innspill fra publikum for utviklingen av Jenkins-prosjektet.
- Så langt er rundt 280 billetter stengt, og prosjektet publiserer stabil utgivelse hver tredje måned.
- Ettersom teknologien vokser, vokser Jenkins også. Så langt har Jenkins rundt 320 plugins publisert i sin plugin-database. Med plugins blir Jenkins enda kraftigere og mer funksjonsrikt.
- Jenkins-verktøyet støtter også skybasert arkitektur slik at du kan distribuere Jenkins i skybaserte plattformer.
- Grunnen til at Jenkins ble populær er at den ble laget av en utvikler for utviklere.
Ulemper ved å bruke Jenkins
Selv om Jenkins er et veldig kraftig verktøy, har det sine feil.
- Grensesnittet er utdatert og ikke brukervennlig sammenlignet med gjeldende UI-trender.
- Selv om Jenkins er elsket av mange utviklere, er det ikke så lett å vedlikeholde det fordi Jenkins kjører på en server og krever noen ferdigheter som serveradministrator for å overvåke aktiviteten.
- En av grunnene til at mange mennesker ikke implementerer Jenkins er på grunn av vanskelighetene med å installere og konfigurere Jenkins.
- Kontinuerlige integrasjoner bryter regelmessig på grunn av noen små innstillingsendringer. Kontinuerlig integrasjon vil bli satt på pause og krever derfor en viss oppmerksomhet fra utviklere.
Konklusjon
- I kontinuerlig integrasjon, etter en kodebekreftelse, bygges og testes programvaren umiddelbart
- Jenkins brukes til å orkestrere en kjede av handlinger for kontinuerlig integrasjon i et programvareprosjekt
- Før Jenkins, da alle utviklere hadde fullført de tildelte kodeoppgavene, pleide de å forplikte koden sin samtidig. Later, Bygg er testet og distribuert.
- Etter Jenkins bygges koden og testes så snart utvikleren forplikter koden. Jenkin vil bygge og teste kode mange ganger i løpet av dagen
- Som standard kommer Jenkins med et begrenset sett med funksjoner. Hvis du vil integrere Jenkins-installasjonen din med versjonskontrollverktøy som Git, må du installere plugins relatert til Git. Sjekk også Beste Jenkins alternative verktøy
- De største fordelene med Jenkins er at det administreres av samfunnet som holder offentlige møter og tar innspill fra publikum for utvikling av Jenkins-prosjekter
- Den største ulempen med Jenkins er at grensesnittet er utdatert og ikke brukervennlig sammenlignet med gjeldende UI-trender. Hvis du vurderer andre alternativer som kan tilby en mer moderne brukeropplevelse, kan det være lurt å utforske noen av disse topp kontinuerlige integrasjonsverktøy tilgjengelig.