Ce este Jenkins? De ce să folosiți instrumentul de integrare continuă (CI)?
Ce este Jenkins?
Jenkins este un server de integrare continuă open-source scris în Java pentru orchestrarea unui lanț de acțiuni pentru realizarea procesului de integrare continuă într-un mod automat. Jenkins acceptă întregul ciclu de viață al dezvoltării software, de la construirea, testarea, documentarea software-ului, implementarea și alte etape ale ciclului de viață al dezvoltării software.
Jenkins este o aplicație utilizată pe scară largă în întreaga lume, care are aproximativ 300 de instalări și crește pe zi ce trece. Folosind Jenkins, companiile de software își pot accelera procesul de dezvoltare a software-ului, deoarece Jenkins poate automatiza construirea și testarea într-un ritm rapid.
Este o aplicație bazată pe server și necesită un server web precum Apache Tomcat. Motivul pentru care software-ul Jenkins a devenit atât de popular este acela al monitorizării sarcinilor repetate care apar în timpul dezvoltării unui proiect. De exemplu, dacă echipa dvs. dezvoltă un proiect, Jenkins vă va testa continuu versiunile de proiect și vă va arăta erorile din etapele incipiente ale dezvoltării dvs.
Ce este integrarea continuă?
Integrare continuă este un proces de integrare a modificărilor de cod de la mai mulți dezvoltatori într-un singur proiect de mai multe ori. Software-ul este testat imediat după comiterea codului. Cu fiecare comisie de cod, codul este construit și testat. Dacă testul este trecut, versiunea este testată pentru implementare. Dacă implementarea are succes, codul este trimis în producție.
Această comitere, construire, testare și implementare este un proces continuu și de aici denumirea de integrare/implementare continuă.
Cum funcționează Jenkins?
Jenkins este o aplicație bazată pe server și necesită un server web precum Apache Tomcat pentru a rula pe diverse platforme, cum ar fi Windows, Linux, macOS, Unix, etc. Pentru a utiliza Jenkins, trebuie să creați conducte care sunt o serie de pași pe care îi va face un server Jenkins. Jenkins Continuous Integration Pipeline este un instrument puternic care constă dintr-un set de instrumente concepute pentru gazdă, monitorizează, compila si test cod sau modificări de cod, cum ar fi:
- Server de integrare continuă (Jenkins, Bamboo, CruiseControl, TeamCity, si altii)
- Instrument de control al sursei (de exemplu, CVS, SVN, GIT, Mercurial, Perforce, ClearCase și altele)
- Instrument de construcție (Face, ANT, Maven, Ivy, Gradle, si altii)
- Cadrul de testare a automatizării (Selenium, Appium, TestComplete, UFT și altele)
Istoria Jenkin
- Kohsuke Kawaguchi, a Java Dezvoltatorul, care lucra la SUN Microsystems, s-a săturat să construiască codul și să repare erorile în mod repetitiv. În 2004, a creat un server de automatizare numit Hudson care automatizează sarcina de construire și testare.
- În 2011, Oracle care deținea Sun Microsystems a avut o dispută cu comunitatea open source Hudson, așa că l-au transformat pe Hudson și l-au redenumit Jenkins.
- Atât Hudson, cât și Jenkins au continuat să funcționeze independent. Dar, în scurt timp, Jenkins a achiziționat o mulțime de proiecte și colaboratori, în timp ce Hudson a rămas cu doar 32 de proiecte. Cu timpul, Jenkins a devenit mai popular, iar Hudson nu mai este menținut.
De ce să folosiți integrarea continuă cu Jenkins?
Unii oameni ar putea crede că modul de modă veche de a dezvolta software-ul este cel mai bun. Să înțelegem avantajele CI cu Jenkins cu următorul exemplu
Să ne imaginăm că există aproximativ 10 dezvoltatori care lucrează la un depozit partajat. Unii dezvoltatori își finalizează sarcina în 25 de zile, în timp ce alții durează 30 de zile.
Înainte de Jenkins | După Jenkins |
---|---|
Odată ce toți dezvoltatorii și-au finalizat sarcinile de codare atribuite, ei obișnuiau să-și comite codul în același timp. Later, Build este testat și implementat.
Commit codul construit, iar ciclul de testare a fost foarte rar și o singură construcție a fost realizată după multe zile. |
Codul este construit și testat de îndată ce Dezvoltatorul comite cod. Jenkin va construi și va testa codul de mai multe ori în timpul zilei
Dacă construirea are succes, Jenkins va implementa sursa în serverul de testare și va anunța echipa de implementare. Dacă construirea eșuează, atunci Jenkins va notifica erorile echipei de dezvoltatori. |
Deoarece codul a fost construit dintr-o dată, unii dezvoltatori ar trebui să aștepte până când alți dezvoltatori termină codificarea pentru a-și verifica construirea | Codul este construit imediat după ce oricare dintre dezvoltatori se comite. |
Nu este o sarcină ușoară să izolați, să detectați și să remediați erorile pentru mai multe comiteri. | Deoarece codul este construit după fiecare comitere a unui singur dezvoltator, este ușor să detectați al cui cod a cauzat eșecul construcției |
Construirea codului și proces de testare sunt în întregime manuale, deci există multe șanse de eșec. | Proces automat de construire și testare, economisind timp și reducând defectele. |
Codul este implementat odată ce toate erorile sunt remediate și testate. | Codul este implementat după fiecare construcție și testare reușită. |
Ciclul de dezvoltare este lent | Ciclul de dezvoltare este rapid. Noile funcții sunt mai ușor disponibile pentru utilizatori. Crește profiturile. |
Studiu de caz real al integrării continue
Sunt sigur că toți cunoașteți vechiul telefon Nokia. Nokia obișnuia să implementeze o procedură numită nightly build. După mai multe comiteri de la diverși dezvoltatori în timpul zilei, software-ul a fost construit în fiecare noapte. Întrucât software-ul a fost construit doar o dată pe zi, este o problemă uriașă să izolați, să identificați și să remediați erorile într-o bază mare de coduri.
Later, au adoptat abordarea de Integrare Continuă. Software-ul a fost construit și testat de îndată ce un dezvoltator a comis cod. Dacă este detectată vreo eroare, dezvoltatorul respectiv poate remedia rapid defectul.
Pluginuri Jenkins
În mod implicit, Jenkins vine cu un set limitat de caracteristici. Dacă doriți să vă integrați instalarea Jenkins cu instrumente de control al versiunilor precum Git, atunci trebuie să instalați pluginuri legate de Git. De fapt, pentru integrarea cu instrumente precum Maven, Amazon EC2, trebuie să instalați pluginurile respective în Jenkins.
Avantajele utilizării Jenkins
- Jenkins este gestionat de comunitatea care este foarte deschisă. În fiecare lună, țin întâlniri publice și primesc contribuții din partea publicului pentru dezvoltarea proiectului Jenkins.
- Până acum sunt închise aproximativ 280 de bilete, iar proiectul publică o lansare stabilă la fiecare trei luni.
- Pe măsură ce tehnologia crește, și Jenkins crește. Până acum, Jenkins are aproximativ 320 de pluginuri publicate în baza de date de pluginuri. Cu pluginuri, Jenkins devine și mai puternic și bogat în funcții.
- Instrumentul Jenkins acceptă și arhitectura bazată pe cloud, astfel încât să puteți implementa Jenkins în platforme bazate pe cloud.
- Motivul pentru care Jenkins a devenit popular este că a fost creat de un dezvoltator pentru dezvoltatori.
Dezavantajele utilizării Jenkins
Deși Jenkins este un instrument foarte puternic, are defectele sale.
- Interfața sa este depășită și nu este ușor de utilizat în comparație cu tendințele actuale ale UI.
- Deși Jenkins este iubit de mulți dezvoltatori, nu este atât de ușor să îl întreținem, deoarece Jenkins rulează pe un server și necesită anumite abilități ca administrator de server pentru a-și monitoriza activitatea.
- Unul dintre motivele pentru care mulți oameni nu implementează Jenkins se datorează dificultății sale în instalarea și configurarea Jenkins.
- Integrările continue se întrerup în mod regulat din cauza unor mici modificări ale setărilor. Integrarea continuă va fi întreruptă și, prin urmare, necesită o anumită atenție a dezvoltatorului.
Concluzie
- În Integrarea continuă, după o comitere de cod, software-ul este construit și testat imediat
- Jenkins a folosit pentru orchestrarea unui lanț de acțiuni pentru integrarea continuă într-un proiect software
- Înainte de Jenkins, când toți dezvoltatorii și-au finalizat sarcinile de codare atribuite, obișnuiau să-și comite codul în același timp. Later, Build este testat și implementat.
- După Jenkins, codul este construit și testat de îndată ce Dezvoltatorul comite cod. Jenkin va construi și va testa codul de mai multe ori în timpul zilei
- În mod implicit, Jenkins vine cu un set limitat de caracteristici. Dacă doriți să vă integrați instalarea Jenkins cu instrumente de control al versiunilor precum Git, atunci trebuie să instalați pluginuri legate de Git. Verificați de asemenea Cele mai bune instrumente alternative Jenkins
- Cele mai mari avantaje ale lui Jenkins sunt că este gestionat de comunitatea care organizează întâlniri publice și primește contribuții din partea publicului pentru dezvoltarea proiectelor Jenkins.
- Cel mai mare dezavantaj al lui Jenkins este că interfața sa este depășită și nu este ușor de utilizat în comparație cu tendințele actuale ale UI. Dacă vă gândiți la alte opțiuni care ar putea oferi o experiență de utilizator mai modernă, este posibil să doriți să explorați unele dintre instrumente de top de integrare continuă disponibile.