Înțelegerea integrării continue și a implementării continue

Auziți CI / CD, dar nu sunteți sigur despre ce este vorba?


În mod ideal, inginerii de software sunt angajați pentru a scrie cod care trebuie expediat într-un mediu de producție, astfel încât întreprinderea care are nevoie de produs să poată folosi de el. Pentru a satisface afacerea (adesea numiți utilizatori / clienți), este esențial ca produsele să nu prezinte erori.

Abordarea tipică urmată de inginerii de software este de a lucra în sucursale și de a crea o solicitare de tragere care actualizează filiala principală cu noua actualizare făcută. Am adoptat practica de a scrie testele ca mijloc de a ne asigura că noile modificări nu introduc bug-uri. Atunci când dezvoltatorii lucrează la o caracteristică în majoritatea cazurilor, de multe ori nu creează o solicitare de tragere până când nu sunt completate cu funcția. Ceea ce se întâmplă când sunt gata este acela;

  • Aceștia petrec mult timp încercând să-și actualizeze baza de date cu modificările care au apărut în sucursala de producție în timp ce lucrau.
  • În acest sens, ei trebuie să remedieze o serie de conflicte de îmbinare.
  • Există, de asemenea, posibilitatea de a rupe ramura de producție, ceea ce continuă să îi afecteze pe cei care trag din sucursală înainte ca problema să fie văzută și rezolvată.

Dacă ați fost vreodată în această situație, veți fi de acord că poate fi o durere – nimănui nu-i place să-și petreacă ziua de lucru astfel.

Care este soluția?

Integrare continuă

https://www.youtube.com/watch?v=HnWuIjUw_Q8

Pentru a preveni scenariile pe care le-am spus mai sus; echipele de inginerie pot adopta practica numită integrare continuă – după cum sugerează și numele, implică integrarea continuă a modificărilor de cod efectuate de dezvoltatori în sucursala / depozitul comun. Codul care trebuie integrat trebuie să fie supus unui test verificat pentru a se asigura că nu rupe aplicația. Abia când trece testul este integrat

Pentru a înțelege acest lucru, să ne imaginăm un scenariu din viața reală în care există o echipă de 10 dezvoltatori. Acești dezvoltatori creează local o ramură în care scriu cod pentru implementarea anumitor funcții. În loc să trimită solicitări de tragere atunci când sunt completate cu funcția, optează pentru a trimite solicitări de tragere, deoarece fac mici modificări. Un exemplu de astfel de modificări va fi crearea unei noi modalități, presupunând că dezvoltatorul lucrează la o caracteristică care permite utilizatorilor să gestioneze sarcini individuale din aplicație. În loc să aștepte până la finalizarea funcției de sarcină, pentru a respecta un model de integrare continuă, dezvoltatorul împinge această mică schimbare (în comparație cu ce lucrează) și creează o solicitare de tragere pentru a fuziona codul.

Înainte de integrarea acestei noi modificări, trebuie să fie difuzate o serie de teste.

Echipele de inginerie software folosesc instrumente precum Travis CI pentru a crea aceste procese de integrare și teste. Cu instrumente ca acestea, testele sunt automatizate, astfel încât acestea se execută de îndată ce o solicitare de tragere este trimisă la sucursala țintă selectată în timpul configurarii.

Rezultatele testelor sunt generate, iar dezvoltatorul care a creat solicitările de tragere poate vedea rezultatele și pot face modificările necesare. Avantajele respectării acestui model de cod de integrare cât mai puțin posibil și de a avea un test verificat de executat sunt;

  • Devine posibil ca echipa implicată să știe ce a determinat procesul de construire sau testul să eșueze. Acest lucru reduce posibilitatea expedierii unui bug la producție.
  • Dacă echipa automatizează procesul, vor avea luxul de a se concentra pe a fi productiv.

Important de menționat în această practică este faptul că încurajează echipa să împingă codul către sucursala principală în mod frecvent. Făcând acest lucru va fi ineficient dacă alți membri ai echipei nu trag din sucursala principală pentru a-și actualiza depozitul local.

Tipuri de teste

