
Pidev pideploymine (Continuous Deployment) on tark arengusuund, mida rakendatakse tarkvaraarenduses, et kiiresti, turvaliselt ja tõhusalt uusi funktsioone REST API-sse integreerida.
Peamine idee on luua usaldusväärne automatiseeritud protsess, mis võimaldab arendajal kiiresti pakkuda kasutajale valmis toodet. Protsessis tehakse pidevaid muudatusi tootmises - seda nimetatakse pideva kohaletoimetamise protsessiks (CD Pipeline).
Skillbox soovitab: Praktiline kursus .
Tuletame meelde: kõigile «Habra» lugejatele — 10 000 rubla soodustus, kui registreerite end Skillboxi mis tahes kursusele promokoodi «Habr» abil.

Protsesside juhtimiseks saab kasutada laia tööriistade valikut, sealhulgas nii tasulisi kui ka täiesti tasuta lahendusi. Käesolevas artiklis tutvustatakse kolme arendajate seas kõige populaarsemat lahendust, mis võivad iga arendaja jaoks kasulikud olla.
Jenkins
Täielikult autonoomne avatud lähtekoodiga automatiseerimise server. Seda tasub kasutada kõigi ülesannete automatiseerimiseks, mis on seotud tarkvara kokkupaneku, testimise, tarnimise või juurutamisega.
Minimaalsed nõuded arvutile:
- 256 MB RAM-i, 1 GB salvestusruumi.
Optimaalne:
- 1 GB RAM-i, 50 GB kõvakettal.
Tööks vajate ka täiendavat tarkvara - Java Runtime Environment (JRE) versioon 8.
Arhitektuur (jaotatud arvutused) näeb välja järgmiselt:

Jenkins Server - installatsioon, mis vastutab GUI-hostimise ning kogu koostamise korraldamise ja teostamise eest.
Jenkins Node/Slave/Build Server - seadmed, mida saab seadistada koostamisülesannete täitmiseks Master (peanoodi) nimel.
Paigaldamine Linuxile
Esmalt tuleb lisada Jenkins'i hoidla süsteemi:
cd /tmp && wget -q -O - | sudo apt-key add - echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Uuendage pakettide hoidlat:
sudo apt update
Installige Jenkins:
sudo apt install jenkins
Pärast seda on Jenkins süsteemis saadaval vaikimisi pordil 8080.
Töökorras kontrollimiseks avage brauseris aadress :8080. Seejärel palub süsteem sisestada algse juurkasutaja parooli. See parool asub failis /var/lib/jenkins/secrets/initialAdminPassword.
Nüüd on kõik tööks valmis, saate alustada CI/CD voogude loomisega. Graafiline kasutajaliides töökeskkonnast näeb välja järgmiselt:


Jenkins'i tugevused:
- skaleerimisvõime, mida tagab Master/Slave arhitektuur;
- REST XML/JSON API olemasolu;
- võimalus ühendada suurt hulka laiendusi tänu pluginadele;
- aktiivne ja pidevalt arenev kogukond.
Miinused:
- analüütilise bloki puudumine;
- mitte eriti mugav liides.
TeamCity
JetBrains'i kaubanduslik arendus. Server on hea lihtsa seadistamise ja suurepärase liidese poolest. Vaikimisi konfiguratsioonis on palju funktsioone ja saadaval olevate pluginade arv suureneb pidevalt.
Töötamiseks on vajalik Java Runtime Environment (JRE) versioon 8.
Serveri riistvara nõuded ei ole kriitilised:
- RAM — 3,2 GB;
- protsessor — kaks tuuma, 3,2 GHz;
- ühenduskanal, mille läbilaskevõime on 1 Gb/s.
Server võimaldab saavutada kõrget tööefektiivsust:
- 60 projekti 300 ehituskonfiguratsiooniga;
- 2 MB eraldamine ehituse logile;
- 50 ehitusagenti;
- võimalus 50 kasutajaga veebiversioonis ja 30 kasutajaga IDE-s;
- 100 ühendust välise SCV-ga, tavaliselt Perforce ja Subversion. Keskmine muudatuste aeg — 120 sekundit;
- üle 150 muudatuse päevas;
- töö andmebaasiga ühel serveril;
- serveri protsessi JVM seaded: -Xmx1100m -XX:MaxPermSize=120m.
Agendi nõudmised sõltuvad töökindlatest kogumitest. Serveri peamine ülesanne on jälgida kõiki ühendatud agente ja jagada kogumid järjekorrast nende agentide vahel vastavalt ühilduvuse nõuetele, edastades tulemused. Agendid töötavad erinevatel platvormidel ja operatsioonisüsteemidel ning neil on eelnevalt konfigureeritud keskkond.
Kogu kogumise tulemusi puudutav teave salvestatakse andmebaasi. Esiteks on see ajalugu ja muud sarnased andmed, VCS muudatused, agendid, kogumise järjekorrad, kasutajakontod ja õigused. Andmebaasi ei kuulu ainult kogumise logid ja artefaktid.

