
Dezvoltarea Continuă (Continuous Deployment) este o abordare specifică în dezvoltarea de software, care se aplică pentru implementarea rapidă, sigură și eficientă a diferitelor funcții în software.
Ideea principală este crearea unui proces automatizat și de încredere, care să permită dezvoltatorului să ofere rapid utilizatorului un produs finalizat. Aceasta implică modificări continue în producție — ceea ce se numește un pipeline de livrare continuă (CD Pipeline).
Skillbox recomandă: Curs practic .
Vă reamintim: pentru toți cititorii „Habr” — reducere de 10.000 de ruble la înscrierea la orice curs Skillbox cu codul de promovare „Habr”.

Pentru gestionarea fluxului pot fi utilizate o gamă largă de instrumente, atât plătite, cât și complet gratuite. În acest articol sunt prezentate trei dintre cele mai populare soluții pentru dezvoltatori, care ar putea fi utile fiecărui programator.
Jenkins
Un server de automatizare complet autonom cu sursă deschisă. Este recomandat pentru automatizarea tuturor tipurilor de sarcini legate de compilare, testare, livrare sau desfășurare de software.
Cerințe minime pentru PC:
- 256 MB RAM, 1 GB spațiu pe disk.
Optimal:
- 1 GB RAM, 50 GB pe hard disk.
De asemenea, va fi necesar un software suplimentar — Java Runtime Environment (JRE) versiunea 8.
Arhitectura (calcul distribuit) arată astfel:

Jenkins Server — instalarea care este responsabilă pentru găzduirea GUI, precum și organizarea și executarea întregului proces de compilare.
Jenkins Node/Slave/Build Server — dispozitive care pot fi configurate pentru a efectua sarcini de compilare în numele Master (nodul principal).
Instalare pentru Linux
Mai întâi trebuie să adăugați depozitul Jenkins în sistem:
cd /tmp && wget -q -O — | sudo apt-key add — echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Actualizați depozitul de pachete:
sudo apt update
Instalați Jenkins:
sudo apt install jenkins
După aceasta, Jenkins va fi disponibil în sistem pe portul implicit 8080.
Pentru a verifica funcționalitatea, trebuie să deschideți în browser adresa :8080. Apoi sistemul va solicita introducerea parolei inițiale a utilizatorului cu privilegii de root. Această parolă se află în fișierul /var/lib/jenkins/secrets/initialAdminPassword.
Acum totul este pregătit pentru a lucra, putem începe să creăm fluxuri CI/CD. Interfața grafică a mediului de lucru arată astfel:


Punctele forte ale Jenkins:
- scalabilitate, asigurată de arhitectura Master/Slave;
- disponibilitatea API REST XML/JSON;
- posibilitatea de a conecta un mare număr de extensii prin plugin-uri;
- o comunitate activă și în continuă expansiune.
Dezavantaje:
- lipsa unui bloc analitic;
- interfață nu foarte prietenoasă.
TeamCity
Dezvoltare comercială de la JetBrains. Serverul are o configurare simplă și o interfață excelentă. În configurația default există un număr mare de funcții, numărul plugin-urilor disponibile este în continuă creștere.
Este necesar Java Runtime Environment (JRE) versiunea 8 pentru funcționare.
Cerințele hardware ale serverului nu sunt critice:
- RAM — 3,2 GB;
- procesor — dual-core, 3,2 GHz;
- lățimea de bandă de 1 Gb/s.
Serverul permite atingerea unui nivel ridicat de performanță:
- 60 proiecte cu 300 de configurații de compilare;
- alocarea a 2 MB pentru jurnalul de compilare;
- 50 agenți de compilare;
- posibilitatea de a lucra cu 50 de utilizatori în versiunile web și 30 de utilizatori în IDE;
- 100 conexiuni externe la SCM, de obicei Perforce și Subversion. Timpul mediu de schimbare — 120 de secunde;
- peste 150 de modificări pe zi;
- lucrul cu baza de date pe un singur server;
- setările procesului de server JVM: -Xmx1100m -XX:MaxPermSize=120m.
Cerințele pentru agent sunt determinante de compilările active. Principala sarcină a serverului este de a monitoriza toți agenții conectați și de a distribui compilările din coadă acestora în funcție de cerințele de compatibilitate, comunicând rezultatele. Agenții au platforme și sisteme de operare diferite, plus un mediu preconfigurat.
Toate informațiile despre rezultatele compilării sunt stocate în baza de date. Aceasta include în primul rând istoricul și alte date asemănătoare, schimbările VCS, agenții, cozile de compilare, conturile și permisiunile utilizatorilor. În baza de date nu sunt incluse doar jurnalele de compilare și artefactele.

