Mikä on JenkinsMiksi käyttää jatkuvan integraation (CI) työkalua?

⚡ Älykäs yhteenveto

Jenkins on avoimen lähdekoodin automaatiopalvelin, joka rakentaa ja testaa koodia aina, kun kehittäjä tekee commitin, muuttaen jatkuvan integraation yöllisestä tehtävästä prosessiksi, joka toimii jatkuvasti koko työpäivän ajan.

  • 🔘 Tarkoitus: Jenkins koordinoi koonti-, testaus- ja käyttöönottovaiheet automaattisesti jokaisen commitin jälkeen.
  • ☑️ Alkuperä: Haaroittui Hudsonista vuonna 2011 ja on nyt laajimmin käytetty CI-palvelin.
  • ✅ Putket: A JenkinsKoodiin tallennettu tiedosto määrittelee jokaisen rakennusvaiheen.
  • 🧪 Plugins: Yli kaksituhatta laajennusta yhdistyy Jenkins Gitille, Mavenille, Dockerille ja Kubernetesin käyttöön.
  • 🛠️ Kompromissi: Oma hosting tuo mukanaan täyden hallinnan, mutta myös palvelimen ylläpitotyöt.

Jenkins Jatkuvan integraation palvelimen yleiskatsaus

Mikä on Jenkins?

Jenkins on avoimen lähdekoodin jatkuvan integroinnin palvelin Java toimintoketjun organisoimiseksi jatkuvan integroinnin prosessin automatisoimiseksi. Jenkins tukee ohjelmiston koko kehityssykliä rakentamisesta, testaamisesta, dokumentoinnista, käyttöönotosta ja muista ohjelmistokehityksen elinkaaren vaiheista.

Jenkins on laajalti käytetty sovellus ympäri maailmaa, ja sillä on satojatuhansia asennuksia, joiden määrä kasvaa päivä päivältä. Käyttämällä Jenkinsohjelmistoyritykset voivat nopeuttaa ohjelmistokehitysprosessiaan, koska Jenkins voi automatisoida rakentamisen ja testaamisen nopeasti.

Se on palvelinpohjainen sovellus ja vaatii web-palvelimen, kuten Apache Tomcatin. Syy tähän on Jenkins ohjelmistosta tuli niin suosittu, että se pystyy valvomaan projektin kehityksen aikana esiin nousevia toistuvia tehtäviä. Esimerkiksi, jos tiimisi kehittääping projekti, Jenkins testaa projektisi rakennuksia jatkuvasti ja näyttää virheet kehitysvaiheen alkuvaiheessa.

Huomautus: WAR:n käyttöönotto Apache Tomcat toimii edelleen, mutta nykyisissä versioissa on upotettu servlet-säilö, joten Jenkins toimii normaalisti itsenäisesti. 2.555.x LTS -linja vaatii Java 21.

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 toimiakseen web-palvelimen, kuten Apache Tomcatin, useilla alustoilla, kuten Windows, Linux, macOS, Unix jne. Käytettäväksi Jenkins, sinun on luotava putkistoja, jotka ovat sarja vaiheita, jotka a Jenkins palvelin ottaa. Jenkins Jatkuvan integraation prosessi on tehokas työkalu, joka koostuu joukosta työkaluja, jotka on suunniteltu isännöimään, valvomaan, kääntämään ja testaamaan koodia tai koodimuutoksia, kuten:

  • Jatkuvan integraation palvelin (Jenkins, Bamboo, CruiseControl, TeamCityja muut)
  • Versioiden hallintatyökalu (esim. CVS, SVN, GIT, Mercurial, Perforce, ClearCase ja muut)
  • Rakennustyökalu (Make, ANT, Maven, Ivy, Gradleja muut)
  • Automaatiotestauskehys (Selenium, Appium, TestComplete, UFTja muut)

Nykyisissä versioissa nuo vaiheet sijaitsevat Jenkinstiedosto committoitiin koodin viereen. Jenkins Ohjain lukee tiedoston ja luovuttaa jokaisen vaiheen agentille, joka on kone, joka itse asiassa suorittaa työn.

Jenkins 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 omistajalla oli riita Hudsonin avoimen lähdekoodin yhteisön kanssa, joten he jakoivat Hudsonin haarauman ja nimesivät sen uudelleen nimellä Jenkins.
  • Sekä Hudson että Jenkins jatkoi toimintaansa itsenäisesti. Mutta lyhyessä ajassa Jenkins hankki paljon projekteja ja avustajia, kun taas Hudsonilla oli enää vain 32 projektia. Ajan myötä Jenkins tuli suositummaksi, eikä Hudsonia enää ylläpidetä.

Miksi käyttää jatkuvaa integraatiota Jenkins?

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

Kuvitellaan, että noin 10 kehittäjää työskentelee jaetun repositorion parissa. Jotkut kehittäjät suorittavat tehtävänsä 25 päivässä, kun taas toiset käyttävät siihen 30 päivää.

Ennen Jenkins Jälkeen Jenkins

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 koottu, ja testisykli oli hyvin harvinainen, ja yksi koonti tehtiin useiden päivien kuluttua.

Koodi rakennetaan ja testataan heti, kun kehittäjä on tehnyt koodin. Jenkins rakentaa ja testaa koodia monta kertaa päivän aikana

Jos rakentaminen onnistuu, niin Jenkins asentaa lähdekoodin testipalvelimelle ja ilmoittaa siitä käyttöönottotiimille.

Jos rakentaminen epäonnistuu, niin 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 rakennetaan jokaisen yksittäisen kehittäjän tekemän commitin jälkeen, on helppo havaita, kenen koodi aiheutti koonnin epäonnistumisen.
Code rakentaa 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 integraation lähestymistavan, joka on esitetty alla. Ohjelmisto rakennettiin ja testattiin heti, kun kehittäjä teki koodin. Jos virheitä havaitaan, kehittäjä voi korjata ne nopeasti.

Nokian yöllinen koonti korvattu commit-käynnistettävällä jatkuvan integraation syklillä

Jenkins plugins

Oletusarvoisesti Jenkins sisältää rajoitetun määrän ominaisuuksia. Jos haluat integroida Jenkins asennuksen versionhallintatyökaluilla, kuten Gitillä, sinun on asennettava Gitiin liittyviä laajennuksia. Itse asiassa integrointia varten työkalujen, kuten Mavenin, kanssa Amazon EC2:ssa sinun on asennettava vastaavat laajennukset laitteeseesi. Jenkins, kuten alla oleva laajennusten hallintaohjelma näyttää.

Jenkins laajennusten hallintaohjelma, joka listaa asennettavissa olevat laajennukset

Käytön edut Jenkins

  • Jenkins yhteisö, joka on erittäin avoin, hallinnoi sitä. Joka kuukausi he pitävät julkisia kokouksia ja ottavat vastaan ​​yleisön näkemyksiä hankkeen kehittämiseksi. Jenkins projekti.
  • Projekti noudattaa ennustettavaa julkaisurytmiä: uusi pitkäaikaisen tuen perustaso valitaan kahdentoista viikon välein, ja sen jälkeen sille julkaistaan ​​aikataulun mukaiset korjauspäivitykset.
  • Teknologian kehittyessä myös JenkinsLiitännäisten tietokannassa on nyt yli kaksituhatta liitännäistä. Liitännäisten avulla Jenkins tulee entistä tehokkaammaksi ja ominaisuuksiltaan rikkaammaksi.
  • Jenkins työkalu tukee myös pilvipohjaista arkkitehtuuria, joten voit ottaa käyttöön Jenkins pilvipohjaisilla alustoilla.
  • Syy, miksi Jenkins tuli suosituksi siksi, että sen loi kehittäjä kehittäjille.

Käytön haitat Jenkins