Paigaldamine Linuxile
TeamCity käsitsi installimiseks Tomcat servlet konteineri abil tuleks kasutada TeamCity arhiivi: TeamCity .tar.gz. Laadige see alla .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Esimese käivitamise ajal tuleb valida andmebaasi tüüp, milles hoitakse kogumise andmeid.

Vaikimisi konfiguratsioon töötab aadressil :8111/ ühe registreeritud kogumise agentiga, mis töötab samal arvutil.
TeamCity tugevused:
- lihtne seadistamine;
- kasutajasõbralik liides;
- palju sisseehitatud funktsioone;
- toetusteenus;
- on olemas RESTful API;
- hea dokumentatsioon;
- hea kaitse.
Miinused:
- piiratud integreerimine;
- see on tasuline tööriist;
- väike kogukond (mis, siiski, kasvab).
GoCD
Avatud lähtekoodiga projekt, mille installimiseks ja töötamiseks on vajalik Java Runtime Environment (JRE) versioon 8.
Süsteeminõuded:
- RAM - vähemalt 1 GB, parem rohkem;
- protsessor - kahetuumaline, tuuma töökiirus 2 GHz;
- kõvaketas - vähemalt 1 GB vaba ruumi.
Agent:
- RAM - vähemalt 128 MB, parem rohkem;
- protsessor - vähemalt 2 GHz.
Server tagab agentide töö ja pakub kasutajale mugavat liidest:

Etapid/Tööd/Ülesanded:

Paigaldamine Linuxile
echo "deb /” | sudo tee /etc/apt/sources.list.d/gocd.list
curl | sudo apt-key add —
add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get install go-agent
/etc/init.d/go-server [start|stop|status|restart]
/etc/init.d/go-agent [start|stop|status|restart]
Vaikimisi töötab GoCd :8153.
GoCd tugevused:
- avatud lähtekood;
- lihtne installimine ja seadistamine;
- hea dokumentatsioon;
- suurepärane kasutajaliides:

- võimalus samm-sammult kuvada GoCD juurutamise teed ühes vaates:

- suurepärane torujuhtme struktuuri kuvamine:

- GoCD optimeerib CI/CD töövoo kõige nõutumates pilvekeskkondades, sealhulgas Docker, AWS;
- Tööriist võimaldab parandada vooliku tõrkeid, mille jaoks jälgitakse iga muudatust commiti ja juurutamise vahel reaalajas.
Miinused:
- Vajalik on vähemalt üks agent;
- Ei ole konsooli, et kuvada kõiki täidetud ülesandeid;
- Iga käsu täitmiseks tuleb luua üks ülesanne vooliku konfiguratsioonile;
- Plugina installimiseks tuleb viia .jar-fail /plugins/external ja taaskäivitada server;
- Suhteliselt väike kogukond.
Väljundina
Need on vaid kolm tööriista, tegelikult on neid palju rohkem. Valiku tegemine on keeruline, seetõttu on oluline pöörata tähelepanu ka muudele aspektidele.
Tööriista avatud allikakood annab võimaluse mõista, mis see endast kujutab, ning kiirem uute funktsioonide lisamine. Kuid kui midagi ei tööta, tuleb loota vaid enda ja kogukonna abi peale. Tasulised tööriistad pakuvad tuge, mis võib osutuda kriitiliselt oluliseks.
Kui turvalisus on kõige olulisem, tasub kasutada kohalikke tööriistu. Kui see pole nii oluline, siis SaaS-lahenduse valimine on hea variant.
Viimane asi: tõeliselt efektiivse pideva juurutamise protsessi tagamiseks tuleb välja töötada kriteeriumid, mille spetsiifika võimaldab kitsendada saadaval olevate tööriistade valikut.
Skillbox soovitab:
- Kaheaastane praktiline kursus .
- Veebikursus .
- Praktiline aastakursus .
Allikas: habr.com
