Ce este CI/CD? Integrare continuă și livrare continuă

Ce este Integrarea Continuă (CI)?

Integrare continuă este o metodă de dezvoltare software în care membrii echipei își integrează munca cel puțin o dată pe zi. În această metodă, fiecare integrare este verificată de o construcție automată pentru a detecta erorile. Acest concept a fost introdus pentru prima dată în urmă cu peste două decenii pentru a evita „iferul integrării”, care se întâmplă atunci când integrarea este amânată până la sfârșitul unui proiect.

În Integrarea continuă după o comitere a codului, software-ul este construit și testat imediat. Într-un proiect mare cu mulți dezvoltatori, commit-urile sunt făcute de mai multe ori pe parcursul unei zile. Cu fiecare commit, codul este construit și testat. Dacă testul este trecut, build-ul este testat pentru implementare. Dacă implementarea este un 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ă.

Ce este livrarea continuă (CD)?

Livrarea continuă este o metodă de inginerie software în care o echipă dezvoltă produse software într-un ciclu scurt. Acesta asigură că software-ul poate fi lansat cu ușurință în orice moment. Scopul principal al livrării continue este de a construi, testa și lansa software cu viteză și frecvență bune. Vă ajută să reduceți costurile, timpul și riscul de a aduce modificări, permițând actualizări frecvente în producție.

Care este diferența dintre CI și CD?

CI vs CD: Integrarea continuă (CI) este o abordare de testare automată a fiecărei modificări a bazei de cod, în timp ce Livrarea continuă (CD) este o abordare pentru a obține modificări ale noilor caracteristici, configurații și remedieri de erori.

Dezvoltare fără CI vs. Dezvoltare cu CI

Iată diferențele cheie între dezvoltarea folosind CI sau fără CI:

Dezvoltare fără CI Dezvoltare cu CI
O mulțime de bug-uri Mai puține bug-uri
Comite rare Comite regulate
Eliberări rare și lente Lansări regulate de lucru
Integrare dificilă Integrare ușoară și eficientă
Testarea are loc târziu Testarea de integrare continuă are loc devreme și des.
Problemele ridicate sunt mai greu de rezolvat Găsiți și rezolvați problemele mai rapid și mai eficient.
Vizibilitatea slabă a proiectului O mai bună vizibilitate a proiectului

Diferența dintre compilare și integrare continuă

Activități în Integrare Continuă
Activități în Integrare Continuă

În timp ce compilarea compila doar un cod, CI face următoarele activități

Integrarea DB

  • Asigurați-vă că DB și codul sunt sincronizate
  • Crearea automată a DB și a datelor de testare.

Inspecție cod

  • Asigură o bază de cod sănătoasă
  • Identifică problemele devreme și aplică cele mai bune practici

Implementare automată

  • Vă permite să lansați produsul oricând
  • Stare demoabilă în mod continuu și funcționează pe orice mașină

Generarea documentelor

  • Asigurați-vă că documentația este actualizată
  • Îndepărtează arsurile din dezvoltator
  • Produce rapoarte și valori de construcție

Compilation

Compilarea este procesul pe care computerul îl face pentru a converti un cod de limbaj de programare de nivel înalt într-un limbaj de mașină pe care computerul îl poate înțelege. Acesta asigură un compilator de cod pe fiecare platformă țintă.

Când construiesc?

  • La fiecare check-in
  • De fiecare dată când se schimbă o dependență

Ce pași sunt în integrare continuă?

Procesul CI
proces CI
  • În mod ideal, construcția ar trebui să provină din linia de comandă și să nu depindă de un mediu de dezvoltare integrat (IDE).
  • Construirea ar trebui să aibă loc continuu folosind un server Cl dedicat, nu un job cron.
  • CI construit ar trebui să fie declanșat la fiecare check-in și nu doar la miezul nopții
  • Compilarea ar trebui să ofere feedback imediat și să nu necesite efort de dezvoltator
  • Identificați valorile cheie și urmăriți-le vizual. Mai important, acționează imediat asupra lor

De ce aveți nevoie pentru a desfășura procesul CI?

Efectuați procesul CI

Iată elementele cheie de care aveți nevoie pentru a efectua întregul proces CI:

  • Sistemul de control al versiunilor (VCS): Oferă o metodă fiabilă de a centraliza și de a păstra modificările aduse proiectului dvs. în timp.
  • Mașină virtuală: Ar trebui să aveți un server de rezervă sau cel puțin unul mașină virtuală pentru a vă construi sistemul.
  • Soluții de instrumente CI găzduite: Pentru a evita serverele sau mașinile virtuale, ar trebui să alegeți soluții de instrumente CI găzduite. Acest instrument ajută la întreținerea întregului proces și oferă o scalabilitate mai ușoară.
  • Unelte: Dacă selectați o variantă auto-găzduită, va trebui să instalați una dintre multe Instrumente CI ca Jenkins, TeamCity, Bamboo, GitLab etc.

Cum funcționează integrarea continuă?

Cu siguranță 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. Deoarece software-ul a fost construit doar o dată pe zi, este o mare durere să izolați, să identificați și să remediați erorile într-o bază de cod mare.

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.

Exemplu de integrare continuă
Exemplu de integrare continuă

