Mis on Jenkins? Miks kasutada pideva integreerimise (CI) tööriista?

Mis on Jenkins?

Jenkins on avatud lähtekoodiga pideva integratsiooni server, mis on sisse kirjutatud Java toimingute ahela korraldamiseks, et saavutada pidev integratsiooniprotsess automatiseeritud viisil. Jenkins toetab kogu tarkvara arenduse elutsüklit alates tarkvara loomisest, testimisest, dokumenteerimisest, juurutamisest ja muudest tarkvaraarenduse elutsükli etappidest.

Jenkins on laialdaselt kasutatav rakendus kogu maailmas, millel on umbes 300 XNUMX installi ja mis kasvab iga päevaga. Jenkinsi kasutades saavad tarkvaraettevõtted oma tarkvaraarendusprotsessi kiirendada, kuna Jenkins saab koostamist ja testimist kiiresti automatiseerida.

See on serveripõhine rakendus ja nõuab sellist veebiserverit nagu Apache Tomcat. Põhjus, miks Jenkinsi tarkvara nii populaarseks sai, on see, et see jälgis projekti arendamise käigus tekkivaid korduvaid ülesandeid. Näiteks kui teie meeskond arendab projekti, testib Jenkins pidevalt teie projektiversioone ja näitab teile vigu teie arenduse varases staadiumis.

Mis on pidev integratsioon?

Pidev integreerimine on protsess, mille käigus integreeritakse mitu korda mitme arendaja koodimuudatused ühte projekti. Tarkvara testitakse kohe pärast koodi kinnitamist. Iga koodi kinnitamisega koostatakse ja testitakse kood. Kui test läbitakse, testitakse järku juurutamist. Kui juurutamine õnnestub, lükatakse kood tootmisse.

See sidumine, koostamine, testimine ja juurutamine on pidev protsess ja sellest ka nimi pidev integreerimine/juurutamine.

Kuidas Jenkins töötab?

Jenkins on serveripõhine rakendus ja nõuab erinevatel platvormidel töötamiseks veebiserverit nagu Apache Tomcat Windows, Linux macOS, Unix jne. Jenkinsi kasutamiseks peate looma konveierid, mis on rida samme, mida Jenkinsi server teeb. Jenkins Continuous Integration Pipeline on võimas instrument, mis koosneb tööriistade komplektist, mis on loodud selleks võõrustaja, jälgida, kompileerima ja test kood või koodimuudatused, näiteks:

  • Pideva integratsiooni server (Jenkins, Bamboo, CruiseControl, TeamCityja teised)
  • Allika juhtimistööriist (nt CVS, SVN, GIT, Mercurial, Perforce, ClearCase ja teised)
  • Ehitustööriist (Make, ANT, Maven, Ivy, Gradleja teised)
  • Automatiseerimise testimise raamistik (Selenium, Appium, TestComplete, UFT ja teised)

Jenkini ajalugu

  • Kohsuke Kawaguchi, a Java SUN Microsystemsis töötav arendaja oli koodi koostamisest ja korduvast vigade parandamisest väsinud. Aastal 2004 lõi automatiseerimisserveri nimega Hudson, mis automatiseerib ehitamise ja testimise.
  • Aastal 2011, Oracle kellel Sun Microsystems kuulus, tekkis vaidlus Hudsoni avatud lähtekoodiga kogukonnaga, mistõttu nad eraldasid Hudsonist ja nimetasid selle ümber Jenkinsiks.
  • Nii Hudson kui ka Jenkins jätkasid tegutsemist iseseisvalt. Kuid lühikese aja jooksul omandas Jenkins palju projekte ja kaastöölisi, samal ajal kui Hudson jäi vaid 32 projekti juurde. Aja jooksul muutus Jenkins populaarsemaks ja Hudsonit enam ei hooldata.

Miks kasutada Jenkinsiga pidevat integreerimist?

Mõned inimesed võivad arvata, et vanamoodne viis tarkvara arendamiseks on parem viis. Mõistame Jenkinsi CI eeliseid järgmise näite abil

Kujutagem ette, et a kallal töötab umbes 10 arendajat jagatud hoidla. Mõned arendajad lõpetavad oma ülesande 25 päevaga, teised aga 30 päevaga.

Enne Jenkinsit Pärast Jenkinsi
Kui kõik arendajad olid neile määratud kodeerimisülesanded täitnud, kasutasid nad oma koodi korraga. Later, Build on testitud ja kasutusele võetud.

Code Commit ehitatud ja katsetsükkel oli väga harv ning üks ehitamine tehti paljude päevade pärast.

Kood luuakse ja testitakse niipea, kui arendaja koodi sisestab. Jenkin ehitab ja testib koodi mitu korda päeva jooksul

Kui ehitamine õnnestub, juurutab Jenkins allika testserverisse ja teavitab sellest juurutusmeeskonda.

Kui ehitamine ebaõnnestub, teavitab Jenkins vigadest arendajameeskonda.

