Conducta CI/CD: Învățați cu exemplu
Ce este o conductă CI/CD?
O conductă CI/CD automatizează procesul de livrare a software-ului. Acesta creează cod, rulează teste și vă ajută să implementați în siguranță o nouă versiune a software-ului. Conducta CI/CD reduce erorile manuale, oferă feedback dezvoltatorilor și permite iterații rapide ale produsului.
Conducta CI/CD introduce automatizarea și monitorizarea continuă pe tot parcursul ciclului de viață al unui produs software. Aceasta implică de la faza de integrare și testare până la livrare și implementare. Aceste practici conectate sunt denumite conducte CI/CD.
Ce este integrarea continuă, livrarea continuă și implementarea continuă?
- Integrare continuă este o metodă de dezvoltare software în care membrii echipei își pot integra munca cel puțin o dată pe zi. În această metodă, fiecare integrare este verificată de o construcție automată pentru a căuta eroarea.
- Livrare 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.
- Desfăşurare continuă este un proces de inginerie software în care funcționalitățile produsului sunt livrate folosind implementarea automată. Ajută testerii să valideze dacă modificările bazei de cod sunt corecte și dacă sunt stabile sau nu.
Etapele unei conducte CI/CD
O conductă CI/CD este o specificație rulabilă a pașilor pe care orice dezvoltator ar trebui să îi efectueze pentru a furniza o nouă versiune a oricărui software. Eșecul în fiecare etapă declanșează o notificare prin e-mail, Slack, sau alte platforme de comunicare. Le permite dezvoltatorilor responsabili să cunoască problemele importante.
Iată etapele importante ale conductei CI/CD:
Etapa sursă
În etapa sursă, conducta CI/CD este declanșată de un depozit de cod. Orice modificare a programului declanșează o notificare către instrumentul CI/CD care rulează o conductă echivalentă. Alți factori declanșatori obișnuiți includ fluxurile de lucru inițiate de utilizator, programele automate și rezultatele altor conducte.
Etapa de construcție
Aceasta este a doua etapă a conductei CI/CD în care îmbinați codul sursă și dependențele acestuia. Se face în principal pentru a construi o instanță de software rulabilă pe care o puteți livra utilizatorului final.
Programe care sunt scrise în limbi precum C++, JavaLimbajul , C sau Go ar trebui compilat. Pe de altă parte, JavaScenariu, Python, iar programele Ruby pot funcționa fără etapa de construire.
Eșecul de a trece etapa de construire înseamnă că există o configurație greșită fundamentală a proiectului, așa că este mai bine să abordați imediat această problemă.
Etapa de testare
Etapa de testare include executarea de teste automate pentru a valida corectitudinea codului și comportamentul software-ului. Această etapă împiedică bug-urile ușor de reprodus să ajungă la clienți. Este responsabilitatea dezvoltatorilor să scrie teste automate.
Deploy Stage
Aceasta este ultima etapă în care produsul dvs. este disponibil. Odată ce construcția a trecut cu succes prin toate scenariile de testare necesare, este gata să fie implementată pe serverul live.
Exemplu de conductă CI/CD
Iată un exemplu de conductă CI/CD:
- Controlul codului sursă: Cod de găzduire pe GitHub ca depozit privat. Acest lucru vă va ajuta să vă integrați aplicația cu serviciile și software-ul major.
- Integrare continuă: Utilizați platforma de integrare și livrare continuă CircleCI și comite fiecare cod. Când modificările notifică, acest instrument va extrage codul disponibil în GitHub și va procesa pentru a construi și rula testul.
- Implementați codul în UAT: Configurare CircleCI pentru a vă implementa codul pe serverul AWS UAT.
- Implementare în producție: Trebuie să reutilizați pașii continui de integrare pentru implementarea codului în UAT.
Cele mai bune practici CI/CD
Iată cele mai bune practici ale conductei CI/CD:
- Scrieți procesul de dezvoltare curent, prin urmare, puteți cunoaște procedurile care necesită schimbare și una care poate fi ușor automatizată.
- Începeți cu o mică dovadă a proiectului înainte de a continua și finalizați întregul proces de dezvoltare deodată.
- Configurați o conductă cu mai mult de o etapă în care testele fundamentale rapide rulează mai întâi.
- Începeți fiecare flux de lucru din același mediu, curat și izolat.
- Rulați instrumente open source care acoperă totul, de la stilul codului până la scanarea de securitate.
- Configurați un hub de cod mai bun pentru a verifica continuu calitatea codului dvs., rulând setul standard de teste pentru fiecare ramură.
- Codul peer revizuiește fiecare cerere de extragere pentru a rezolva o problemă într-o manieră colaborativă.
- Trebuie să definiți valorile de succes înainte de a începe tranziția la automatizarea CD-urilor. Acest lucru vă va ajuta să vă analizați în mod constant software-ul, dezvoltarea progresului contribuind la rafinare acolo unde este necesar.
Avantajele conductelor CI/CD
Iată avantajele/beneficiile CI/CD Pipeline:
- Compilările și testarea pot fi efectuate cu ușurință manual.
- Poate îmbunătăți consistența și calitatea codului.
- Îmbunătățește flexibilitatea și are capacitatea de a livra noi funcționalități.
- Conducta CI/CD poate eficientiza comunicarea.
- Poate automatiza procesul de livrare a software-ului.
- Vă ajută să obțineți un feedback mai rapid al clienților.
- Conducta CI/CD vă ajută să vă creșteți vizibilitatea produsului.
- Vă permite să eliminați erorile manuale.
- Reduce costurile și forța de muncă.
- Conductele CI/CD pot accelera ciclul de viață al dezvoltării software.
- Are implementare automată a conductelor.
- O conductă de CD oferă o buclă de feedback rapidă, începând de la dezvoltator la client.
- Îmbunătățește comunicarea între angajații organizației.
- Le permite dezvoltatorilor să știe ce modificări din build se pot întoarce către brokeraj și să le evite în viitor.
- Testele automate, împreună cu câteva teste manuale, ajută la rezolvarea oricăror probleme care pot apărea.
Instrumente importante CI/CD
Iată instrumentele importante CI/CD:
1) Jenkins
Jenkins este un server de integrare continuă open-source care ajută la realizarea procesului de integrare continuă (și nu numai) într-un mod automat. Jenkins este gratuit și este scris în întregime Java. 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.
Caracteristici:
- Jenkin va construi și va testa codul de mai multe ori în timpul zilei.
- Proces automat de construire și testare, economisind timp și reducând defectele.
- Codul este implementat după fiecare construcție și testare reușită.
- Ciclul de dezvoltare este rapid.
Legătură: https://www.jenkins.io/download/
2) 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.
Caracteristici:
- Rulați teste în loturi paralele
- Configurare Bamboo este destul de simplu
- Caracteristica de permisiuni per mediu permite dezvoltatorilor și QA să se implementeze în mediile lor
- Ramificarea și fluxurile de lucru Git încorporate. Unește automat ramurile.
Legătură: https://www.atlassian.com/software/bamboo
3) CircleCi
CircleCi este un instrument CI flexibil care rulează în orice mediu, cum ar fi o aplicație mobilă multiplatformă, Python Server API sau cluster Docker. Acest instrument reduce erorile și îmbunătățește calitatea aplicației.
Caracteristici:
- Permite selectarea Build Environment
- Acceptă multe limbi, inclusiv C++, JavaScript, NET, PHP, Pythonși Ruby
- Suportul pentru Docker vă permite să configurați un mediu personalizat.
- Anulați automat toate versiunile aflate în coadă sau în curs de desfășurare atunci când este declanșată o versiune mai nouă.
Legătură: https://circleci.com/
De ce contează conducta CI/CD pentru liderii IT?
- Conducta CI/CD poate îmbunătăți fiabilitatea.
- Face echipa IT mai atractivă pentru dezvoltatori.
- Conducta CI/CD îi ajută pe liderii IT să extragă cod din controlul versiunilor și să execute construirea software-ului.
- Ajută la mutarea codului în mediul de calcul țintă.
- Permite liderilor de proiect să gestioneze cu ușurință variabilele de mediu și să configureze pentru mediul țintă.
- Managerii de proiect pot publica componente de aplicație push către servicii precum servicii web, servicii de baze de date, servicii API etc.
- Furnizarea de date de jurnal și alerte privind starea de livrare.
- Permite programatorilor să verifice modificările codului înainte de a merge mai departe, reducând șansele ca defectele să ajungă în producție.
KPI Ci/CD Pipeline
- Ciclu sau Timp de implementare: Timpul de ciclu este timpul necesar pentru a trece de la etapa de construcție la producție. Puteți obține durata medie a ciclului de viață prin măsurarea fazelor procesului de dezvoltare. Această măsurătoare va oferi o perspectivă asupra blocajelor din procesul dvs. și asupra vitezei generale a timpului de dezvoltare.
- Frecvența de dezvoltare: Frecvența dezvoltării vă permite să analizați blocajele pe care le găsiți în timpul automatizării. Lansările mai frecvente mai mici reduc riscul de defecte și le repară atunci când sunt găsite. O astfel de măsurătoare este o măsură generală a eficienței echipei tale.
- Modificați timpul de livrare: Măsoară timpul de început al fazei de dezvoltare până la implementare. Această măsurătoare este un indicator al întregului proces de dezvoltare și cât de bine lucrează echipa împreună.
- Modificarea ratei de eșec: Se concentrează pe numărul de reușite ale dezvoltării față de numărul de ori eșec.
- MTTR vs. MTTF: MTTR (Mean Time to Recovery) este perioada de timp necesară echipei dumneavoastră pentru a se recupera după eșec. MTTF (Mean Time to Failure) măsoară timpul dintre remedieri și întreruperi. Aceste valori sunt o reflectare a capacității echipei de a răspunde și de a remedia problemele.
Rezumat
- O conductă CI/CD automatizează procesul de livrare a software-ului.
- Conducta CI/CD introduce automatizarea și monitorizarea continuă pe tot parcursul ciclului de viață al unui produs software.
- Integrarea continuă este o metodă de dezvoltare software în care membrii echipei își pot integra munca cel puțin o dată pe zi.
- Livrarea continuă este o metodă de inginerie software în care o echipă dezvoltă produse software într-un ciclu scurt.
- Implementarea continuă este un proces de inginerie software în care funcționalitățile produsului sunt furnizate folosind implementarea automată.
- Există patru etape ale unei conducte CI/CD 1) Etapa sursă, 2) Etapa de construire, 3) Etapa de testare, 4) Etapa de implementare.
- Important Instrumente CI/CD sunt Jenkins, Bambo și Circle CI.
- Conducta CI/CD poate îmbunătăți fiabilitatea.
- Conducta CI/CD face echipa IT mai atractivă pentru dezvoltatori.
- Timpul de ciclu este timpul necesar pentru a trece de la etapa de construcție la producție.
- Frecvența dezvoltării vă permite să analizați blocajele pe care le găsiți în timpul automatizării.
- Change Lead Time măsoară timpul de început al fazei de dezvoltare până la implementare.
- Rata de eșec al schimbării se concentrează pe numărul de reușite ale dezvoltării față de numărul de eșecuri.
- MTTR (Mean Time to Recovery) este perioada de timp necesară echipei dumneavoastră pentru a se recupera după eșec.
- MTTF (Mean Time to Failure) măsoară timpul dintre remedieri și întreruperi.