Caracteristicile CI

Iată caracteristicile și beneficiile importante ale integrării continue:

  • Vă permite să mențineți doar un singur depozit sursă
  • Puteți testa clona mediului de producție CI
  • Mediul construit ar trebui să fie aproape de mediul de producție.
  • Unul dintre avantajele integrării continue este disponibilitatea constantă a unei build curente
  • Procesul complet de construire, testare și implementare ar trebui să fie vizibil pentru toți deținătorii de stive.

De ce să folosiți CI?

Iată motivele importante pentru utilizarea integrării continue:

  • Vă ajută să construiți software de mai bună calitate
  • Procesul CI ajută la creșterea numărului de angajați și a rezultatelor de livrare ale echipelor de inginerie.
  • CI permite dezvoltatorilor de software să lucreze independent la funcții în paralel.
  • Vă ajută să efectuați teste repetabile
  • Creșteți vizibilitatea, permițând o comunicare mai bună
  • Ajută la dezvoltarea unui produs care poate fi livrat pentru o construcție complet automatizată
  • Vă ajută să reduceți riscurile, făcând implementarea mai rapidă și mai previzibilă
  • feedback imediat când apare problema
  • Evitați confuzia de ultim moment la data și momentul lansării

Cele mai bune practici de utilizare a CI Systems

Iată câteva bune practici importante în timpul implementării

  • Se angajează devreme și se angajează Adesea nu se comite codul spart
  • Remediați erorile de construcție imediat
  • Acționați în funcție de valori
  • Încorporați în fiecare mediu țintă Creați artefacte din fiecare construcție
  • Construirea software-ului trebuie să fie realizată într-o manieră care să poată fi automatizată
  • Nu depindeți de un IDE
  • Construiți și testați totul când se schimbă
  • Schema bazei de date contează ca totul
  • Vă ajută să aflați valorile cheie și să le urmăriți vizual
  • Check-in des și devreme
  • Control mai puternic al codului sursă
  • Integrarea continuă rulează teste unitare ori de câte ori comiteți cod
  • Automatizați construirea și testați toată lumea
  • Păstrați rapid construcția cu implementarea automată

Dezavantajele CI

Iată dezavantajele/dezavantajele procesului de integrare continuă:

  • Timpul de configurare inițială și instruire sunt necesare pentru a vă familiariza cu serverul Cl
  • Dezvoltarea unor proceduri de testare adecvate este esențială
  • Suita de testare bine dezvoltată a necesitat multe resurse pentru serverul Cl
  • Conversia proceselor familiare
  • Necesită servere și medii suplimentare
  • Timpii de așteptare pot apărea atunci când mai mulți dezvoltatori doresc să-și integreze codul aproximativ în același timp

Instrumente pentru procesul CI

Iată câteva instrumente esențiale CI/CD:

Jenkins

Jenkins

Jenkins este un software de integrare continuă open-source. Este scris folosind Java limbaj de programare. Facilitează testarea și raportarea în timp real asupra modificărilor izolate într-o bază de cod mai masivă. Acest software ajută dezvoltatorii să găsească și să rezolve rapid defectele din baza lor de cod și să automatizeze testarea versiunilor lor.

Bamboo

Bamboo

Bamboo este un server de compilare de integrare continuă care funcționează – construirea, testarea și lansarea automată într-un singur loc. Funcționează perfect cu software-ul JIRA și Bitbucket. Bamboo acceptă multe limbi și tehnologii, cum ar fi CodeDeply, Docker, Git, SVN, Mercurial, AWS și Amazon Găleți S3.

TeamCity

TeamCity

TeamCity este un server de integrare continuă care acceptă multe funcții puternice. Menține un server CI sănătos și stabil chiar și atunci când nu rulează nicio versiune. Oferă o calitate mai bună a codului pentru orice proiect

Rezumat

  • Definiția integrării continue: integrarea continuă este o metodă de dezvoltare software în care membrii echipei își pot integra munca cel puțin o dată pe zi
  • CI/CD înseamnă combinație de integrare continuă și livrare continuă sau implementare continuă.
  • Dezvoltarea fără CI creează o mulțime de erori, în timp ce Dezvoltarea cu CI oferă mai puține erori
  • Activitățile importante ale integrării continue sunt 1) integrarea DB, 2) inspecția codului, 3) implementarea automată, generarea documentelor și compilarea.
  • Construirea ar trebui să aibă loc continuu folosind un server Cl dedicat, nu un job cron.
  • Elementele importante ale CI sunt 1) Sistemul de control al versiunilor 2) Mașina virtuală 3) Soluțiile gazdă CI Tool 4) Instrumente
  • Sistemul de integrare continuă vă permite să mențineți doar un singur depozit sursă
  • Procesul CI/CD vă ajută să construiți software de mai bună calitate
  • Cele mai importante bune practici ale Azure Procesul de integrare continuă este să se angajeze devreme și să se angajeze Adesea să nu se angajeze niciodată codul spart
  • Dezavantajul major al Conducta CI/CD Procesul este că suita de testare bine dezvoltată necesita multe resurse pentru serverul Cl
  • Jenkins, Bambook și Team City sunt niște AWS Continuous utile Instrumente de integrare.

Rezumați această postare cu: