Ce Este JenkinsDe ce să folosiți un instrument de integrare continuă (CI)?
⚡ Rezumat inteligent
Jenkins este serverul de automatizare open-source care construiește și testează codul de fiecare dată când un dezvoltator își face un commit, transformând Integrarea Continuă dintr-o sarcină nocturnă într-un proces care rulează continuu pe tot parcursul zilei lucrătoare.
Ce Este Jenkins?
Jenkins este un server de integrare continuă open-source scris în Java pentru orchestrarea unui lanț de acțiuni pentru a realiza procesul de Integrare Continuă într-un mod automatizat. Jenkins susține întregul ciclu de viață al dezvoltării software-ului, 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, cu sute de mii de instalări și care crește zi de zi. Prin utilizarea Jenkins, companiile de software își pot accelera procesul de dezvoltare software, 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 Jenkins Ceea ce a devenit atât de popular software-ul este monitorizarea sarcinilor repetate care apar în timpul dezvoltării unui proiect. De exemplu, dacă echipa ta dezvoltăping un proiect, Jenkins va testa continuu versiunile proiectului dumneavoastră și vă va arăta erorile din etapele incipiente ale dezvoltării.
Notă: desfășurarea WAR în Apache Tomcat încă funcționează, dar versiunile actuale includ un container servlet încorporat, deci Jenkins în mod normal funcționează singur. Linia 2.555.x LTS necesită Java 21.
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 Jenkins funcționează?
Jenkins este o aplicație bazată pe server și necesită un server web precum Apache Tomcat pentru a rula pe diverse platforme precum Windows, Linux, macOS, Unix etc. Pentru utilizare Jenkins, trebuie să creați conducte, care sunt o serie de pași pe care un Jenkins serverul va prelua. Jenkins Continuous Integration Pipeline este un instrument puternic care constă dintr-un set de instrumente concepute pentru a găzdui, monitoriza, compila și testa codul sau modificările 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 construire (Make, ANT, Maven, Ivy, Gradle, si altii)
- Cadrul de testare automată (Selenium, Appium, TestComplete, UFT, si altii)
În versiunile actuale, acești pași se află într-un Jenkinsfișier comis lângă cod. Jenkins Controlerul citește acel fișier și înmânează fiecare etapă unui agent, care este mașina care execută efectiv lucrarea.
Jenkins Istorie
- 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 avea o dispută cu comunitatea open source Hudson, așa că au bifurcat Hudson și au redenumit-o ca Jenkins.
- Atât Hudson, cât și Jenkins a continuat să funcționeze independent. Dar, în scurt timp, Jenkins a dobândit 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 întreținut.
De ce să folosiți integrarea continuă cu Jenkins?
Unii oameni ar putea crede că metoda tradițională de dezvoltareping Software-ul este calea mai bună. Să înțelegem avantajele integrării continue 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 au nevoie de 30 de zile pentru a o finaliza.
| Inainte Jenkins | Dupa 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. Code commit-ul a fost construit, iar ciclul de testare a fost foarte rar, iar o singură compilare a fost efectuată după multe zile. |
Codul este construit și testat imediat ce Dezvoltatorul efectuează commit-ul codului. Jenkins va construi și testa codul de mai multe ori pe parcursul zilei Dacă construcția are succes, atunci Jenkins va implementa sursa pe serverul de testare și va notifica echipa de implementare. Dacă construcția 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. | Întrucât codul este construit după fiecare commit al unui singur dezvoltator, este ușor de detectat al cui cod a cauzat eșecul construcției. |
| Code construiți ș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ă, prezentată mai jos. Software-ul a fost construit și testat imediat ce un dezvoltator a validat codul. Dacă este detectată vreo eroare, dezvoltatorul respectiv poate remedia rapid defectul.
Jenkins Plugin-uri
În mod implicit, Jenkins vine cu un set limitat de funcții. Dacă doriți să integrați Jenkins instalare 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, așa cum arată managerul de pluginuri de mai jos.
Avantajele utilizării Jenkins
- Jenkins este gestionat de comunitate, care este foarte deschisă. În fiecare lună, aceștia organizează întâlniri publice și primesc contribuții de la public pentru dezvoltarea Jenkins proiect.
- Proiectul menține un ritm de lansare previzibil: o nouă linie de bază pentru suport pe termen lung este aleasă la fiecare douăsprezece săptămâni și apoi primește lansări programate de patch-uri.
- Pe măsură ce tehnologia crește, la fel crește și JenkinsBaza de date a pluginurilor conține acum peste două mii de pluginuri. Cu pluginuri, Jenkins devine și mai puternic și mai bogat în funcții.
- Jenkins Instrumentul acceptă și arhitectură bazată pe cloud, astfel încât să puteți implementa Jenkins în platforme bazate pe cloud.
- Motivul pentru care Jenkins a devenit popular este faptul 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 demodată și nu este ușor de utilizat în comparație cu tendințele actuale ale interfeței utilizator, deși versiunile recente au modernizat o mare parte din designul ecranului.
- Deși Jenkins este îndrăgit de mulți dezvoltatori, nu este atât de ușor de întreținut deoarece Jenkins rulează pe un server și necesită anumite abilități de administrator de server pentru a-i monitoriza activitatea.
- Unul dintre motivele pentru care mulți oameni nu implementează Jenkins se datorează dificultății de instalare și configurare 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.
- Conflictele de dependență între pluginuri apar atunci când mai multe pluginuri sunt actualizate în momente diferite, așa că actualizările pluginurilor necesită propria fereastră de întreținere.
Dacă aceste compromisuri contează pentru echipa ta, compară Cel mai bune Jenkins Instrumente alternative și lista mai largă a instrumente de top de integrare continuă înainte de a vă conecta la un server auto-găzduit.


