Mikä on Jenkins? Miksi käyttää Continuous Integration (CI) -työkalua?

Mikä on Jenkins?

Jenkins on avoimen lähdekoodin jatkuvan integroinnin palvelin Java toimintoketjun organisoimiseksi jatkuvan integroinnin prosessin saavuttamiseksi automatisoidulla tavalla. Jenkins tukee ohjelmiston täydellistä kehityselinkaaria rakentamisesta, testaamisesta, ohjelmiston dokumentoinnista, käyttöönotosta ja muista ohjelmistokehityksen elinkaaren vaiheista.

Jenkins on laajalti käytetty sovellus ympäri maailmaa, jolla on noin 300 XNUMX asennusta ja joka kasvaa päivä päivältä. Jenkinsin avulla ohjelmistoyritykset voivat nopeuttaa ohjelmistokehitysprosessiaan, koska Jenkins voi automatisoida rakentamisen ja testauksen nopeasti.

Se on palvelinpohjainen sovellus ja vaatii verkkopalvelimen, kuten Apache Tomcat. Syy Jenkins-ohjelmistosta tuli niin suosituksi, koska se valvoo toistuvia tehtäviä, joita syntyy projektin kehityksen aikana. Jos tiimisi esimerkiksi kehittää projektia, Jenkins testaa jatkuvasti projektisi rakennelmia ja näyttää virheet kehitysvaiheesi alkuvaiheessa.

Mitä jatkuva integrointi on?

Jatkuva integraatio on prosessi, jossa useiden kehittäjien koodimuutokset integroidaan yhteen projektiin monta kertaa. Ohjelmisto testataan välittömästi koodin vahvistamisen jälkeen. Jokaisen koodin vahvistuksen yhteydessä koodi rakennetaan ja testataan. Jos testi läpäistään, koontiversio testataan käyttöönottoa varten. Jos käyttöönotto onnistuu, koodi lähetetään tuotantoon.

Tämä sitoutuminen, rakentaminen, testaus ja käyttöönotto on jatkuva prosessi, ja siitä syystä nimi jatkuva integrointi/käyttöönotto.

Miten Jenkins toimii?

Jenkins on palvelinpohjainen sovellus ja vaatii Web-palvelimen, kuten Apache Tomcat, toimiakseen eri alustoilla, kuten Windows, Linux, macOS, Unix jne. Jenkinsin käyttämiseksi sinun on luotava liukuhihnat, jotka ovat sarja vaiheita, jotka Jenkins-palvelin suorittaa. Jenkins Continuous Integration Pipeline on tehokas instrumentti, joka koostuu joukosta työkaluja, jotka on suunniteltu isäntä, monitori, koota ja testi koodia tai koodin muutoksia, kuten:

  • Jatkuva integrointipalvelin (Jenkins, Bamboo, CruiseControl, TeamCityja muut)
  • Lähteenhallintatyökalu (esim. CVS, SVN, GIT, Mercurial, Perforce, ClearCase ja muut)
  • Rakenna työkalu (Make, ANT, Maven, Ivy, Gradleja muut)
  • Automaatiotestauskehys (Selenium, Appium, TestComplete, UFT ja muut)

Jenkinin historia

  • Kohsuke Kawaguchi, a Java SUN Microsystemsillä työskentelevä kehittäjä oli kyllästynyt koodin rakentamiseen ja toistuvien virheiden korjaamiseen. Vuonna 2004 loi automaatiopalvelimen nimeltä Hudson, joka automatisoi rakennus- ja testaustehtävät.
  • Vuonna 2011, Oracle Sun Microsystemsin omistajilla oli riita Hudsonin avoimen lähdekoodin yhteisön kanssa, joten he erottivat Hudsonin ja nimesivät sen uudelleen Jenkinsiksi.
  • Sekä Hudson että Jenkins jatkoivat toimintaansa itsenäisesti. Mutta lyhyessä ajassa Jenkins hankki paljon projekteja ja avustajia, kun taas Hudson jäi vain 32 projektiin. Ajan myötä Jenkinsistä tuli suositumpi, eikä Hudsonia enää ylläpidetä.

