Differences

This shows you the differences between two versions of the page.

Link to this comparison view

devops:cursuri:01 [2021/07/19 12:06]
laura.stoilescu
devops:cursuri:01 [2021/07/28 16:28] (current)
bogdan.croitoru
Line 1: Line 1:
-==== Cursul 01 Git/​BitBucket,​ Nexus ====+==== Cursul 01Git/​BitBucket,​ Nexus ====
  
 === 1. Context DevOps === === 1. Context DevOps ===
Line 8: Line 8:
    
 Metoda principala este un set de practici care sa automatizeze pasii operationali si sa asigurare configuratii standardizate:​ Metoda principala este un set de practici care sa automatizeze pasii operationali si sa asigurare configuratii standardizate:​
-* Dev: standardizeaza si automatizeaza pasii de la development la testare, securizare si executie peste mai multe medii +  ​* Dev: standardizeaza si automatizeaza pasii de la development la testare, securizare si executie peste mai multe medii 
-* Ops: automatizeaza configurarea si deploymentul infrastructurii,​ monitorizand peste mai multe domenii si permitand rezolvarea rapida a eventualelor probleme+  * Ops: automatizeaza configurarea si deploymentul infrastructurii,​ monitorizand peste mai multe domenii si permitand rezolvarea rapida a eventualelor probleme
  
-=Practici DevOps=  +== Practici DevOps==  
-* Controlul versiunilor si strategii de branching +  * Controlul versiunilor si strategii de branching 
-* Pipeline-uri de CI/CD +  * Pipeline-uri de CI/CD 
-* Containere care standardizeaza si izoleaza mediile de executie +  * Containere care standardizeaza si izoleaza mediile de executie 
-* Scriptarea infrastructurii IaC +  * Scriptarea infrastructurii IaC 
-* Monitorizarea pipeline-urilor si integritatii aplicatiilor+  * Monitorizarea pipeline-urilor si integritatii aplicatiilor
  
-=CI/CD Pipeline= +== CI/CD Pipeline=
-U+Continuous Integration - Continuous Development = CI/CD 
 +Un pipeline CI/CD este un proces segmentat in mai multi pasi ("​stages"​) de livrare a unei noi versiuni de software. Introduce automatizarea si monitorizarea pe fiecare din acesti pasi mai ales privind fazele de integrare si testare dar si in timpul livrarii produsului. Desi este posibila executia manuala a fiecarui pas din pipeline, adevarata valoare este adusa prin automatizare.
  