Kuna kood koostati korraga, peaksid mõned arendajad ootama, kuni teised arendajad kodeerimise lõpetavad, et oma konstruktsiooni kontrollida Kood luuakse kohe pärast mis tahes arendaja kohustusi.
Vigade isoleerimine, tuvastamine ja parandamine ei ole lihtne ülesanne. Kuna kood luuakse pärast ühe arendaja igat kinnitust, on lihtne tuvastada, kelle kood põhjustas koostamise ebaõnnestumise
Koodi koostamine ja katseprotsess on täielikult käsitsi tehtud, seega on ebaõnnestumise tõenäosus palju. Automatiseeritud ehitus- ja testimisprotsess säästab aega ja vähendab defekte.
Kood juurutatakse, kui kõik vead on parandatud ja testitud. Kood juurutatakse pärast iga edukat ehitamist ja testimist.
Arendustsükkel on aeglane Arengutsükkel on kiire. Uued funktsioonid on kasutajatele hõlpsamini kättesaadavad. Suurendab kasumit.

Pideva integratsiooni reaalne juhtumiuuring

Olen kindel, et kõik olete vanast Nokia telefonist teadlikud. Nokia rakendas öise ehitamise protseduuri. Pärast mitmete arendajate poolt päeva jooksul tehtud mitmeid kohustusi ehitati tarkvara igal õhtul. Kuna tarkvara ehitati ainult üks kord päevas, on suures koodibaasi vigade eraldamine, tuvastamine ja parandamine tohutu valu.

Latervõtsid nad kasutusele pideva integratsiooni lähenemisviisi. Tarkvara ehitati ja testiti niipea, kui arendaja koodi sisestas. Kui mõni viga avastatakse, saab vastav arendaja vea kiiresti parandada.

Pideva integratsiooni tegelik juhtumiuuring

Jenkinsi pistikprogrammid

Vaikimisi on Jenkinsil piiratud hulk funktsioone. Kui soovite integreerida oma Jenkinsi installi versioonikontrolli tööriistadega, nagu Git, peate installima Gitiga seotud pistikprogrammid. Tegelikult integreerimiseks selliste tööriistadega nagu Maven Amazon EC2, peate oma Jenkinsi installima vastavad pistikprogrammid.

Jenkinsi pistikprogrammid
Pluginate integreerimine Jenkinsis

Jenkinsi kasutamise eelised

  • Jenkinsit haldab kogukond, mis on väga avatud. Iga kuu korraldavad nad avalikke koosolekuid ja võtavad avalikkuselt sisendeid Jenkinsi projekti arendamiseks.
  • Seni on suletud umbes 280 piletit ja projekt avaldab stabiilse väljaande iga kolme kuu tagant.
  • Tehnoloogia arenedes kasvab ka Jenkins. Seni on Jenkinsi pistikprogrammide andmebaasis avaldatud umbes 320 pistikprogrammi. Pluginate abil muutub Jenkins veelgi võimsamaks ja funktsioonirikkamaks.
  • Jenkinsi tööriist toetab ka pilvepõhist arhitektuuri, et saaksite Jenkinsi pilvepõhistel platvormidel juurutada.
  • Põhjus, miks Jenkins populaarseks sai, on see, et selle lõi arendajatele arendajatele.

Jenkinsi kasutamise puudused

Kuigi Jenkins on väga võimas tööriist, on sellel oma puudused.

  • Selle liides on aegunud ega ole praeguste kasutajaliidese trendidega võrreldes kasutajasõbralik.
  • Kuigi Jenkinsit armastavad paljud arendajad, pole seda nii lihtne hooldada, sest Jenkins töötab serveris ja nõuab oma tegevuse jälgimiseks teatud oskusi serveri administraatorina.
  • Üks põhjusi, miks paljud inimesed Jenkinsi ei rakenda, on selle Jenkinsi installimise ja konfigureerimise raskus.
  • Pidevad integratsioonid katkevad regulaarselt mõne väikese seadistusmuudatuse tõttu. Pidev integreerimine peatatakse ja nõuab seetõttu arendaja tähelepanu.

Järeldus

  • Pidevas integratsioonis koostatakse ja testitakse tarkvara kohe pärast koodi kinnitamist
  • Jenkins kasutas tarkvaraprojektis pideva integreerimise tegevuste ahela korraldamiseks
  • Enne Jenkinsit, kui kõik arendajad olid neile määratud kodeerimisülesanded täitnud, kasutasid nad oma koodi korraga. Later, Build on testitud ja kasutusele võetud.
  • Pärast Jenkinsi kood luuakse ja testitakse niipea, kui arendaja koodi sisestab. Jenkin ehitab ja testib koodi mitu korda päeva jooksul
  • Vaikimisi on Jenkinsil piiratud hulk funktsioone. Kui soovite integreerida oma Jenkinsi installi versioonikontrolli tööriistadega, nagu Git, peate installima Gitiga seotud pistikprogrammid. Samuti kontrollige Parimad Jenkinsi alternatiivsed tööriistad
  • Jenkinsi suurimad plussid on see, et seda haldab kogukond, kes korraldab avalikke koosolekuid ja võtab avalikkuselt sisendeid Jenkinsi projektide arendamiseks.
  • Jenkinsi suurim miinus on see, et selle liides on vananenud ega ole praeguste kasutajaliidese trendidega võrreldes kasutajasõbralik. Kui kaalute muid võimalusi, mis võiksid pakkuda kaasaegsemat kasutuskogemust, võiksite uurida mõnda neist parimad pideva integreerimise tööriistad laos.