Vaikka Jenkins on erittäin tehokas työkalu, sillä on omat heikkoutensa.

  • Sen käyttöliittymä on vanhentunut eikä käyttäjäystävällinen verrattuna nykyisiin käyttöliittymätrendeihin, vaikka viimeaikaiset julkaisut ovat modernisoineet suurta osaa näytön suunnittelusta.
  • Vaikka Jenkins on monien kehittäjien rakastama, sitä ei ole helppo ylläpitää, koska Jenkins toimii palvelimella ja vaatii palvelimen järjestelmänvalvojalta jonkin verran taitoja toiminnan seuraamiseen.
  • Yksi syy siihen, miksi monet ihmiset eivät toteuta Jenkins johtuu sen asennuksen ja konfiguroinnin vaikeudesta Jenkins.
  • Jatkuvat integraatiot katkeavat säännöllisesti pienten asetusmuutosten vuoksi. Jatkuva integrointi keskeytetään ja vaatii siksi jonkin verran kehittäjän huomiota.
  • Liitännäisten riippuvuusristiriitoja ilmenee, kun useita liitännäisiä päivitetään eri aikoina, joten liitännäisten päivityksille on varattava oma ylläpitoaikansa.

Jos näillä kompromisseilla on merkitystä tiimillesi, vertaa niitä Parhaat Jenkins Vaihtoehtoiset työkalut ja laajempi lista parhaat jatkuvan integroinnin työkalut ennen sitoutumista itse isännöityyn palvelimeen.

UKK

Kyllä. Jenkins on julkaistu MIT-lisenssillä, eikä sen lataaminen tai suorittaminen maksa mitään. Kustannukset ovat epäsuoria: palvelin, tallennustila ja järjestelmänvalvojan aika, joita tarvitaan itse isännöidyn ohjaimen kunnossapidossa.

2.555.x pitkän aikavälin tukilinja on käynnissä Java 21, kanssa Java 25 kannatti myös; Java Versio 17 poistettiin versiosta 2.555.1. Tarkista vaatimukset ennen päivitystä, koska vanha JDK estää ohjaimen käynnistymisen.

A Jenkinsfile on tekstitiedosto, joka sisältää putkiston määritelmän ja on liitetty sovelluskoodiin. Se voidaan kirjoittaa deklaratiivisella tai skriptatulla syntaksilla, ja se säilytetään.ping se tekee versionhallinnassa koontiversiosta tarkistettavan kuten minkä tahansa muun muutoksen.

Ohjain on Jenkins asennus, joka aikatauluttaa työn ja palvelee web-käyttöliittymää. Agentti on erillinen kone, joka suorittaa sille annetut käännösvaiheet, mikä jakaa kuormituksen ja mahdollistaa käännösten tekemisen useille käyttöjärjestelmille.

Koneoppimismallit ryhmittelevät toistuvat virheet, erottavat aidot regressiot epävakaista testeistä ja osoittavat todennäköisimmin virheistä vastuussa olevan commitin. Tämä muuttaa pitkän konsolilokin lyhyeksi, paremmuusjärjestetyksi listaksi päivystävälle kehittäjälle.

GitHub Copilot hahmottelee kommentista deklaratiiviset vaiheet ja yleiset vaiheet. RevTarkista jokainen ehdotus, koska se usein keksii laajennusten vaiheiden nimiä, joita ei ole asennettu ohjaimeesi.

Isännöidyt palvelut eivät vaadi palvelimen ylläpitoa ja käynnistyvät nopeammin Jenkins antaa täyden hallinnan laitteistoon, laajennuksiin ja datan sijaintiin. Epätavallisissa rakennusympäristöissä työskentelevät tiimit pitävät yleensä JenkinsPienet projektit suosivat usein isännöityä suorittajaa.

Kyllä. Rakennusvaiheet voivat käynnistyä Maven, Gradle tai Muurahainen, ja JUnit, TestNG or Selenium tulokset julkaistaan ​​takaisin työsivulle, joten epäonnistunut paketti merkitään koko koontiversioksi punaisella.

Tiivistä tämä viesti seuraavasti: