Continuous Integration: Build a Complete Flow

Cursul acopera concepte importante de DevOps si ofera solutii cu privire la implementarea unui flux de integrare continua in cadrul echipei.

Nivel

Advanced

Nr. cursuri

6

Studiu individual

8-10 ore/săpt.

Suport de curs scris

Materiale video

Limba de predare

Română

Limba materialului scris

Română

Metode de evaluare
  • examene de capitol
  • examen final teoretic
  • proiect
Tarife
1200 lei - student
1400 lei - pers. fizică
1600 lei - pers. juridică

Despre curs

  • De ce Continuous Integration?

Integrarea continua este un concept frecvent intalnit in discutiile dezvoltatorilor software despre metodele moderne de lucru. Acest concept, cunoscut si prescurtat sub forma de CI (“Continuous Integration”), are la baza ideea ca fiecare membru din cadrul unei echipe care se ocupa de un anumit proiect, aplicatie, sa integreze codul sursa modificat intr-un depozit impartasit de toata echipa. CI vizeaza reducerea ineficientelor ciclului de construire, permitand dezvoltatorilor sa compileze codul echipei dintr-un depozit de control al versiunilor partajate. In acelasi timp, CI permite automatizarea procesului de testare a codului sursa in asa fel incat membrii unei echipe sa isi poate configura fluxul de lucru pentru a integra teste automate si unitare.

Totodata, este important  de mentionat ca in zilele noastre, conceptul de integrare continua este de obicei utilizat alaturi de un flux de lucru software precum Agile. Imbinand aceste doua aspecte, sarcinile in cadrul unei echipe sunt distribuite intr-un mod optimizat in cadrul echipei de dezvoltare a proiectului, pentru a fi realizate si livrate la timp. Sarcinile vor putea fi dezvoltate in acelasi timp, independent de catre unul sau mai multi dezvoltatori.

 

  • Ce problema rezolva Continuous Integration?

Nefolosirea conceptul de CI in cadrul unei echipe de dezvoltare a unui proiect este o alegere scumpa. Fara integrarea continua, vor exista perioade mai lungi intre integrarile dezvoltatorilor. Aceasta perioada mai lunga duce la un mod mult mai dificil de a identifica si fixa probleme, ceea ce poate duce la pierderi in cadrul afacerii. Daca ne imaginam ca in dezvoltarea unui proiect lucreaza o echipa mixta alcatuita din membrii care dezvolta si membrii care testeaza, fara CI, dezvoltatorii ar fi nevoiti sa ruleze un “build” de fiecare data cand vor sa trimita modificari spre testare, ceea ce ar presupune o pierdere inutila de timp. Asadar, printre problemele pe care le rezolva conceptul de Continuous Integration se numara:

  • cresterea vizibilitatii intre membrii unei echipe, datorita comunicarii sporite
  • identificarea din timp a problemelor in codul sursa
  • reducerea timpului de asteptare pentru a afla daca modificarile functioneaza
  • codul este testat automat, datorita testelor unitare si automate

 

  • Cum a aparut Continuous Integration?

De-a lungul anilor 90, orice automatizare a procesului de “build” in cadrul unei echipe era facuta utilizand scrierea de script-uri. Existau tot mai mutle scipt-uri scrise care verificau codul si il construiau peste noapte, astfel incat sa fie pregatit pentru testare in demineata urmatoare.  Aici este momentul in care a aparut conceptul de “Continuous Integration”.  Grady Booch a propus primul termenul de CI in 1991, in momentul in care a facut publica metoda Booch. Metoda Booch este o metoda cunoscuta in domeniul programarii orientate obiect descrisa prin intermediul diagramelor UML care cuprinde un proces de dezvoltare iterativ si un set de recomandari. Ceea ce cuprindea aceasta metoda a stat de fapt la baza conceptul de integrarea continua. Incepand cu anii 2000, au inceput sa apara sisteme in aceasta zona care isi propuneau sa consruiasca si sa testeze fiecare modificare si sa notifice persoanele in momentul in care in un “build” a esuat.

Printre aceste sisteme se numara Jenkins, TeamCity, Atlassian’s Bamboo si Microsoft’s Team Foundation Server.

 

  • Publicul tinta al cursului?

Cursul se adreseaza persoanelor din domeniul IT care isi doresc acumularea de informatii in ceea ce priveste automatizarea modalitatilor de lucru in cadrul unei echipe care lucreaza la dezvoltarea unui produs software. Cursul isi propune prezentarea instrumentelor necesare pentru implementarea unui flux de livrarea continua complex. Printre aceste sisteme se numara: Git & Bitbucket,  Maven, Jenkins, Docker, Kubernetes. La aceste sisteme se adauga modalitati de testarea unitara si automata. Personal, consider ca acest curs se adreseaza tuturor persoanelor care fac parte din echipa de dezvoltare a unui proiect software, indiferent de rolul acestora in echipa. Cursul prezinta aspecte si concepte care imbunatatesc bagajul de cunostinte tehnice.

 

  • Cunostinte preliminare?

– Cunostinte de baza sisteme pentru controlul versiunii – Git & Bitbucket

– Cunostinte de baza sisteme pentru compilare si build  – Maven

– Cunostinte de baza pentru automatizarea procesului de build – Jenkins

– Cunostinte de baza sisteme de operare Linux

– Cunostinte de baza Docker & Kubernetes

– Cunostinte despre aspectul de manipularea artefactelor

– Conostinte de baza teste unitare si automate

Ce vei învăța

– Integrarea sistemelor pentru alcatuirea unui flux de lucru automat: Maven, Git & Bitbucket, Jenkins, SonarQube

– Analiza pe baza unor statistici oferite de metrici precum aria de acoperire a codului sursa: Coberuta

– Integrarea testelor unitare si automat in fluxul de lucru: jUnit, Cucumber

– Notificarea membrilor din cadrul echipei pe baza rezultatelor din procesul de “build”

– Integrarea unor sisteme in procesul de integrare continua pentru a dispune de scalabilitate, atat pe verticala, cat si pe orizontala: Docker si Kubernetes.

– Manipularea componentelor binare prin conceptul de “repository manager”

– Monitorizarea si analiza intregii solutii prin diferite metrici: Grafana/Prometeus/ELK Stack.

Programa

  1. instalare Jenkins
  2. instalare git
  3. instalare Maven
  4. creeare job (Pipeline) Jenkins cu git si Maven
  5. configurare notificari (slack/mail)
  1. unit teste + integrare in Jenkins al flow-ului din Bitbucket:
  2. pull request cu noile modificari
  3. rulare unit teste pe pull request

iii. submit in master si declansare build

  1. code coverage (Cobertura) + integrare in Jenkins
  2. teste functionale (Cucumber) + integrare in Jenkins
  1. SonarQube
  2. Integrare SonarQube cu Jenkins
  1. Integrare Docker cu Jenkins
  2. Crearea Dockerfile
  3. Deploy aplicatie in container Docker
  1. Integrare K8s cu Jenkins
  2. Deploy aplicatie in deployment K8s
  1. Sonatype Nexus
  2. Integrare Sonatype Nexus cu Jenkins

Sponsori și parteneri