Etengabeko hedapena antolatzeko 3 tresna ezagun (Etengabeko hedapena)
Etengabeko hedapena softwarearen garapenaren ikuspegi berezi bat da, softwarean hainbat funtzio azkar, seguru eta eraginkortasunez ezartzeko erabiltzen dena.
Ideia nagusia prozesu automatizatu fidagarri bat sortzea da, garatzaileak erabiltzaileari amaitutako produktua azkar entregatzeko aukera ematen diona. Aldi berean, etengabeko aldaketak egiten dira ekoizpenean - etengabeko entrega kanalizazioa (CD Pipeline) deritzo.
Gogoratzen dugu:"Habr" irakurle guztientzat - 10 errubloko deskontua "Habr" promozio-kodea erabiliz Skillbox-eko edozein ikastarotan izena ematean.
Fluxua kontrolatzeko, tresna sorta zabala erabil dezakezu, ordainpekoak eta guztiz doakoak barne. Artikulu honek programatzaile guztientzat erabilgarriak izan daitezkeen garatzaileen artean hiru soluzio ezagunenak deskribatzen ditu.
Jenkins
Kode irekiko automatizazio zerbitzari guztiz autonomoa. Merezi du lan egitea softwarea eraiki, probatu, bidaltzea edo zabaltzearekin lotutako mota guztietako zereginak automatizatzeko.
PCaren gutxieneko eskakizunak:
256 MB RAM, 1 GB fitxategi espazioa.
Optimoa:
1 GB RAM, 50 GB disko gogorra.
Lan egiteko, software osagarria ere beharko duzu - Java Runtime Environment (JRE) 8. bertsioa.
Arkitektura (konputazio banatua) honelakoa da:
Jenkins Server GUI hostingaz arduratzen den instalazio bat da, baita eraikuntza osoa antolatzeaz eta exekutatzen duena ere.
Jenkins Nodo/Esklabo/Eraiki zerbitzaria - Maisuaren (nodo nagusia) izenean eraikuntza lanak egiteko konfigura daitezkeen gailuak.
Linuxerako instalazioa
Lehenik eta behin Jenkins biltegia gehitu behar duzu sistemara:
Horren ondoren, Jenkins sisteman eskuragarri egongo da 8080 ataka lehenetsiaren bidez.
Funtzionalitatea egiaztatzeko, helbidea arakatzailean ireki behar duzu localhost:8080. Ondoren, sistemak root erabiltzailearen hasierako pasahitza idazteko eskatuko dizu. Pasahitz hau /var/lib/jenkins/secrets/initialAdminPassword fitxategian dago.
Orain dena prest dago, CI/CD fluxuak sortzen has zaitezke. Lan mahaiaren interfaze grafikoa honelakoa da:
Jenkinsen indarguneak:
Master/Slave arkitekturak eskaintzen duen eskalagarritasuna;
REST XML/JSON APIaren erabilgarritasuna;
pluginei esker luzapen ugari konektatzeko gaitasuna;
komunitate aktiboa eta etengabe garatzen ari dena.
Cons:
ez dago bloke analitikorik;
ez oso erabilerraza den interfazea.
TeamCity
JetBrains-en garapen komertziala. Zerbitzaria ona da konfigurazio sinplearekin eta interfaze bikainarekin. Lehenetsitako konfigurazioak funtzio ugari ditu, eta eskuragarri dauden pluginen kopurua etengabe handitzen ari da.
Java Runtime Environment (JRE) 8. bertsioa behar du.
Zerbitzariaren hardware-eskakizunak ez dira kritikoak:
RAM - 3,2 GB;
prozesadorea - nukleo bikoitza, 3,2 GHz;
1 Gb/s-ko gaitasuna duen komunikazio kanala.
Zerbitzariak errendimendu handia lortzeko aukera ematen du:
60 proiektu 300 eraikuntza konfiguraziorekin;
2 MB esleipena eraikitze-erregistrorako;
50 eraikuntza eragile;
web bertsioan 50 erabiltzailerekin eta IDEan 30 erabiltzailerekin lan egiteko gaitasuna;
100 kanpoko VCS konexioak, normalean Perforce eta Subversion. Batez besteko aldaketa-denbora 120 segundokoa da;
egunean 150 aldaketa baino gehiago;
datu-basearekin zerbitzari batean lan egitea;
JVM zerbitzariaren prozesu ezarpenak: -Xmx1100m -XX: MaxPermSize=120m.
Agenteen eskakizunak exekutatzen diren muntaietan oinarritzen dira. Zerbitzariaren zeregin nagusia da konektatutako agente guztiak kontrolatzea eta agente horiei ilaran dauden muntaiak banatzea bateragarritasun-baldintzen arabera, emaitzen berri emanez. Agenteak hainbat plataforma eta sistema eragiletan datoz, baita aurrez konfiguratutako ingurune batean ere.
Eraikuntzaren emaitzei buruzko informazio guztia datu-basean gordetzen da. Batez ere, historia eta antzeko beste datu batzuk, VCS aldaketak, agenteak, ilarak, erabiltzaile-kontuak eta baimenak dira. Datu-baseak ez ditu eraikuntza erregistroak eta artefaktuak soilik sartzen.
Linuxerako instalazioa
TeamCity Tomcat servlet edukiontzi batekin eskuz instalatzeko, TeamCity artxiboa erabili behar duzu: TeamCity .tar.gz. Deskargatu hemendik lor dezakezu.
tar -xfz TeamCity.tar.gz
/bin/runAll. sh [hasi|gelditu]
Lehenengo hasten zarenean, muntaia-datuak gordeko diren datu-base mota hautatu behar duzu.
Lehenetsitako konfigurazioa martxan da localhost:8111/ ordenagailu berean exekutatzen ari den eraikitze-agente erregistratu batekin.
TeamCity-ren indarguneak:
konfigurazio sinplea;
erabiltzaile-interfaze bizkor;
integratutako funtzio ugari;
Laguntza zerbitzua;
RESTful API bat dago;
dokumentazio ona;
segurtasun ona.
Cons:
integrazio mugatua;
Hau ordaindutako tresna bat da;
komunitate txiki bat (hazten ari dena, ordea).
GoCD
Instalatzeko eta funtzionatzeko Java Runtime Environment (JRE) 8 bertsioa behar duen kode irekiko proiektu bat.
Tresnak kanalean dauden arazoak zuzentzea ahalbidetzen du, eta, horretarako, aldaketa guztien jarraipena egiten da denbora errealean konpromisotik inplementaziora.
Cons:
gutxienez agente bat behar da;
ez dago amaitutako zeregin guztiak bistaratzeko kontsolarik;
komando bakoitza exekutatzeko, kanalizazio konfiguraziorako zeregin bat sortu behar duzu;
Plugin-a instalatzeko .jar fitxategia mugitu behar duzu /plugins/external eta berrabiarazi zerbitzaria;
komunitate txiki samarra.
Ondorio gisa
Hiru tresna besterik ez dira hauek, askoz gehiago ere badaude. Zaila da aukeratzea, beraz, zalantzarik gabe, alderdi osagarriei arreta jarri behar diezu.
Tresnaren iturburu irekiko kodeari esker, zer den ulertzea ahalbidetzen du, eta funtzio berriak azkarrago gehitzen ditu. Baina zerbaitek ez badu funtzionatzen, orduan zeure buruan eta komunitatearen laguntzarekin bakarrik fidatu behar duzu. Ordainpeko tresnek batzuetan kritikoa izan daitekeen laguntza eskaintzen dute.
Segurtasuna zure lehentasun nagusia bada, merezi du tokiko tresna batekin lan egitea. Hala ez bada, SaaS irtenbide bat aukeratzea aukera ona da.
Eta, azkenik, etengabeko hedapen prozesu benetan eraginkorra bermatzeko, zeinen zehaztasunek eskuragarri dauden tresnen sorta murrizteko aukera emango duten irizpideak formulatu behar dituzu.