Programmēšana

Nepārtraukta integrācija ar Dženkinsu

Atskatoties uz to, kā programmatūra tika veidota un izvietota pat pirms 15 gadiem, šķiet pārsteidzoši, ka mūsu lietojumprogrammas faktiski darbojās. Tajās dienās programmatūras izstrādes dzīves cikls sastāvēja no būvju palaišanas vietējā mašīnā, artefaktu manuālas kopēšanas iestudēšanas serverī un katras lietojumprogrammas manuālas testēšanas, izmantojot vairākas iterācijas. Kad izstrādātāju komanda bija apmierināta ar būvējumu, mēs manuāli izvietosim lietojumprogrammu ražošanā. Vis konsekventākā lieta šajā attīstības stilā bija neatbilstība - procesā un rezultātos.

Pirms vairāk nekā desmit gadiem veiklie izstrādātāji sāka aptvert un veicināt uz testiem balstītu attīstību un nepārtrauktu integrāciju (KI). Izmantojot šīs metodes, mēs varētu automātiski izveidot pirmkodu ikreiz, kad izstrādātājs to pārbauda avota repozitorijā, izpildot izsmeļošu vienības testa komplektu, lai pārliecinātos, ka lietojumprogramma darbojas pareizi. Daudzi uz testu balstīti izstrādātāji sāka veikt integrācijas testēšanu un veiktspējas testēšanu sekundārā KI procesā.

Izmantojot nepārtrauktu integrāciju, mēs ātrāk varējām atklāt kļūdas un atbrīvot kodu daudz ātrāk nekā iepriekšējos gados. Nav pārspīlēts teikt, ka CI pieradināja būvēšanas un izvietošanas cikla "būvēšanas" pusi. Mūsdienās daudzas izstrādātāju komandas ir pārvietojušās ārpus CI uz CD, kas nozīmē vai nu nepārtrauktu piegādi, vai nepārtrauktu izvietošanu. Lai kāds būtu apzīmējums, kompaktdisks ir process, kas pārvieto programmatūru no koda reģistrēšanās uz iestudēšanu vai pat ražošanas izvietošanu.

Šī daļa no Atvērtā koda Java projekti ievieš nepārtrauktu integrāciju ar Jenkins, vadošo CI / CD automatizācijas serveri. Mēs sāksim ar CI un CD procesa pārskatu, pēc tam iestatīsim Java tīmekļa projektu, izmantojot Maven un Jenkins. Jūs uzzināsiet, kā izveidot un pārbaudīt projektu Jenkins ar JUnit, kā arī novērst būvniecības kļūmes. Jūs arī instalēsit un palaidīsit dažus populārus Jenkins spraudņus statisko kodu analīzes testēšanai un ziņošanai.

Ievads CI / CD

Nepārtrauktā integrācijas procesā kodu, kas ir pārbaudīts avota kodu krātuvē, var automātiski pārbaudīt, izveidot, testēt dažādos veidos un publicēt repozitorijā. Lai nepārtraukta integrācija darbotos, jums ir nepieciešams CI serveris, piemēram, Jenkins, kas spēj uzraudzīt jūsu avota koda krātuvi attiecībā uz jaunām izmaiņām un reaģēt konfigurējamos veidos.

Kā piemēru ņemiet Java lietojumprogrammu, kas izveidota, izmantojot Maven. Atklājot koda izmaiņas, jūsu CI serveris varētu atbildēt, izpildot a mvn tīra instalēšana. Tipiskā Maven būvēšanas konfigurācijā tas izpildītu jaunu vienību testu kopu kā daļu no build komandas. Kamēr avota kods tika veidots, serveris varēja veikt jebkādu papildu darbību skaitu:

  • Tiklīdz piešķirtais kods ir izturējis vienības pārbaudi, apvienojiet funkciju atzarojumu atpakaļ galvenajā vai galvenajā filiālē.
  • Veiciet statiskā koda analīzi, piemēram, koda pārklājumu, koda sarežģītību, bieži sastopamu kļūdu pārbaudi utt.
  • Publicējiet savus būvmateriālu artefaktus krātuvē, piemēram, Artifactory vai Sonatype Nexus
  • Izvietojiet lietojumprogrammu integrācijas testa vidē
  • Izpildiet integrācijas testus
  • Izvietojiet lietojumprogrammu veiktspējas testa vidē
  • Veiciet slodzes pārbaudi pret savu lietojumprogrammu
  • Izvietojiet lietojumprogrammu lietotāju pieņemšanas testēšanas vidē (UAT)
  • Izvietojiet lietojumprogrammu ražošanā