În testele de scriere care vor face parte din procesul de integrare, iată câteva care pot fi implementate în acest proces:

  • Integrare – combină unități individuale ale software-ului și le testează ca grup.
  • Unitate – testează unități individuale sau componente ale software-ului ca metode sau funcții.
  • UI – afirmă că software-ul funcționează bine din perspectiva utilizatorului.
  • Acceptare – teste conform cărora software-ul respectă cerințele de afaceri.

Este important să rețineți că nu este necesar să testați toate acestea, deoarece o mână de ele pot fi deja acoperite în codul scris de dezvoltator..

Instrumente de integrare continuă

Fără a intra în profunzime, aici sunt instrumente de care puteți începe să folosiți în proiectele dvs. curente sau noi;

  • Travis CI – cunoscut în lumea open-source și vă promite că aveți codul dvs. testat fără probleme în câteva minute.
  • Cerc CI – vă oferă putere, flexibilitate și control pentru a automatiza conducta de la control la desfășurare.
  • Jenkins – oferă sute de plugin-uri pentru a sprijini construirea, implementarea și automatizarea oricărui proiect.

Dacă ești nou la Jenkins, aș sugera să iei acest lucru Curs Udemy pentru a învăța CI cu Java și .NET.

Desfășurare continuă

Ce bine va fi dacă funcția pe care o construiți se află în depozit săptămâni sau luni înainte de a fi implementată în mediul de producție. Atât timp cât echipele de inginerie pot lucra pentru integrarea unor mici modificări în ramura principală așa cum se întâmplă, ele pot împinge aceste schimbări în mediul de producție cât mai curând posibil.

Obiectivul atunci când se practică implementarea continuă este de a aduce modificărilor către utilizatori imediat ce dezvoltatorii integrează aceste modificări în ramura principală.

Ca și în cazul integrării continue, atunci când se folosește desfășurarea continuă, testele și verificările automatizate sunt configurate pentru a asigura verificarea modificărilor nou integrate. Desfășurarea se întâmplă numai când trec aceste teste.

Pentru ca o echipă să beneficieze de practica desfășurării continue, trebuie să aibă următoarele:

  • Testarea automată este coloana vertebrală esențială a tuturor practicilor de inginerie continue. În cazul desfășurării continue, codul care urmează să fie implementat trebuie să corespundă standardului pe care echipa l-a pus la punct pentru ceea ce intenționează să transmită utilizatorilor finali. În mod ideal, dacă o nouă modificare este sub prag, testul ar trebui să eșueze și să nu se integreze. Altfel, devine integrat.
  • În ciuda faptului că au teste automate înapoi, este posibil ca unele erori să alunece în mediul de producție. Pentru aceasta, este necesar ca echipa să poată anula o modificare făcută – anulați o desfășurare. Acest lucru ar trebui să revină codul de producție la ceea ce a fost înainte de a face noua modificare.
  • Sistemele de monitorizare sunt necesare pentru a urmări schimbările care au fost împinse în mediul de producție. Așa se poate ca echipa să poată urmări erorile pe care le întâlnesc utilizatorii atunci când folosesc modificările implementate.

Instrumentele menționate pentru integrare continuă vă oferă, de asemenea, funcționalitatea de a configura un sistem de implementare continuă. De asemenea, puteți citi mai multe despre ele.

Concluzie

Productivitatea unei echipe de dezvoltare este vitală pentru succesul afacerii. Pentru a se asigura că sunt productive, trebuie adoptate practici care încurajează acest lucru. Integrarea continuă și desfășurarea sunt exemple de astfel de practici.

Cu o integrare continuă, echipele pot împinge zilnic cât mai multe coduri. Cu acest lucru, devine ușor să implementați cât mai curând posibil modificările nou adăugate utilizatorului. Utilizarea acestor modificări face posibilă obținerea de feedback de la utilizatori. În final, afacerea va putea să inoveze pe baza feedback-ului primit, ceea ce reprezintă un câștig câștig pentru toată lumea.

Dacă sunteți dezvoltator și sunteți interesat să învățați CI / CD, consultați acest lucru curs strălucitor.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map