Miksi käyttää jatkuvaa integraatiota Jenkinsin kanssa?

Jotkut saattavat ajatella, että vanhanaikainen tapa kehittää ohjelmisto on parempi tapa. Ymmärretään CI:n edut Jenkinsin kanssa seuraavan esimerkin avulla

Kuvittelemme, että noin 10 kehittäjää työskentelee a jaettu arkisto. Jotkut kehittäjät suorittavat tehtävänsä 25 päivässä, kun taas toiset vievät 30 päivää.

Ennen Jenkinsiä Jenkinsin jälkeen
Kun kaikki kehittäjät olivat suorittaneet heille määrätyt koodaustehtävät, heillä oli tapana sitoa koodinsa samaan aikaan. Later, Build on testattu ja otettu käyttöön.

Code commit rakennettu, ja testisykli oli erittäin harvinainen, ja yksi koonti tehtiin useiden päivien jälkeen.

Koodi rakennetaan ja testataan heti, kun kehittäjä sitoutuu koodiin. Jenkin rakentaa ja testaa koodia monta kertaa päivän aikana

Jos koontiversio onnistuu, Jenkins ottaa lähteen käyttöön testipalvelimelle ja ilmoittaa siitä käyttöönottotiimille.

Jos rakentaminen epäonnistuu, Jenkins ilmoittaa virheistä kehittäjätiimille.

Koska koodi rakennettiin kerralla, joidenkin kehittäjien on odotettava, kunnes muut kehittäjät lopettavat koodauksen tarkistaakseen koontiversionsa Koodi luodaan heti minkä tahansa kehittäjän sitoutumisen jälkeen.
Ei ole helppo tehtävä eristää, havaita ja korjata virheitä useissa toimituksissa. Koska koodi luodaan jokaisen yksittäisen kehittäjän toimituksen jälkeen, on helppo havaita, kenen koodi aiheutti rakennetun epäonnistumisen.
Koodin rakentaminen ja testiprosessi ovat täysin manuaalisia, joten epäonnistumisen mahdollisuus on paljon. Automatisoitu rakennus- ja testausprosessi säästää aikaa ja vähentää vikoja.
Koodi otetaan käyttöön, kun kaikki virheet on korjattu ja testattu. Koodi otetaan käyttöön jokaisen onnistuneen rakentamisen ja testin jälkeen.
Kehityssykli on hidas Kehityssykli on nopea. Uudet ominaisuudet ovat entistä helpommin käyttäjien saatavilla. Lisää voittoja.

Tosimaailman tapaustutkimus jatkuvasta integraatiosta

Olen varma, että kaikki olette tietoisia vanhasta Nokia-puhelimesta. Nokia otti käyttöön menettelyn, jota kutsutaan nimellä nightly build. Kun useat eri kehittäjät ovat tehneet päivän aikana useita sitoumuksia, ohjelmisto kehitettiin joka ilta. Koska ohjelmisto rakennettiin vain kerran päivässä, on valtava tuska eristää, tunnistaa ja korjata virheet suuressa koodikannassa.

Later, he omaksuivat jatkuvan integroinnin lähestymistavan. Ohjelmisto rakennettiin ja testattiin heti, kun kehittäjä sitoutui koodiin. Jos jokin virhe havaitaan, vastaava kehittäjä voi korjata vian nopeasti.

Tosielämän tapaustutkimus jatkuvasta integraatiosta

Jenkinsin lisäosat

Oletuksena Jenkins sisältää rajoitetun joukon ominaisuuksia. Jos haluat integroida Jenkins-asennuksesi versionhallintatyökaluihin, kuten Git, sinun on asennettava Gitiin liittyvät laajennukset. Itse asiassa integroitavaksi työkaluihin, kuten Maven, Amazon EC2, sinun on asennettava vastaavat laajennukset Jenkinsiin.