Šīs darbības ir visu veidu darbības, kuras jūs varat veikt kā daļu no CI / CD procesa. CI parasti ietver izstrādes dzīves cikla izveides un testēšanas posmus, savukārt CD paplašina šo procesu, lai izveidošanas artefaktu izvietotu serverī testēšanai. Dažās vidēs kompaktdisks iet līdz pat ražošanai.

Nepārtraukta integrācija parasti tiek veikta, izmantojot tādu rīku kā Jenkins, Bamboo vai TeamCity, kas jūsu būvēšanas soļus organizē integrācijas cauruļvadā. Jenkins, iespējams, ir vispopulārākais CI / CD produkts, un tas ir labi savienojams ar Docker.

Lejupielādējiet un instalējiet Jenkins

Jenkins ir nepārtrauktas integrācijas serveris un ne tikai. Tas sastāv no automatizācijas dzinēja un spraudņu ekosistēmas, kas atbalsta nepārtrauktu integrāciju, automatizētu testēšanu un nepārtrauktu piegādi. Jūs pielāgojat piegādes cauruļvadu atkarībā no jūsu vajadzības.

Ir daudz veidu, kā vadīt Jenkins:

  1. Lejupielādējiet WAR failu un instalējiet to servleta konteinerā vietējā datorā.
  2. Iestatiet virtuālo mašīnu publiskā mākonī, piemēram, AWS, un tur mitiniet Jenkins.
  3. Izmantojiet tādu Jenkins mākoņu nodrošinātāju kā CloudBees.
  4. Iestatiet Jenkins testa instalācijā, izmantojot Docker.

Es jums parādīšu, kā iestatīt gan vietējo, gan Docker testa instalēšanu.

Lejupielādējiet un instalējiet Jenkins lokāli

Sāciet, lejupielādējot Jenkins un izvēloties Ilgtermiņa atbalsta (LTS) laidienu no Jenkins mājas lapas. Tā kā es izmantoju Mac, instalēšana automātiski lejupielādēja a pkg fails, kurā ievietots jenkins.war manā Pieteikums / Jenkins mapi. WAR failu var izvietot jebkurā servletīklu konteinerā.

Jūs arī vēlaties lejupielādēt un instalēt Apache Tomcat. Šajā rakstā jaunākā Tomcat versija ir 8.5.4, taču jums vajadzētu būt iespējai palaist jebkuru jaunāko versiju. Lejupielādējiet zip vai tar.gz failu un atspiest to uz cietā diska. Kopējiet failu jenkins.war Tomcat's tīmekļa lietotnes mapi un pēc tam palaidiet bin / startup.sh vai bin / startup.bat failu. Lai pārbaudītu, vai tā darbojas, atveriet pārlūkprogrammu: // vietējais saimnieks: 8080.

Lai palaistu Jenkins, atveriet pārlūku vietnei URL: // localhost: 8080 / jenkins.

Jums vajadzētu iegūt ekrānu, kas izskatās kā 1. attēls.

Stīvens Heinss

Pēc tam Dženkinss izveido administrācijas paroli un raksta to Tomcat žurnāli / catalina.out žurnāla failu un uz šo mājas direktoriju: .jenkins / secrets / initialAdminPassword. Iegūstiet paroli, ievadiet to Administrēšanas paroles formas elementā (parādīts 1. attēlā) un nospiediet Turpināt. Jums tiks piedāvāts instalēt ieteiktos spraudņus vai atlasīt instalējamos spraudņus. Pagaidām iesaku instalēt ieteiktos spraudņus.

Tagad jums tiks piedāvāts izveidot administratora lietotāju. Ievadiet administratora lietotāja informāciju un nospiediet Saglabāt un pabeigt. Visbeidzot noklikšķiniet uz Sāciet lietot Jenkins. Tagad jūs redzēsiet Jenkins mājas lapu, kā parādīts 2. attēlā.

Stīvens Heinss

Konfigurējiet lietotnes piemēru ar Maven

Pirms mēs varam izmantot Jenkins, lai izveidotu Java tīmekļa projektu ar Maven, mums ir jāiestata abas šīs tehnoloģijas. Zem pārsega Jenkins izrakstīs pirmkodu no pirmkodu krātuves uz vietējo direktoriju un izpildīs jūsu norādītos Maven mērķus. Lai tas darbotos, jums jāinstalē viena vai vairākas Maven versijas, jāpasaka Jenkinsam, kur tās instalētas, un jākonfigurē Maven versija, kuru vēlaties, lai Jenkins izmantotu, veidojot lietojumprogrammu.

Jenkins informācijas panelī noklikšķiniet uz Pārvaldiet Dženkinsu un izvēlies Globālā rīka konfigurācija. Pirmā lieta, ko mēs darīsim, ir JDK konfigurēšana. Sadaļā JDK noklikšķiniet uz Pievienojiet JDK, piešķiriet tai vārdu (mans ir "JDK8") un atstājiet noklusējumu Instalējiet no java.sun.com pārbaudīts. Pieņemiet Oracle licences līgumu un pēc tam noklikšķiniet uz saites "Lūdzu, ievadiet savu lietotājvārdu / paroli". Ievadiet savu Oracle lietotājvārdu un paroli un nospiediet Aizvērt. Jums tiks parādīts ekrāns, kas līdzīgs 3. attēlam.

Stīvens Heinss

Klikšķis Piesakies lai saglabātu savu darbu, pēc tam ritiniet uz leju līdz sadaļai Maven un noklikšķiniet Pievienojiet Maven. Ievadiet Maven nosaukumu (mans ir "Maven 3.3.9"), atstājiet izvēles rūtiņu "Instalēt automātiski" un "Instalēt no Apache". Klikšķis Saglabāt kad būsi gatavs. Jums jāparāda ekrāns, kas līdzīgs 4. attēlam.

Stīvens Heinss

Git ir iepriekš konfigurēts kopā ar Jenkins, tāpēc tagad jums vajadzētu būt instalētiem visiem rīkiem, kas nepieciešami, lai norēķinātos un izveidotu Java projektu no Git ar Maven.

Instalējiet Jenkins Docker konteinerā

Ja nevēlaties instalēt Jenkins savā lokālajā mašīnā, jums ir iespēja to palaist Docker konteinerā. Oficiālais Jenkins Docker attēls ļauj palaist un pārbaudīt Jenkins instalāciju, faktiski to nekonfigurējot vietējā mašīnā.

Docker instalēšana

Skatiet manu ievadu Docker, lai iegūtu iesācēja ceļvedi Docker, ieskaitot instalēšanas un iestatīšanas instrukcijas.

Pieņemot, ka izstrādes vidē jums jau ir Docker iestatīšana, varat palaist Jenkins no Docker komandrindas:

 docker run -p 8080: 8080 -p 50000: 50000 -v / jūsu / mājas / jenkins: / var / jenkins_home -d jenkins 

Šī komanda liek Dokeram palaist jaunāko jenkins ar šādām iespējām:

  • -p 8080: 8080: Docker konteinera kartes 8080 ports uz Docker resursdatora 8080 portu, lai jūs varētu izveidot savienojumu ar Jenkins tīmekļa lietojumprogrammu portā 8080.
  • -p 50000: 50000: Kartes 50000 portā Docker konteinerā līdz portam 50000 Docker resursdatorā. Jenkins izmanto šo portu iekšēji, lai ļautu būvniecības vergu izpildītājiem izveidot savienojumu ar galveno Jenkins serveri.
  • -v / tavs / mājas / jenkins: / var / jenkins_home: Kartējiet Jenkins datu krātuvi uz vietējo direktoriju, lai jūs varētu restartēt savu Docker konteineru, nezaudējot datus.
  • -d: Ļauj palaist Docker konteineru atdalītā režīmā vai kā dēmona procesu.

Tālāk parādīts šo komandu izpildes rezultāts:

 $ docker run -p 8000: 8080 -v / Lietotāji / shaines / jenkins /: / var / jenkins_home -d jenkins cc16573ce71ae424d4122e9e4afd3a294fda6606e0333838fe332fc4e11d0d53 

Tā kā mēs darbojam savu Docker konteineru atdalītā režīmā, mums jāievēro žurnāli, kurus izraksta Jenkins. To var izdarīt ar docker žurnāli -f komandu. Vienkārši ievadiet dažus pirmos konteinera ID heksadecimālos skaitļus, šajā gadījumā cc16573ce71ae424d4122e9e4afd3a294fda6606e0333838fe332fc4e11d0d53:

 $ docker logs -f cc1 Darbojas no: /usr/share/jenkins/jenkins.war tīmekļa saknes: EnvVars.masterEnvVars.get ("JENKINS_HOME") ... **************** ********************************************** ***** *************************************************** ****** ********************************************* ***************** Jenkins sākotnējā iestatīšana ir nepieciešama. Ir izveidots administratora lietotājs un ģenerēta parole. Lūdzu, izmantojiet šo paroli, lai turpinātu instalēšanu: 205be6fe69c447dd933a3c9ce7420496. To var atrast arī vietnē: / var / jenkins_home / secrets / initialAdminPassword ********************** ************************************** ************* ************************************************* ** *************************************************** ********* 

