Hvad er Jenkins? Hvorfor bruge Continuous Integration (CI) Tool?

Hvad er Jenkins?

Jenkins er en open source kontinuerlig integrationsserver skrevet i Java til at orkestrere en kæde af handlinger for at opnå den kontinuerlige integrationsproces på en automatiseret måde. Jenkins understøtter softwarens fulde udviklingslivscyklus fra bygning, test, dokumentation af softwaren, implementering og andre stadier af softwareudviklingens livscyklus.

Jenkins er en meget brugt applikation over hele verden, der har omkring 300 installationer og vokser dag for dag. Ved at bruge Jenkins kan softwarevirksomheder accelerere deres softwareudviklingsproces, da Jenkins kan automatisere build og test i et hurtigt tempo.

Det er en serverbaseret applikation og kræver en webserver som Apache Tomcat. Grunden til, at Jenkins software blev så populær, er dens overvågning af gentagne opgaver, der opstår under udviklingen af ​​et projekt. For eksempel, hvis dit team udvikler et projekt, vil Jenkins løbende teste dine projektbyggerier og vise dig fejlene i de tidlige stadier af din udvikling.

Hvad er kontinuerlig integration?

Kontinuerlig integration er en proces med at integrere kodeændringer fra flere udviklere i et enkelt projekt mange gange. Softwaren testes umiddelbart efter en kode-commit. Med hver kode-commit bliver kode bygget og testet. Hvis testen er bestået, testes bygningen til implementering. Hvis implementeringen lykkes, skubbes koden til produktion.

Denne forpligtelse, opbygning, test og implementering er en kontinuerlig proces og deraf navnet kontinuerlig integration/implementering.

Hvordan virker Jenkins?

Jenkins er en serverbaseret applikation og kræver en webserver som Apache Tomcat for at køre på forskellige platforme som f.eks. Windows, Linux, macOS, Unix osv. For at bruge Jenkins skal du oprette pipelines, som er en række trin, som en Jenkins-server vil tage. Jenkins Continuous Integration Pipeline er et kraftfuldt instrument, der består af et sæt værktøjer designet til at host, overvåge, kompilere og prøve kode eller kodeændringer, som:

  • Kontinuerlig integrationsserver (Jenkins, Bamboo, CruiseControl, TeamCityog andre)
  • Kildekontrolværktøj (f.eks. CVS, SVN, GIT, Mercurial, Perforce, ClearCase og andre)
  • Byg værktøj (Make, ANT, Maven, Ivy, Gradleog andre)
  • Testramme for automatisering (Selenium, Appium, TestComplete, UFT og andre)

Jenkins historie

  • Kohsuke Kawaguchi, en Java udvikler, der arbejder hos SUN Microsystems, var træt af at bygge koden og rette fejl gentagne gange. I 2004 oprettede en automatiseringsserver kaldet Hudson, der automatiserer bygge- og testopgaver.
  • I 2011, blev Oracle der ejede Sun Microsystems havde en tvist med Hudson open source-fællesskab, så de forkastede Hudson og omdøbte det til Jenkins.
  • Både Hudson og Jenkins fortsatte med at operere uafhængigt. Men på kort tid erhvervede Jenkins en masse projekter og bidragydere, mens Hudson forblev med kun 32 projekter. Med tiden blev Jenkins mere populær, og Hudson opretholdes ikke længere.

Hvorfor bruge kontinuerlig integration med Jenkins?

Nogle mennesker tror måske, at den gammeldags måde at udvikle softwaren på er den bedre måde. Lad os forstå fordelene ved CI med Jenkins med følgende eksempel

Lad os forestille os, at der er omkring 10 udviklere, der arbejder på en delt depot. Nogle udviklere fuldfører deres opgave på 25 dage, mens andre tager 30 dage at fuldføre.

Før Jenkins Efter Jenkins
Når alle udviklere havde fuldført deres tildelte kodningsopgaver, plejede de at begå deres kode på samme tid. Later, Build er testet og implementeret.

Kode commit bygget, og testcyklus var meget sjælden, og en enkelt build blev udført efter mange dage.

Koden bygges og testes, så snart udvikleren begår kode. Jenkin vil bygge og teste kode mange gange i løbet af dagen

Hvis opbygningen lykkes, vil Jenkins implementere kilden på testserveren og underrette implementeringsteamet.

Hvis bygningen mislykkes, vil Jenkins underrette udviklerteamet om fejlene.