Jenkinsin lisäosat
Lisäosien integrointi Jenkinsissä

Jenkinsin käytön edut

  • Jenkinsiä johtaa yhteisö, joka on hyvin avoin. Joka kuukausi he pitävät julkisia kokouksia ja ottavat yleisöltä palautetta Jenkins-projektin kehittämiseen.
  • Toistaiseksi noin 280 lippua on suljettu, ja projekti julkaisee vakaan julkaisun kolmen kuukauden välein.
  • Teknologian kasvaessa Jenkins kasvaa. Tähän mennessä Jenkinsin laajennustietokannassa on julkaistu noin 320 lisäosaa. Lisäosien avulla Jenkinsistä tulee entistä tehokkaampi ja monipuolisempi.
  • Jenkins-työkalu tukee myös pilvipohjaista arkkitehtuuria, jotta voit ottaa Jenkinsin käyttöön pilvipohjaisissa alustoissa.
  • Syy siihen, miksi Jenkinsistä tuli suosittu, on se, että sen loi kehittäjä kehittäjille.

Jenkinsin käytön haitat

Vaikka Jenkins on erittäin tehokas työkalu, siinä on puutteita.

  • Sen käyttöliittymä on vanhentunut eikä käyttäjäystävällinen verrattuna nykyisiin käyttöliittymätrendeihin.
  • Vaikka monet kehittäjät rakastavat Jenkinsiä, sen ylläpito ei ole niin helppoa, koska Jenkins toimii palvelimella ja vaatii joitain taitoja palvelimen järjestelmänvalvojana seuratakseen toimintaansa.
  • Yksi syy siihen, miksi monet ihmiset eivät ota Jenkinsiä käyttöön, johtuu sen vaikeuksista Jenkinsin asentamisessa ja määrittämisessä.
  • Jatkuvat integraatiot katkeavat säännöllisesti pienten asetusmuutosten vuoksi. Jatkuva integrointi keskeytetään ja vaatii siksi jonkin verran kehittäjän huomiota.

Yhteenveto

  • Jatkuvassa integroinnissa ohjelmisto rakennetaan ja testataan välittömästi koodin vahvistamisen jälkeen
  • Jenkins käytti ohjelmistoprojektin jatkuvan integroinnin toimintaketjun järjestämiseen
  • Ennen Jenkinsiä, kun kaikki kehittäjät olivat suorittaneet heille määrätyt koodaustehtävät, he sitoivat koodinsa kaikki samaan aikaan. Later, Build on testattu ja otettu käyttöön.
  • Jenkinsin jälkeen koodi rakennetaan ja testataan heti, kun kehittäjä sitoutuu koodiin. Jenkin rakentaa ja testaa koodia monta kertaa päivän aikana
  • Oletuksena Jenkins sisältää rajoitetun joukon ominaisuuksia. Jos haluat integroida Jenkins-asennuksesi versionhallintatyökaluihin, kuten Git, sinun on asennettava Gitiin liittyvät laajennukset. Tarkista myös Parhaat Jenkinsin vaihtoehtoiset työkalut
  • Jenkinsin suurin etu on se, että sitä hallinnoi yhteisö, joka järjestää julkisia kokouksia ja ottaa yleisöltä panoksia Jenkins-projektien kehittämiseen.
  • Jenkinsin suurin haitta on, että sen käyttöliittymä on vanhentunut eikä käyttäjäystävällinen verrattuna nykyisiin käyttöliittymätrendeihin. Jos harkitset muita vaihtoehtoja, jotka voisivat tarjota nykyaikaisemman käyttökokemuksen, sinun kannattaa tutustua joihinkin niistä parhaat jatkuvan integroinnin työkalut saatavissa.