Jenkins CI iestatīšana Java tīmekļa lietotnei

Tālāk mēs izveidosim vienkāršu Java tīmekļa lietojumprogrammas darbu Jenkins. Tā kā lietojumprogramma šai apmācībai nav svarīga, mēs izmantosim manu vienkāršo piemēru Hello, World Servlet, kuru esmu mitinājis vietnē GitHub.

Lai pārbaudītu Jenkins, jums būs jāspēj veikt izmaiņas avota koda krātuvē, tāpēc jums tas jāizveido tūlīt. Jenkins mājas lapā noklikšķiniet uz Izveidojiet jaunas darba vietas pogu un ievadiet sava projekta nosaukumu. Jums tiks lūgts izvēlēties projekta veidu, kā parādīts 5. attēlā.

Stīvens Heinss

Mēs izvēlēsimies projekta Freestyle projektu tipu, taču jums jāzina savas iespējas:

  • Freestyle projekts: Šis visizplatītākais projekta veids ļauj pārraudzīt pirmkodu krātuvi un izmantot jebkuru būvēšanas sistēmu, piemēram, Maven un Ant.
  • Cauruļvads: izvēlieties šo projekta veidu sarežģītiem projektiem ar kustīgām daļām, kas jums jākoordinē vairākos būvniecības vergos.
  • Ārējais darbs: izmantojiet to, lai konfigurētu automatizētu ārēju darbu, kuru vēlaties izsekot Jenkins kā daļu no sava būvējuma.
  • Vairāku konfigurāciju projekts: Šis ir darba veids projektiem, kuriem nepieciešama atšķirīga konfigurācija dažādās vidēs, piemēram, ražošana, iestudēšana un testēšana.
  • Mape: ja jums ir sarežģīts būvējums, iespējams, vēlēsities kārtot lietas mapēs, katrai no tām ir sava atšķirīgā nosaukumvieta.
  • Daudznozaru cauruļvads: automātiski izveidojiet cauruļvadu projektu kopu, pamatojoties uz koda atzariem, kas definēti avota koda krātuvē.

Ievadiet projekta nosaukumu, šajā gadījumā "hello-world-servlet", un izvēlieties "OK". Pēc tam izvēlieties GitHub projekts, pēc tam ievadiet sava projekta GitHub URL: //github.com/ligado/hello-world-servlet.

Sadaļā Source Code Management izvēlieties Git un ievadiet to pašu projekta URL.

Sadaļā Veidošanas aktivizētāji izvēlieties Veidot, kad izmaiņas tiek virzītas uz GitHub lai Jenkins izveidotu jūsu kodu jebkurā laikā, kad virzīsit izmaiņas uz GitHub.

Sadaļā Izveidot pievienojiet jaunu veidošanas darbību, izvēlieties Izsaukt augstākā līmeņa Maven mērķus, izvēlieties iepriekš konfigurēto Maven instanci (piemēram, "Maven 3.3.9") un ievadiet tīra instalēšana vārtu laukumā. Pagaidām atstājiet darbības pēc būvēšanas tukšas. Kad esat pabeidzis, nospiediet Saglabāt.

Atgriežoties informācijas panelī, jums vajadzētu redzēt ekrānu, kas līdzīgs 6. attēlam.

Stīvens Heinss

Lai pārbaudītu konfigurāciju, nospiediet Veidojiet tūlīt poga blakus projektam hello-world-servlet. Veidojums, kas veiksmīgi izpildīts, redzams būvēšanas vēsturē projekta lapas kreisajā pusē, kā parādīts 7. attēlā.

Stīvens Heinss

Lai redzētu, kas tieši notika, noklikšķiniet uz būvējuma un pēc tam noklikšķiniet uz Konsoles izeja, kas parādīs visas Jenkins veiktās darbības un to rezultātus. Konsoles izeja ir zemāk.

$config[zx-auto] not found$config[zx-overlay] not found