3 populiarūs įrankiai, skirti organizuoti nuolatinį diegimą (nuolatinis diegimas)
Continuous Deployment – tai specialus požiūris į programinės įrangos kūrimą, kuris naudojamas greitai, saugiai ir efektyviai įgyvendinti įvairias programinės įrangos funkcijas.
Pagrindinė idėja – sukurti patikimą automatizuotą procesą, leidžiantį kūrėjui greitai pristatyti gatavą produktą vartotojui. Tuo pačiu metu vyksta nuolatiniai gamybos pakeitimai – tai vadinama nepertraukiamu pristatymo vamzdynu (CD Pipeline).
Primename:visiems „Habr“ skaitytojams – 10 000 rublių nuolaida užsiregistravus į bet kurį „Skillbox“ kursą naudojant „Habr“ reklamos kodą.
Norėdami valdyti srautą, galite naudoti daugybę įrankių, įskaitant mokamus ir visiškai nemokamus. Šiame straipsnyje aprašomi trys populiariausi kūrėjų sprendimai, kurie gali būti naudingi kiekvienam programuotojui.
Jenkins
Visiškai savarankiškas atvirojo kodo automatizavimo serveris. Verta dirbti, norint automatizuoti visas užduotis, susijusias su programinės įrangos kūrimu, testavimu, pristatymu ar diegimu.
Minimalūs kompiuterio reikalavimai:
256 MB RAM, 1 GB failų vietos.
Optimalus:
1 GB RAM, 50 GB kietasis diskas.
Norint dirbti, taip pat reikės papildomos programinės įrangos – Java Runtime Environment (JRE) 8 versijos.
Architektūra (paskirstytasis skaičiavimas) atrodo taip:
„Jenkins Server“ yra diegimas, atsakingas už GUI prieglobą, taip pat už viso kūrimo organizavimą ir vykdymą.
Jenkins Node/Slave/Build Server – įrenginiai, kuriuos galima sukonfigūruoti atlikti kūrimo darbus pagrindinio (pagrindinio mazgo) vardu.
Diegimas Linux
Pirmiausia prie sistemos turite pridėti Jenkins saugyklą:
Po to Jenkins bus pasiekiamas sistemoje per numatytąjį 8080 prievadą.
Norėdami patikrinti funkcionalumą, naršyklėje turite atidaryti adresą localhost:8080. Tada sistema paragins įvesti pradinį root vartotojo slaptažodį. Šis slaptažodis yra faile /var/lib/jenkins/secrets/initialAdminPassword.
Dabar viskas paruošta, galite pradėti kurti CI/CD srautus. Grafinė darbastalio sąsaja atrodo taip:
Jenkins stipriosios pusės:
mastelio keitimas, kurį suteikia Master/Slave architektūra;
REST XML/JSON API prieinamumas;
galimybė prijungti daugybę plėtinių dėka papildinių;
aktyvi ir nuolat besivystanti bendruomenė.
Trūkumai:
nėra analitinio bloko;
ne itin patogi sąsaja.
TeamCity
Komercinė plėtra iš JetBrains. Serveris yra geras su paprasta sąranka ir puikia sąsaja. Numatytoji konfigūracija turi daugybę funkcijų, o galimų įskiepių skaičius nuolat didėja.
Serverio techninės įrangos reikalavimai nėra svarbūs:
RAM - 3,2 GB;
procesorius - dviejų branduolių, 3,2 GHz;
ryšio kanalas, kurio talpa 1 Gb/s.
Serveris leidžia pasiekti aukštą našumą:
60 projektų su 300 konfigūracijų;
2 MB paskirstymas kūrimo žurnalui;
50 statybinių agentų;
galimybė dirbti su 50 vartotojų žiniatinklio versijoje ir 30 vartotojų IDE;
100 išorinių VCS jungčių, dažniausiai Perforce ir Subversion. Vidutinis keitimo laikas yra 120 sekundžių;
daugiau nei 150 pakeitimų per dieną;
darbas su duomenų baze viename serveryje;
JVM serverio proceso nustatymai: -Xmx1100m -XX:MaxPermSize=120m.
Agento reikalavimai yra pagrįsti veikiančiais mazgais. Pagrindinė serverio užduotis yra stebėti visus prijungtus agentus ir paskirstyti šiems agentams eilės rinkinius pagal suderinamumo reikalavimus, pranešant apie rezultatus. Agentai yra įvairiose platformose ir operacinėse sistemose, taip pat iš anksto sukonfigūruota aplinka.
Visa informacija apie kūrimo rezultatus yra saugoma duomenų bazėje. Visų pirma tai yra istorija ir kiti panašūs duomenys, VCS pakeitimai, agentai, kūrimo eilės, vartotojų abonementai ir leidimai. Duomenų bazėje nėra tik kūrimo žurnalų ir artefaktų.
Diegimas Linux
Norėdami rankiniu būdu įdiegti TeamCity su Tomcat servlet konteineriu, turėtumėte naudoti TeamCity archyvą: TeamCity .tar.gz. parsisiųsti galite gauti iš čia.
tar -xfz TeamCity.tar.gz
/bin/runAll. sh [pradėti|sustabdyti]
Kai pirmą kartą paleidžiate, turite pasirinkti duomenų bazės, kurioje bus saugomi surinkimo duomenys, tipą.
Veikia numatytoji konfigūracija localhost:8111/ su vienu registruotu kūrimo agentu, veikiančiu tame pačiame kompiuteryje.
„TeamCity“ stipriosios pusės:
lengvas nustatymas;
patogi sąsaja;
daug integruotų funkcijų;
parama;
yra RESTful API;
gera dokumentacija;
geras saugumas.
Trūkumai:
ribota integracija;
Tai mokamas įrankis;
maža bendruomenė (kuri vis dėlto auga).
GoCD
Atvirojo kodo projektas, kurio diegimui ir veikimui reikalinga Java Runtime Environment (JRE) 8 versija.
Sistemos reikalavimai:
RAM - mažiausiai 1 GB, daugiau yra geriau;
procesorius - dviejų branduolių, kurio branduolio dažnis yra 2 GHz;
kietajame diske – mažiausiai 1 GB laisvos vietos.
Agentas:
RAM - mažiausiai 128 MB, daugiau yra geriau;
procesorius – ne mažiau kaip 2 GHz.
Serveris užtikrina agentų darbą ir patogią sąsają vartotojui:
Etapai/Darbai/Užduotys:
Diegimas Linux
aidas "deb download.gocd.org /“ | sudo tee /etc/apt/sources.list.d/gocd.list
/etc/init.d/go-server [start|stop|status|paleisti iš naujo]
/etc/init.d/go-agent [start|stop|status|paleisti iš naujo]
Pagal numatytuosius nustatymus veikia GoCd localhost: 8153.
GoCd stipriosios pusės:
atviro kodo;
paprastas montavimas ir konfigūravimas;
gera dokumentacija;
Puiki vartotojo sąsaja:
galimybė parodyti žingsnis po žingsnio GoCD diegimo kelią viename rodinyje:
puikus dujotiekio struktūros vaizdas:
GoCD optimizuoja CD darbo eigą populiariausiose debesų aplinkose, įskaitant Docker, AWS;
įrankis leidžia ištaisyti problemas, susijusias su konvejeriu, dėl kurių realiuoju laiku stebimas kiekvienas pakeitimas nuo įsipareigojimo iki diegimo.
Trūkumai:
reikalingas bent vienas agentas;
nėra pulto, kuriame būtų rodomos visos atliktos užduotys;
norėdami įvykdyti kiekvieną komandą, turite sukurti vieną konfigūracijos užduotį;
Norėdami įdiegti papildinį, turite perkelti .jar failą į /plugins/external ir paleiskite serverį iš naujo;
palyginti nedidelė bendruomenė.
Kaip išvada
Tai tik trys įrankiai, iš tikrųjų jų yra daug daugiau. Sunku išsirinkti, todėl būtinai reikia atkreipti dėmesį į papildomus aspektus.
Įrankio atvirojo kodo kodas leidžia suprasti, kas tai yra, ir greičiau pridėti naujų funkcijų. Bet jei kas neveikia, tuomet tenka pasikliauti tik savimi ir bendruomenės pagalba. Mokami įrankiai teikia paramą, kuri kartais gali būti labai svarbi.
Jei sauga yra jūsų svarbiausias prioritetas, verta dirbti su vietiniu įrankiu. Jei ne, tada pasirinkti SaaS sprendimą yra geras pasirinkimas.
Ir galiausiai, norint užtikrinti tikrai efektyvų nuolatinį diegimo procesą, reikia suformuluoti kriterijus, kurių specifika leistų susiaurinti turimų įrankių spektrą.