Timski razvoj web aplikacija i upravljanje verzijama programskog koda - GASERI


Razvoj web aplikacija i usluga



Onion Details



Page Clicks: 1

First Seen: 03/15/2024

Last Indexed: 10/25/2024

Domain Index Total: 397



Onion Content



Preskoči na sadržaj Timski razvoj web aplikacija i upravljanje verzijama programskog koda doc. dr. sc. Vedran Miletić, vmiletic@inf.uniri.hr , vedran.miletic.net Fakultet informatike i digitalnih tehnologija, akademska 2021./2022. godina Motivacija Voditelj ste tima za razvoj aplikacija. Vaši programski inženjeri (kolokvijalno programeri, developeri ) vam na redovnoj bazi šalju promjene u izvornom kodu koje su izveli i vi ih integrirate te vršite postavljanje aplikacije. Na koji način ćete osigurati: da rad različitih programskih inženjera nije u konfliktu, da verzija koju dobijete nakon integracije promjena radi barem jednako dobro kao trenutna, postojeća i da proces postavljanja aplikacije svaki put izvedete bez pogreške? Upravljanje verzijama Sinonimi: verzioniranje , upravljanje konfiguracijom Uključuje pamćenje povijesti promjena na izvornom kodu softverskog projekta koji razvijate i njegovoj pripadnoj dokumentaciji ( Wikipedia ) Razlozi za korištenje upravljanja verzijama Omogućuje povratak na prethodno stanje u slučaju potrebe pa možete odgovoriti na pitanja kao što su: Je li neka pogreška postojala u prethodnoj verziji? Tko je napisao ovih 20-ak linija koda koje rade problem? Koje su točno promjene od verzije 1.2.4 do verzije 1.2.7? Omogućuje istovremeni rad više developera na više verzija softvera Primjerice, dva developera održavaju stabilnu verziju i popravljaju bugove u njoj dok pet developera razvija novu verziju Omogućuje kontinuiranu integraciju i kontinuiranu isporuku/postavljanje Povijesni pregled Source Code Control System (SCCS) na Unixu, 1970-te Revision Control System (RCS) Concurrent Versions System (CVS) Subversion (SVN, moto projekta: "CVS done right") I see Subversion as being the most pointless project ever started. (...) There is no way to do CVS right. - Linus Torvalds, Google Tech talk on Git, 2007. ( snimka ) Distribuirani pristup verzioniranju Kod centraliziranog pristupa sva povijest promjena je na jednom mjestu (CVS/SVN poslužitelj) i klijenti je povlače Kod decentraliziranog pristupa sva povijest promjena je kod svakog sudionika u razvoju softvera i moguća je međusobna razmjena P2P (kao BitTorrent) Git je de facto standard, ostali (Mercurial, BitKeeper, GNU Bazaar, Fossil itd.) su danas vrlo malo korišteni Osnovni pojmovi Lokalni repozitorij (Git, Visual Studio Code ) Spremanje promjena: commit Udaljeni repozitorij ( GitLab , GitHub ); sinkronizacija s lokalnim: Povlačenje promjena s udaljenog repozitorija: pull Guranje promjene na udaljeni repozitorij: push Različiti programeri rade promjene neovisno na različitim granama pa se kasnije te grane spajaju u jednu granu koja sadrži sve promjene Grananje: branch Spajanje grana: merge Što sve verzionirati? Sve! ( ne mora biti sve u jednom repozitoriju ) Primjerice, Grupa za strukturu i funkciju biomolekula verzionira statičko web sjedište ( repozitorij na GitHubu ) Izvorni kod Testove Skripte za izgradnju i punjenje baze podataka Skripte i konfiguracijske datoteke za izgradnju i isporuku aplikacije Dokumentaciju Postavke DNS-a, postavke vatrozida Što ne verzionirati? Datoteke koje se preuzmu ili stvore kod izgradnje softvera, primjerice: Node.js: direktorij node_modules , stvorit će ga npm kod izgradnje naredbom npm install na temelju podataka u package.json PHP: direktorij vendor , stvorit će Composer kod izgradnje naredbom composer update na temelju podataka u datoteci composer.json Git Large File Storage brine o velikim binarnim datotekama (slike, audiovizualne datoteke i sl.) Kako verzionirati Redovito Svako spremanje promjena čini cjelinu (npr. ako ne prolazi izgradnja softvera, popravite greške prije commita) Nakon izvođenja testova Inkrementalne promjene Jasne poruke o promjenama u commitovima; usporedite: "Popravljena neka pogreška kod izvođenja" "Promijenjen QuuxFactory da odbije stvoriti prazne objekte kad je varijabla okoline HARDENED_DEFAULTS postavljena na vrijednost enforce " Verzioniranje tuđeg koda Pod tuđim kodom podrazumijevamo biblioteke o kojima vaš softver ovisi Nije vaš posao (tm) Točne verzije navedene u datoteci s popisom paketa o kojima vaša aplikacija ovisi povući će npm za Node.js, Composer za PHP, pip za Python, RubyGems za Ruby, Maven za Javu, Nuget za C#, Cargo za Rust itd. Datoteku s popisom zavisnosti ćete verzionirati NPM isporuka Izvor: NPM Delivery (MonkeyUser, 4th July 2017) Nadogradnja Izvor: Update (MonkeyUser, 5th October 2021) Verzioniranje konfiguracijskih datoteka Dvanestofaktorska aplikacija nema konfiguracijske datoteke, već koristi varijable okoline za konfiguraciju Ako ih ima, verzioniraju se odvojeno od osnovne aplikacije npr. datoteka u formatu JSON sadrži "domain": "www.example.com" , "database-driver": "mongo" , "database-server-port": 5502 , "file-storage-path": "/var/lib/fizz-buzz-enterprise-edition" Nemojte verzionirati zaporke, parove (SSH) ključeva i certifikate Načini korištenja Gita u razvoju softvera GitLabov pregled nekoliko mogućih načina korištenja Gita Atlassianov opis mogućih načina korištenja Gita : Feature branch Gitflow Forking Author: Vedran Miletić