
Continuous Deployment (shpërndarje e vazhdueshme) është një qasje e veçantë në zhvillimin e softuerit, e cila aplikohet për të implementuar shpejt, sigurt dhe me efikasitet funksione të ndryshme në softuer.
Ideja kryesore është krijimi i një procesi të besueshëm automatik, i cili lejon zhvilluesin të ofrojë shpejt një produkt të gatshëm për përdoruesin. Në të njëjtën kohë, bëhen ndryshime të vazhdueshme në prodhim — kjo quhet linja e shpërndarjes së vazhdueshme (CD Pipeline).
Skillbox rekomandon: Kurs praktik .
Kujtojmë: për të gjithë lexuesit e «Habra» — zbritje prej 10,000 rublesh për regjistrimin në çdo kurs Skillbox me kodin promovues «Habr».

Për menaxhimin e fluksit, mund të përdoren një gamë e gjerë mjetesh, midis të cilave ka si ato me pagesë ashtu edhe plotësisht të lira. Në këtë artikull përshkruhen tre zgjidhjet më të popullarizuara mes zhvilluesve, të cilat mund të jenë të dobishme për çdo programues.
Jenkins
Një server plotësisht autonom për automatizimin me burim të hapur. Ai duhet të përdoret për automatizimin e çdo lloj detyre që lidhet me ndërtimin, testimin, dërgimin ose shpërndarjen e softuerit.
Kërkesat minimale për PC:
- 256 MB RAM, 1 GB hapësire disku.
Optimumi:
- 1 GB RAM, 50 GB në diskun e ngurtë.
Për funksionimin e tij, kërkohet gjithashtu softuer shtesë — Java Runtime Environment (JRE) versione 8.
Arkitektura (llogaritjet e shpërndara) duket si më poshtë:

Jenkins Server — instalimi, i cili përgjigjet për hostimin e GUI-së, si dhe organizimin dhe ekzekutimin e gjithë ndërtimit.
Jenkins Node/Slave/Build Server — pajisje që mund të konfigurohen për të kryer punët e ndërtimit në emër të Master (në krye).
Instalimi për Linux
Së pari, duhet të shtoni repositorin Jenkins në sistem:
cd /tmp && wget -q -O — | sudo apt-key add — echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Për të përditësuar repositorin e pakove:
sudo apt update
Për të instaluar Jenkins:
sudo apt install jenkins
Pas kësaj, Jenkins do të jetë i aksesueshëm në sistem në portin e paracaktuar 8080.
Për të kontrolluar funksionimin, duhet të hapni në shfletues adresën :8080. Pastaj, sistemi do të ofrojë të vendosni fjalëkalimin fillestar të përdoruesit me të drejta root. Ky fjalëkalim ndodhet në skedarin /var/lib/jenkins/secrets/initialAdminPassword.
Tani gjithçka është gati për punë, mund të filloni krijimin e proceseve CI/CD. Ndërfaqja grafike e ambientit të punës duket si më poshtë:


Pikat e forta të Jenkins:
- shkallëzimi që ofrohet nga arkitektura Master/Slave;
- prania e API REST XML/JSON;
- mundësia e lidhjes së një numri të madh të zgjatjeve përmes shtesave;
- një komunitet aktiv dhe që zhvillohet vazhdimisht.
Disavantazhet:
- mungesa e një moduli analitik;
- ndërfaqja jo shumë e lehtë për t'u përdorur.
TeamCity
Zhvillim komercial nga kompania JetBrains. Serveri është i mirë me konfigurimin e thjeshtë dhe një ndërfaqe të shkëlqyer. Në konfigurimin e parazgjedhur ka një numër të madh funksionesh, duke u rritur vazhdimisht numri i shtesave të disponueshme.
Për punë nevojitet Java Runtime Environment (JRE) versioni 8.
Kërkesat e serverit për harduerin nuk janë kritike:
- RAM - 3,2 GB;
- procesori - dy bërthamor, 3,2 GHz;
- kanali i komunikimit me kapacitet prej 1 Gb/s.
Serveri lejon arritjen e një performancë të lartë në punë:
- 60 projekte me 300 konfigurime ndërtimi;
- ndarja e 2 MB për ditarin e ndërtimit;
- 50 agjentë ndërtimi;
- mundësia e punës për 50 përdorues në versionin web dhe 30 përdorues në IDE;
- 100 lidhje me sistemin e jashtëm të menaxhimit të kodit, zakonisht Perforce dhe Subversion. Koha mesatarisht për ndryshime - 120 sekonda;
- më shumë se 150 modifikime në ditë;
- punë me DB në një server;
- konfigurat e procesit të serverit JVM: -Xmx1100m -XX:MaxPermSize=120m.
Kërkesat për agjentin përllogariten nga ndërtimet që po funksionojnë. Detyra kryesore e serverit është të monitorojë të gjithë agjentët e lidhur dhe të ndajë ndërtimet nga radhët te këta agjentë në bazë të kërkesave të pajtueshmërisë, me raportimin e rezultateve. Agjentët kanë platforma dhe sisteme operative të ndryshme, plus një ambient të konfiguruar paraprakisht.
Të gjitha informacionet në lidhje me rezultatet e ndërtimit ruhen në bazën e të dhënave. Para së gjithash, kjo është historia dhe të dhëna të tjera të ngjashme, ndryshimet e VCS, agjentët, radhët e ndërtimit, llogaritë dhe lejet e përdoruesve. Në bazë nuk përfshihen vetëm ditarët e ndërtimit dhe artefaktet.

