Nepārtraukta izvietošana ir īpaša pieeja programmatūras izstrādē, ko izmanto, lai ātri, droši un efektīvi ieviestu dažādas programmatūras funkcijas.
Galvenā ideja ir izveidot uzticamu automatizētu procesu, kas ļauj izstrādātājam ātri piegādāt gatavo produktu lietotājam. Tajā pašā laikā ražošanā tiek veiktas pastāvīgas izmaiņas - to sauc par nepārtrauktas piegādes cauruļvadu (CD Pipeline).
Atgādinām:visiem "Habr" lasītājiem - atlaide 10 000 rubļu, reģistrējoties jebkurā Skillbox kursā, izmantojot "Habr" reklāmas kodu.
Lai kontrolētu plūsmu, varat izmantot plašu rīku klāstu, tostarp gan maksas, gan pilnīgi bezmaksas. Šajā rakstā ir aprakstīti trīs izstrādātāju vidū populārākie risinājumi, kas var būt noderīgi ikvienam programmētājam.
Jenkins
Pilnībā autonoms atvērtā koda automatizācijas serveris. Ir vērts strādāt, lai automatizētu visu veidu uzdevumus, kas saistīti ar programmatūras izveidi, testēšanu, piegādi vai izvietošanu.
Minimālās prasības datoram:
256 MB RAM, 1 GB faila vietas.
Optimāli:
1 GB RAM, 50 GB cietais disks.
Lai strādātu, būs nepieciešama arī papildu programmatūra – Java Runtime Environment (JRE) 8. versija.
Arhitektūra (izkliedētā skaitļošana) izskatās šādi:
Jenkins Server ir instalācija, kas ir atbildīga par GUI mitināšanu, kā arī visas būves organizēšanu un izpildi.
Jenkins Node/Slave/Build Server – ierīces, kuras var konfigurēt, lai tās veiktu veidošanas darbus galvenā (galvenā mezgla) vārdā.
Instalēšana operētājsistēmai Linux
Vispirms sistēmai jāpievieno Jenkins repozitorijs:
Pēc tam Jenkins būs pieejams sistēmā, izmantojot noklusējuma portu 8080.
Lai pārbaudītu funkcionalitāti, pārlūkprogrammā jāatver adrese localhost:8080. Pēc tam sistēma liks ievadīt saknes lietotāja sākotnējo paroli. Šī parole atrodas failā /var/lib/jenkins/secrets/initialAdminPassword.
Tagad viss ir gatavs darbam, varat sākt veidot CI/CD plūsmas. Darbagalda grafiskais interfeiss izskatās šādi:
Dženkinsa stiprās puses:
mērogojamība, ko nodrošina Master/Slave arhitektūra;
REST XML/JSON API pieejamība;
iespēja savienot lielu skaitu paplašinājumu, pateicoties spraudņiem;
aktīva un pastāvīgi attīstoša kopiena.
Mīnusi:
nav analītisko bloku;
ne pārāk lietotājam draudzīgs interfeiss.
TeamCity
JetBrains komerciālā attīstība. Serveris ir labs ar vienkāršu iestatīšanu un lielisku saskarni. Noklusējuma konfigurācijai ir liels funkciju skaits, un pieejamo spraudņu skaits nepārtraukti palielinās.
Nepieciešama Java Runtime Environment (JRE) versija 8.
Servera aparatūras prasības nav kritiskas:
RAM - 3,2 GB;
procesors - divkodolu, 3,2 GHz;
sakaru kanāls ar jaudu 1 Gb/s.
Serveris ļauj sasniegt augstu veiktspēju:
60 projekti ar 300 būvkonfigurācijām;
2 MB piešķīrums būvēšanas žurnālam;
50 būvaģenti;
spēja strādāt ar 50 lietotājiem tīmekļa versijā un 30 lietotājiem IDE;
100 ārējo VCS savienojumi, parasti Perforce un Subversion. Vidējais maiņas laiks ir 120 sekundes;
vairāk nekā 150 modifikācijas dienā;
darbs ar datu bāzi vienā serverī;
JVM servera procesa iestatījumi: -Xmx1100m -XX:MaxPermSize=120m.
Aģenta prasības ir balstītas uz darbināmiem mezgliem. Servera galvenais uzdevums ir uzraudzīt visus pieslēgtos aģentus un izdalīt šiem aģentiem rindas komplektus, pamatojoties uz saderības prasībām, ziņojot par rezultātiem. Aģenti ir pieejami dažādās platformās un operētājsistēmās, kā arī iepriekš konfigurētā vidē.
Visa informācija par būvēšanas rezultātiem tiek glabāta datu bāzē. Galvenokārt tie ir vēsture un citi līdzīgi dati, VCS izmaiņas, aģenti, veidojumu rindas, lietotāju konti un atļaujas. Datu bāzē nav iekļauti tikai būvniecības žurnāli un artefakti.
Instalēšana operētājsistēmai Linux
Lai manuāli instalētu TeamCity ar Tomcat servleta konteineru, jums jāizmanto TeamCity arhīvs: TeamCity .tar.gz. Lejupielādēt jūs to varat iegūt no šejienes.
tar -xfz TeamCity.tar.gz
/bin/runAll. sh [sākt|pārtraukt]
Pirmoreiz startējot, ir jāizvēlas datu bāzes veids, kurā tiks saglabāti montāžas dati.
Darbojas noklusējuma konfigurācija localhost:8111/ ar vienu reģistrētu būvēšanas aģentu, kas darbojas tajā pašā datorā.
TeamCity stiprās puses:
vienkārša iestatīšana;
lietotājam draudzīgs interfeiss;
liels skaits iebūvēto funkciju;
Atbalsta pakalpojums;
ir RESTful API;
laba dokumentācija;
laba drošība.
Mīnusi:
ierobežota integrācija;
Šis ir maksas rīks;
maza kopiena (kas tomēr pieaug).
GoCD
Atvērtā pirmkoda projekts, kura instalēšanai un darbībai nepieciešama Java Runtime Environment (JRE) 8. versija.
Sistēmas prasības:
RAM - vismaz 1 GB, jo vairāk ir labāk;
procesors - divkodolu, ar kodola frekvenci 2 GHz;
cietais disks - vismaz 1 GB brīvas vietas.
Aģents:
RAM - vismaz 128 MB, vairāk ir labāk;
procesors - vismaz 2 GHz.
Serveris nodrošina aģentu darbību un nodrošina ērtu saskarni lietotājam:
Posmi/darbi/uzdevumi:
Instalēšana operētājsistēmai Linux
atbalss "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list
spēja parādīt soli pa solim GoCD izvietošanas ceļu vienā skatā:
lielisks cauruļvada struktūras attēlojums:
GoCD optimizē CD darbplūsmu populārākajās mākoņu vidēs, tostarp Docker, AWS;
Šis rīks ļauj novērst problēmas, kas radušās konveijerā, un reāllaikā tiek izsekotas visas izmaiņas no apņemšanās līdz izvietošanai.
Mīnusi:
nepieciešams vismaz viens aģents;
nav konsoles, lai parādītu visus izpildītos uzdevumus;
lai izpildītu katru komandu, ir jāizveido viens uzdevums konveijera konfigurācijai;
Lai instalētu spraudni, jāpārvieto .jar fails uz /plugins/external un restartējiet serveri;
salīdzinoši neliela kopiena.
Kā secinājums
Šie ir tikai trīs rīki, patiesībā ir daudz vairāk. Grūti izvēlēties, tāpēc noteikti jāpievērš uzmanība papildu aspektiem.
Rīka atvērtā pirmkoda kods ļauj saprast, kas tas ir, kā arī ātrāk pievienot jaunas funkcijas. Bet, ja kaut kas nedarbojas, tad jāpaļaujas tikai uz sevi un sabiedrības palīdzību. Maksas rīki nodrošina atbalstu, kas dažkārt var būt kritisks.
Ja drošība ir jūsu galvenā prioritāte, ir vērts strādāt ar vietējo rīku. Ja nē, tad SaaS risinājuma izvēle ir laba iespēja.
Un visbeidzot, lai nodrošinātu patiesi efektīvu nepārtrauktu izvietošanas procesu, jums ir jāformulē kritēriji, kuru specifika ļaus jums sašaurināt pieejamo rīku klāstu.