Verzování SW
- přidělíme jednoznačné ID pro aktuální stav projektu
- běžné dvojí značení
- marketingový název
- interní číslování
- mělo by dávat smysl (nikoliv náhodný řetězec)
- mělo by jít snadno zapamatovat
- hned určit co je starší a co novější
- občas se přidává i kódové jméno
- opět máme ustálené schéma
- obvykle zveřejněno i s roadmap
Sémantikcé verzování
major.minor.patch
- pomáhá s problémy typu dependency hell
- deklarace veřejného API
- bez leading zeroes
- pokud
major
== 0, tak není stabilní - patch se zvyšuje při opravách chyb
- minor při přidání nové funkcionality se zpětnou kompatabilitou
- major při nekompatabilních změnách ve veřejném API
- při zvýšením se vždy nižší verze nulují
- rozšíření pomocí pomlčky
1.0.0-aplha
- pomocí + přidáme metadata
1.0.0-beta+exp.sha.511
Verze odvozená od data
- vhodnější pro produkty měnící se často
- kombinace s sémantickým verzováním
- ihned poznáme stáří produktu
Další
-
obyčejné číslo
-
sudá-lichá vezre (sudá … stabilní, lichá … vývojová)
-
zeroVer - major je pořád 0
-
naše schéma by mělo být zveřejněno
-
každé vydání musí obsahovat changelog
-
zveřejnit roadmap
-
včas ohlásit vydání nové major
-
změna schématu (občas je nevyhnutelná, může přinést komplikace)
- Java 1.8.0 → Java 8
Verzovací systémy
- nutné u projektů, kde pracuje více lidí
- je nutné mít k dispozici i starší verzi
- možnost synchronizovat přidané funkcionality od více lidí najednou
Git
- distribuovaný verzovací systém
- Linus Torvalds
- dnes nejpopiulárnější
Repozitář
-
databáze obsahující všechny informace nutné ke správě verzí a sledování změn
-
.git
-
object store … vše potřebné pro obnovení verze (logy, autoři, úložiště origo souborů)
-
index … dočasný binární soubor trackující změny
- po commitu jsou zaznamenány natrvalo
-
commit … záznam o změně v repozitáři
- ukládá pouze změněné soubory
- vždy má předka
- má unikátní jméno
-
větvení … rozdělení do více souběžných větví
- spojení pomocí merge
- proč? izolovanost jednotlivých funkcí, rozdělení podle vývojářů, oddělení pro různé verze
- má vždy jméno (master, dev, testing, …)
- aktivní je vždy jen 1
-
merge … spojení
- mohou nastat konflikty, jinak automatické
- upravíme buď ručně nebo pomocí nějakého nástroje
-
stash … zásobník pro odležení rozpracované práce
- pokud potřebujeme nutně jít dělat něco jiného
- uložíme si jen pro sebe (není nikde publikována)
-
remote … vzdálený repozitář
- developement a bare
- clone nebo fetch dat
-
git má samozřejmě i alternativy, ale je nejpopulárnější
- mercurial
- bazaar
Webové CVS
- concurent version system
- slouží především pro prezentaci
- rychlo prohlížení kódu i nevývojáři
- vizualizace větví
- GitHub
- GitLab
- BitBucket
Continuous integration (CI)
- snaha o co největší míru automatizace sestavení a testování
- úzce spolupracuje s verzovacím systémem
- commit sestaven, otestován unit testy (někdy i integrační)
- vývojáři vyvíjí a současně a průběžně se integruje
CI server
- SW kontrolujícíc repozitáíř a vykonávající různé akce
- kompilace
- spouštění testů (i výpočet code coverage)
- checking coding conventions
- CI pipeline
- podporují weboví klienti Gitu
Continuous delivery
- zahrnuje správu configurací a přístupových údajů
- automaticky synchronizuje testovací a produkční prostředí
- delivery je pouze doručení nikoliv nasazení (to si obvykle žádá manuální zásah)
Continuous deployment (CD)
- automatizace nasazení aktuální verze
- není žádoucí přímo na produkci, takže vhodné do testovacího prostředí
- v produkci dobré na jedno kliknutí (neboli potvrzení zákazníka)