Instalimi për Linux
Për instalimin manual të TeamCity me konteinerin e servlerit Tomcat duhet të përdorni arkivin TeamCity: TeamCity .tar.gz. Mund ta shkarkoni .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Në nisjen e parë, duhet të zgjidhni llojin e DB-së në të cilën do të ruhen të dhënat për ndërtimin.

Konfigurimi i paracaktuar punon në :8111/ me një agjent ndihmës të regjistruar, i cili është aktiv në të njëjtin PC.
Pikat e forta të TeamCity:
- konfigurim i thjeshtë;
- interface e përshtatshme;
- numër i madh funksionesh të integruara;
- shërbim për mbështetje;
- ka një API RESTful;
- dokumentacion i pranueshëm;
- siguri e mirë.
Disavantazhet:
- integrim i kufizuar;
- është një mjet me pagesë;
- komunitet i vogël (i cili megjithatë është në rritje).
GoCD
Projekt me burim të hapur, për instalimin dhe funksionimin e të cilit kërkohet Java Runtime Environment (JRE) versioni 8.
Kërkesat sistemore:
- RAM — minimumi 1 GB, më mirë më shumë;
- procesori — me dy bërthama, me shpejtësi operimi 2 GHz;
- disku i fortë — minimumi 1 GB hapësirë të lirë.
Agjenti:
- RAM — minimumi 128 MB, më mirë më shumë;
- procesori — minimumi 2 GHz.
Serveri siguron funksionimin e agentëve dhe ofron një interface të përshtatshme për përdoruesin:

Etapa / Punët / Detyrat:

Instalimi për Linux
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]
Në parazgjedhje, GoCD punon në :8153.
Pikat e forta të GoCD:
- burim të hapur;
- instalimi dhe konfigurimi i lehtë;
- dokumentacion i mirë;
- interface e shkëlqyer për përdoruesit:

- mundësia e shfaqjes hap pas hapi të rrugës së shpërndarjes GoCD në një pamje:

- shfaqje e shkëlqyer e strukturës së tubacionit:

- GoCD optimizon procesin CD në mjediset më të kërkuara të cloud, duke përfshirë Docker, AWS;
- mjeti ofron mundësinë për të saktësuar defektet në tubacion, për të cilin ka ndjekje të çdo ndryshimi nga komiti deri në shpërndarje në kohë reale.
Disavantazhet:
- duhet të ketë të paktën një agjent;
- nuk ka një konsol për shfaqjen e të gjitha detyrave të kryera;
- për të kryer çdo komandë, duhet krijuar një detyrë të vetme në konfigurimin e tubacionit;
- për instalimin e plugin-it, nevojitet të zhvendosim skedarin .jar në /plugins/external dhe të rizgjojmë serverin;
- komunitet relativisht i vogël.
Si një përfundim
Këto janë vetëm tri mjete, në të vërtetë ka shumë më tepër. Zgjedhja është e vështirë, prandaj është e nevojshme të kushtoni vëmendje ndaj aspekteve të tjera.
Kod i hapur i mjetit ofron mundësinë të kuptohet se çfarë përfaqëson, duke lejuar gjithashtu shtimin më të shpejtë të funksioneve të reja. Por, nëse diçka nuk funksionon, do të duhet të mbështetesh vetëm te vetvetja dhe ndihmën e komunitetit. Mjetet e paguara ofrojnë mbështetje që mund të jetë kritikisht e rëndësishme ndonjëherë.
Nëse siguria është më e rëndësishme se gjithçka, është më mirë të punosh me një mjet lokal. Nëse jo, atëherë zgjedhja e një zgjidhjeje SaaS është një opsion i mirë.
E fundit: për të siguruar një proces të vërtetë efikas të implementimit të vazhdueshëm, duhet të formulohet kriteret, spesifikiteti i të cilave do të lejojë të ngushtohet lista e mjeteve të disponueshme.
Skillbox rekomandon:
- Kursi praktik dyvjeçar .
- Kurs online .
- Kurs praktik njëvjeçar .
Burimi: habr.com