Instalare pentru Linux
Pentru instalarea manuală a TeamCity cu containerul Servlet Tomcat, trebuie să folosiți arhiva TeamCity: TeamCity .tar.gz. Descarcă .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
La prima pornire, trebuie să selectați tipul de bază de date în care vor fi stocate datele despre compilare.

Configurarea default funcționează pe :8111/ cu un singur agent de compilare înregistrat, care rulează pe același PC.
Punctele forte ale TeamCity:
- configurare simplă;
- interfață prietenoasă;
- un număr mare de funcții integrate;
- serviciu de suport;
- disponibilitate API RESTful;
- documentație decentă;
- securitate bună.
Dezavantaje:
- integrări limitate;
- este un instrument plătit;
- o comunitate mică (care, de altfel, este în creștere).
GoCD
Proiect open source, pentru instalarea și funcționarea căruia este necesar Java Runtime Environment (JRE) versiunea 8.
Cerințe de sistem:
- RAM — 1 GB minimum, mai bine mai mult;
- procesor — dual-core, cu frecvența de lucru a nucleului de 2 GHz;
- hard disk — minimum 1 GB spațiu liber.
Agent:
- RAM — minimum 128 MB, mai bine mai mult;
- procesor — minimum 2 GHz.
Serverul facilitează funcționarea agenților și oferă o interfață prietenoasă pentru utilizator:

Etape/Locuri de muncă/Sarcini:

Instalare pentru 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]
Din default, GoCd funcționează pe :8153.
Punctele forte ale GoCd:
- cod sursă deschis;
- instalare și configurare simple;
- documentație bună;
- interfață excelentă pentru utilizatori:

- posibilitatea de a vizualiza pas cu pas drumul desfășurării GoCD într-o singură viziune:

- o prezentare excelentă a structurii conductei:

- GoCD optimizează fluxul de lucru CD în cele mai solicitate medii cloud, inclusiv Docker, AWS;
- instrumentul permite diagnosticarea problemelor în conductă, având funcționalitatea de a urmări fiecare modificare de la commit la desfășurare în timp real.
Dezavantaje:
- este nevoie de cel puțin un agent;
- nu există consolă pentru a vizualiza toate sarcinile realizate;
- pentru a executa fiecare comandă, trebuie să creați câte o sarcină pentru configurația conductei;
- pentru instalarea pluginului, fișierul .jar trebuie mutat în /plugins/external și serverul trebuie repornit;
- o comunitate relativ mică.
Ca rezultat
Acestea sunt doar trei instrumente, de fapt există mult mai multe. Alegeți cu dificultate, așa că trebuie acordată o atenție suplimentară aspectelor adiționale.
Codul sursă deschis al instrumentului oferă posibilitatea de a înțelege ce reprezintă acesta, plus adăugarea mai rapidă a unor funcții noi. Dar, dacă ceva nu funcționează, trebuie să te bazezi doar pe tine și pe ajutorul comunității. Instrumentele plătite oferă suport, care poate fi uneori critic.
Dacă securitatea este mai importantă decât orice altceva, merită să lucrați cu un instrument local. Dacă nu, alegerea unei soluții SaaS este o opțiune bună.
Și, în final: pentru a asigura un proces cu adevărat eficient de desfășurare continuă, este necesar să stabilim criterii ale căror specificații vor permite restrângerea alegerii instrumentelor disponibile.
Skillbox recomandă:
- Curs practic de doi ani .
- Curs online .
- Curs practic anual .
Sursa: habr.com
