This shows you the differences between two versions of the page.
devops:cursuri:01 [2021/07/19 15:49] laura.stoilescu |
devops:cursuri:01 [2021/07/28 16:28] (current) bogdan.croitoru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Cursul 01 - Git/BitBucket, Nexus ==== | + | ==== Cursul 01. Git/BitBucket, Nexus ==== |
=== 1. Context DevOps === | === 1. Context DevOps === | ||
Line 23: | Line 23: | ||
Elemente tipice ale unui pipeline CI/CD: | Elemente tipice ale unui pipeline CI/CD: | ||
- | * Versionarea codului - | + | * Versionarea codului - |
- | * Build - compilarea aplicatiei | + | * Build - compilarea aplicatiei |
- | * Test - testare: unitare, functionala, de integrare, end-to-end | + | * Test - testare: unitare, functionala, de integrare, end-to-end |
- | * Release - livrarea aplicatiei in repository | + | * Release - livrarea aplicatiei in repository |
- | * Deploy- instalare | + | * Deploy- instalare |
- | * Validation & Compliance - verificare vulnerabilitati/ conformitate | + | * Validation & Compliance - verificare vulnerabilitati/ conformitate |
Line 53: | Line 53: | ||
- HEAD - pointer la branch-ul curent | - HEAD - pointer la branch-ul curent | ||
- | == Tipuri de sisteme de control versiune == | + | ==2.3 Tipuri de sisteme de control versiune == |
- | Types of Version Control Systems | + | 1. Sisteme de versionare centralizate [Perforce, ClearCase, SVN, CVS]- un singur server contine toate versiunile codului, administreaza accesul la fisiere si stocheaza backup |
- | There are two main types of version control systems: centralized and distributed version control systems. | + | * [+] Stim cine este autoritatea la un anumit proiect |
- | Centralized version control systems | + | * [-] Nevoie de conexiune la server, permisii centralizate, downtime |
- | + | * [-] single point of failure | |
- | Image by the author (made using Canva) | + | 2. Sisteme de versionare decentralizate [git, Mercurial, Bazaar] – mai multe servere contin versiunile codului alaturi de copii locale pentru fiecare din contribuitori. |
- | Centralized version control systems (CVCS) are a type of version control system with a single server containing all versions of the code files — often stored in repositories — the number of contributors (programmers working on the code files), and the backup files for the main project. | + | * [+] Aproape toate operatiile, mai putin sync-ul, sunt locale ceea ce inseamna operatii rapide (commit, diff, history) |
- | This setup allows every contributor to the code to know what the others are working on, making it easier to communicate and manage the people based on a specific task. | + | * [+] control al versiunii personal |
- | The main downside for this setup is that since all the code files and the backup files are stored on one centralized server, if something were to happen to the server, then everything will be lost. Subversion and Perforce are examples of CVCS. | + | * [+] nu este nevoie de conexiune la server |
- | Distributed version control systems | + | * [+] fiecare clona este un backup |
- | + | * [-?] este nevoie de un workflow pentru coordonare | |
- | Image by the author (made using Canva) | + | |
- | Distributed Version Control Systems (DVCS) such as Git, Mercurial, or Bazaar are version control systems with one or more main server containing the code files. | + | |
- | However, unlike CVCS, in DVCS, the code files are mirrored on every contributors’ computer, meaning each one of them has its own version of the code, including its full history to work on locally. | + | |
- | So, if any server dies, any of the contributors’ repositories can be copied back up to the server once it’s back on and restore the history of the code files. This could be done easily because every clone of the original code files is really a full backup of all the project’s data. | + | |
- | DVCS allows different groups of people in different physical locations to collaborate within the same project simultaneously. This is an advantage that wasn’t possible in centralized systems. | + | |
- | Benefits of Version Control | + | |
- | Using a version control system has various benefits to any team of software developers, including: | + | |
- | 1 Generate backups | + | |
- | Perhaps the most vital benefit of using a version control system is that every time a contributor clones a repository, they are, in a sense creating a backup of the current version of that repository. Having multiple backups on different machines is valuable so we can secure the data from losing in the cause of server failure. | + | |
- | 2 Test and experiment | + | |
- | In today’s world, any source code is always under development. New features are always added, a new audience to be targeted, and new applications to be developed. | + | |
- | When a team works on a software project, they often have different main project clones to develop new features on, test them, and make sure they function properly before this new feature can be added to the main project. This could save time as different aspects of the code can be developed simultaneously. | + | |
- | 3 Keep history and track changes | + | |
- | Having a record of the changes in a specific code file could help you and new contributors understand how a specific part of the code came to be. How did it start and develop over time to reach its current version. | + | |
- | Moreover, if over time, the addition of a certain feature causes difficulties in extending or expanding the project, using version control allows the developers to track that particular feature out and change it or remove it without affecting the project's functionality. | + | |
- | 4 Collaborate and contribute | + | |
- | One of the main benefits of version control systems, especially DVCS, is that it allowed us to contribute to projects we liked despite being in different countries. I would argue that the existence of DVCS was one of the main facilitators that allowed open-source technology to reach its current success. | + | |
- | Takeaways | + | |
- | Fully understanding version control systems, how they work and using them efficiently is one of the essential skills any programmer or software developers need to work on and grow to excel in their career. | + | |
- | Version control systems could be one of these topics that are quite complex and difficult to wrap your head around. That’s why I decided to create a series of articles tackling the different aspects of version control. The goal of these articles is to get you comfortably and easily started with version control. | + | |
- | The upcoming articles in this series will cover Git basics commands that every developer should know, some advanced commands to make you stand out, and how to use Git efficiently to make your workflow smooth and pleasant. | + | |
=== 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 | ||
+ | |||
+ | |||
+ |