-2. VControlul ​Versiunii codului +Elemente tipice ale unui pipeline CI/CD: 
-The field of software engineering is a rapidly changing fieldWhen it comes to software, ​there are no final versionsAll applications and codes are always undergoing continuous development. One of the essential aspects of software engineering is version control+  * Versionarea codului -  
-Version control systems are a special type of software ​development tool designed to help software developers keep track of any changes done on the source code of any specific application+  * Build - compilarea aplicatiei 
-Usuallyany software project is handled by team of programmers/​ developers. Each of them working on specific aspect of the overall projectThese developers need to write and test code for their assigned tasks without affecting the product'​s working versionThis is where version control comes to help+  * Test - testare: unitare, functionala,​ de integrare, end-to-end 
-In addition to facilitating parallel development of any software projectwhen a mistake is made in the codecausing it to breakwe can use version control to trace the mistake and go back to the latest working version of the code+  * Release - livrarea aplicatiei in repository 
-As the software we build grows biggermore complexand more versatilethe knowledge ​of version control and how to use it efficiently is one of the essential skills that any software developer needs to obtain and develop+  * Deploy- instalare 
-In this articlewe will take a deep dive into the world of version controlwhat it meanswhy it is usedand how to get started with it.+  * Validation & Compliance - verificare vulnerabilitati/​ conformitate 
 + 
 + 
 +===2. Controlul ​Versiunii codului=== 
 +Sistemul de control al versiunii codului inregistreaza schimbarile asupra unui fisier sau set de fisiere astfel incat s aputem accesa versiuni anterioare ale codului. 
 +Dezvoltarea de software ​fiind un domeniu foarte dinamic,aplicatiile si codul sunt constant supuse modificarilorAstfel incat monitorizarea acestor modificari este un aspect esential.  
 + 
 +De obicei orice proiect ​software ​este gestionat de o echipa de developeri. Fiecare din ei lucreaza pe un anumit topic al proiectului general.Fiecare trebuie sa scrie cod si sa il testeze pe taskul asociat fara sa impacteze munca celorlalti colegi.  
 + 
 +In plus fata de facilitarea lucrului in paralel pe orice proiectcand s-comis o greseala, putem folosi versionarea sa identificam problema si sa ne intoarcem la ultima versiune functionala ​coduluiCu cat un proiect devine mai mare, mai complex si mai versatil, cu atat devine mai important sa stapanim si sa dezvolatm acest skill. 
 + 
 +==2.1 Beneficii == 
 +   - Genereaza puncte de backup: probabil cel mai vital beneficiufiecare contribuitor creaza un backup al proiectului de fiecare data cand face o clona. Mai multe backup-uri pe mai multe masini asigura faptul ca proiectul poate fi recuperat ​in cazul unei probleme  
 +  - Testare si experimentare : functionalitati noidezvoltate si testate individual intr-un mediu izolat 
 +  - Transparenta : istoricul proiectului si asocierea modificarilor cu fiecare utilizator responsabil asigura o dezvoltare transparenta si usor de urmarit 
 +  - Colaborare : in special prin prisma faptului ca fiecare contribuitor poate lucra localfara sa fie conectat in permanenta la server, dar si prin crearea workflowului care asigura implicarea mai multor membri ai echipei mai ales in proiecte mari si complexe 
 + 
 +==2.2 Concepte== 
 +  - Repository - baza de date incluzand schimbarile asupra proiectului 
 +  - Commit - un snapshot al proiectului la un animit moment 
 +  -  Checkout - copie locala a proiectului 
 +  - Branch - pointer la un commit ​  
 +  - Upstream/ downstream ​ - remote vs local 
 +  - HEAD - pointer la branch-ul curent 
 + 
 +==2.3  Tipuri de sisteme de control versiune == 
 +1. Sisteme de versionare centralizate [PerforceClearCaseSVNCVS]- un singur server contine toate versiunile codului, administreaza accesul la fisiere si stocheaza backup 
 +  * [+] Stim cine este autoritatea la un anumit proiect 
 +  * [-] Nevoie de conexiune la server, permisii centralizate,​ downtime 
 +  * [-] single point of failure 
 +2. Sisteme de versionare decentralizate [git, Mercurial, Bazaar] – mai multe servere contin versiunile codului alaturi de copii locale pentru fiecare din contribuitori.  
 +  * [+] Aproape toate operatiilemai putin sync-ulsunt locale ceea ce inseamna operatii rapide (commitdiffhistory) 
 +  * [+] control al versiunii personal 
 +  * [+] nu este nevoie de conexiune la server 
 +  * [+] fiecare clona este un backup  
 +  * [-?] este nevoie de un workflow pentru coordonare 
 +  ​
  
  
-=== 2. Intro Versionare === 
-=== 3. Managementul Sursei : Git/​BitBucket=== 
 === 4. Managementul Outputului: Nexus=== === 4. Managementul Outputului: Nexus===
 === 5. Resurse utile === === 5. Resurse utile ===
 +https://​www.atlassian.com/​git/​tutorials/​atlassian-git-cheatsheet
 +https://​git-scm.com/​doc
 +https://​www.atlassian.com/​git/​tutorials/​learn-git-with-bitbucket-cloud ​
 +
 +
 +
devops/cursuri/01.1626685596.txt.gz · Last modified: 2021/07/19 12:06 by laura.stoilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0