Da koden blev bygget på én gang, ville nogle udviklere skulle vente, indtil andre udviklere er færdige med at kode for at kontrollere deres build Koden bygges umiddelbart efter, at nogen af ​​udviklerne forpligter sig.
Det er ikke en let opgave at isolere, opdage og rette fejl for flere commits. Da koden er bygget efter hver commit af en enkelt udvikler, er det nemt at opdage, hvis kode fik den build til at fejle
Kode build og testproces er helt manuelle, så der er mange chancer for fejl. Automatiseret bygge- og testproces sparer timing og reducerer defekter.
Koden implementeres, når alle fejlene er rettet og testet. Koden implementeres efter hver succesfuld build og test.
Udviklingscyklussen er langsom Udviklingscyklussen er hurtig. Nye funktioner er lettere tilgængelige for brugerne. Øger overskuddet.

Real-world casestudie af kontinuerlig integration

Jeg er sikker på, at I alle kender til den gamle Nokia-telefon. Nokia plejede at implementere en procedure kaldet nightly build. Efter flere tilsagn fra forskellige udviklere i løbet af dagen, blev softwaren bygget hver nat. Da softwaren kun blev bygget én gang om dagen, er det en enorm smerte at isolere, identificere og rette fejlene i en stor kodebase.

Later, vedtog de en kontinuerlig integrationstilgang. Softwaren blev bygget og testet, så snart en udvikler forpligtede sig til kode. Hvis der opdages en fejl, kan den respektive udvikler hurtigt rette fejlen.

Real-world Case Study of Continuous Integration

Jenkins plugins

Som standard kommer Jenkins med et begrænset sæt funktioner. Hvis du ønsker at integrere din Jenkins-installation med versionskontrolværktøjer som Git, så skal du installere plugins relateret til Git. Faktisk for integration med værktøjer som Maven, Amazon EC2, skal du installere respektive plugins i din Jenkins.

Jenkins plugins
Plugins-integration i Jenkins

Fordele ved at bruge Jenkins

  • Jenkins bliver styret af fællesskabet, som er meget åbent. Hver måned holder de offentlige møder og tager imod input fra offentligheden til udviklingen af ​​Jenkins-projektet.
  • Indtil videre er omkring 280 billetter lukket, og projektet udgiver stabil udgivelse hver tredje måned.
  • Efterhånden som teknologien vokser, vokser Jenkins også. Indtil videre har Jenkins omkring 320 plugins offentliggjort i sin plugins-database. Med plugins bliver Jenkins endnu mere kraftfuld og funktionsrig.
  • Jenkins-værktøjet understøtter også cloud-baseret arkitektur, så du kan implementere Jenkins i cloud-baserede platforme.
  • Grunden til, at Jenkins blev populær, er, at den blev skabt af en udvikler til udviklere.

Ulemper ved at bruge Jenkins

Selvom Jenkins er et meget kraftfuldt værktøj, har det sine mangler.

  • Dens grænseflade er forældet og ikke brugervenlig sammenlignet med nuværende UI-tendenser.
  • Selvom Jenkins er elsket af mange udviklere, er det ikke så nemt at vedligeholde det, fordi Jenkins kører på en server og kræver nogle færdigheder som serveradministrator for at overvåge dens aktivitet.
  • En af grundene til, at mange mennesker ikke implementerer Jenkins, er på grund af dets vanskeligheder med at installere og konfigurere Jenkins.
  • Kontinuerlige integrationer går jævnligt i stykker på grund af nogle små indstillingsændringer. Kontinuerlig integration vil blive sat på pause og kræver derfor en vis opmærksomhed fra udvikleren.

Konklusion

  • I Continuous Integration, efter en kode-commit, bliver softwaren bygget og testet med det samme
  • Jenkins brugt til at orkestrere en kæde af handlinger til kontinuerlig integration i et softwareprojekt
  • Før Jenkins, da alle udviklere havde fuldført deres tildelte kodningsopgaver, plejede de at begå deres kode på samme tid. Later, Build er testet og implementeret.
  • Efter Jenkins bygges koden og testes, så snart udvikleren begår kode. Jenkin vil bygge og teste kode mange gange i løbet af dagen
  • Som standard kommer Jenkins med et begrænset sæt funktioner. Hvis du ønsker at integrere din Jenkins-installation med versionskontrolværktøjer som Git, så skal du installere plugins relateret til Git. Tjek også Bedste Jenkins Alternative værktøjer
  • De største fordele ved Jenkins er, at det styres af samfundet, som holder offentlige møder og tager input fra offentligheden til udviklingen af ​​Jenkins-projekter
  • Den største ulempe ved Jenkins er, at dens grænseflade er forældet og ikke brugervenlig sammenlignet med nuværende UI-trends. Hvis du overvejer andre muligheder, der kan tilbyde en mere moderne brugeroplevelse, vil du måske udforske nogle af de top kontinuerlige integrationsværktøjer tilgængelige.