3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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 «Mobil developer PRO».

Kujtojmë: për të gjithë lexuesit e «Habra» — zbritje prej 10,000 rublesh për regjistrimin në çdo kurs Skillbox me kodin promovues «Habr».

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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ë:
3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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 — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add — echo 'deb pkg.jenkins.io/debian-stable 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 localhost: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ë:

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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.

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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 nga këtu.

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.

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

Konfigurimi i paracaktuar punon në localhost: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:

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

Etapa / Punët / Detyrat:

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

Instalimi për Linux

echo “deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | 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ë localhost: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:

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

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

3 mjete të njohura për organizimin e vazhdueshëm të shpërndarjes (Continuous Deployment)

  • 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:

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster