Kontinuirana integracija i isporuka web aplikacija - GASERI


Razvoj web aplikacija i usluga



Onion Details



Page Clicks: 0

First Seen: 03/15/2024

Last Indexed: 10/23/2024

Domain Index Total: 397



Onion Content



Preskoči na sadržaj Kontinuirana integracija i kontinuirana isporuka za web aplikacije doc. dr. sc. Vedran Miletić, vmiletic@inf.uniri.hr , vedran.miletic.net Fakultet informatike i digitalnih tehnologija Sveučilišta u Rijeci, akademska 2021./2022. godina Motivacija Programer ste u timu i popravili ste bug koji vam je bio dodijeljen, odnosno izvršili ste promjene u kodu nakon kojih na vašoj (razvojnoj) verziji aplikacije pokrenutoj lokalno izgleda da sve radi kako treba. Možete li napraviti iste promjene na (produkcijskoj) verziji aplikacije, odnosno verziji koja je dostupna korisnicima? Pomiješani osjećaji Izvor: Mixed Feelings (MonkeyUser, 25th November 2021) Povezane teme dvanaestofaktorska aplikacija 5. faktor: Izgradite, objavite izdanje, pokrenite 10. faktor: Pariter razvoja/produkcije rječnik pojmova oblaku urođenih aplikacija Continuous integration (CI) Continuous delivery (CD) Developer Roadmaps : Frontend , Backend i DevOps primjena u tvrtkama: Cisco, kompanija temeljena na vlasničkom softveru: What is CI/CD? Red Hat, kompanija temelejna na slobodnom softveru otvorenog koda: What is CI/CD? (redhat.com) , What is CI/CD? (opensource.com) Beskonačna DevOps petlja Izvor: Continuous Delivery Best Practices: Extent and Intent Kontinuirana integracija (engl. continuous integration , kraće CI) je prema Wikipediji : praksa spajanja svih radnih kopija programera u zajedničku glavnu razvojnu granu nekoliko puta dnevno američki programer Grady Booch je 1991. godine predložio pojam CI u svojoj knjizi pod naslovom Object Oriented Design with Applications nije zagovarao integraciju nekoliko puta dnevno, već nekoliko puta tjedno ili mjesečno , ovisno o projektu agilna metodologija ekstremno programiranje (engl. extreme programming , kraće XP) pretpostavlja da se zahtjevi korisnika/kupca jako brzo mijenjaju usvojila je koncept CI tako da zagovara integriranje više od jednom dnevno, možda i nekoliko puta na sat Tijek rada kontinuirane integracije (1/2) Najjednostavnije je lokalno pokretanje testova: programer pokreće automatizirane jedinične testove u svojoj lokalnoj okolini nakon što je završio s razvojem koda prije spajanja svojih promjena na glavnu granu never break the build : glavna grana uvijek prolazi testove, može se postaviti i pokrenuti Izvor: How to set up an efficient development workflow with Git and CI/CD Tijek rada kontinuirane integracije (2/2) Uz lokalno izvođenje testova, moguće je i korištenje poslužitelja za CI koji: izgrađuje softver: povlači zavisnosti, pretvara izvorni kod u izvršni oblik i pretvara popratni sadržaj u oblik u kojem se može iskoristiti izgrađuje softver i izvodi testove izgrađuje softver, izvodi testove i vrši isporuku, odnosno postavljanje softvera ako su testovi uspješno prošli kontinuirana isporuka i kontinuirano postavljanje primjer: CI/CD Concepts (GitLab) Izvor slike: CI/CD pipelines (GitLab) Implementacije CI ili CI/CD (1/2) Platforme u oblaku: GitHub Actions ( prezentacija CI/CD značajki ) GitLab CI/CD ( primjeri korištenja ) Atlassian Bitbucket Pipelines CircleCI JetBrains TeamCity Azure DevOps Server ( shematski prikaz ) AppVeyor Travis CI (otvoreni kod dostupan na GitHubu ) Cirrus CI Semaphore itd. Implementacije CI ili CI/CD (2/2) Softveri otvorenog koda za samostalno postavljanje i održavanje: Jenkins (usluge postavljanja i održavanja nude Servana , Bitnami i drugi) Buildbot Apache Gump GoCD Primjeri korištenja kontinuirane integracije Django pokreće testove kod svake promjene na dva sustava: GitHub Actions vlastitoj instanci Jenkinsa Ruby on Rails koristi GitHub Actions i Buildkite Discourse koristi GitHub Actions phpBB koristi GitHub Actions PHP (interpreter) koristi Cirrus CI , AppVeyor , Azure Pipelines i Travis CI LLVM koristi vlastitu instancu Buildbota (primjer van weba) ns-3 koristi GitLab CI/CD konfiguracija se piše u obliku YAML Dio CI skripte za jednostavan program u Pythonu image : python:latest before_script : python -V # Print out python version for debugging - pip install virtualenv - virtualenv venv - source venv/bin/activate - pip install -r requirements.txt test : script : pip install pytest - venv/bin/pytest run : script : python program.py Dio CI skripte za Django services : mysql:latest cache : paths : ~/.cache/pip/ migrations : stage : build script : python manage.py makemigrations # - python3 manage.py makemigrations myapp - python manage.py migrate - python manage.py check django-tests : stage : test script : echo "GRANT ALL on *.* to user;"| mysql -u root -p pass -h mysql - python manage.py test Dio CI skripte za jednostavan program u Node.js-u image : node:latest services : redis:latest - postgres:latest cache : paths : node_modules/ test_async : script : npm install - node ./specs/start.js ./specs/async.spec.js test_db : script : npm install - node ./specs/start.js ./specs/db-postgres.spec.js Nije to za nas Izvor: Won't Work For Us (Comic Agilé #169) Kontinuirana isporuka (1/2) Kontinuirana isporuka (engl. continuous delivery , kraće CD) je prema Wikipediji : pristup programskom inženjerstvu u kojem timovi proizvode softver u kratkim ciklusima, osiguravajući da se softver može pouzdano postaviti u bilo kojem trenutku bez dodatnog ručnog rada kod postavljanja cilj je izgradnja, testiranje i izdavanje softvera velikom brzinom i učestalošću pomaže smanjiti troškove, vrijeme i rizik isporuke promjena dopuštajući dodatna ažuriranja aplikacija u produkciji izravni i ponovljivi postupak postavljanja je preduvjet kontinuirane isporuke Kontinuirana isporuka (2/2) Izvor: Wikimedia Commons File:Continuous Delivery process diagram.svg Cjevovod postavljanja Izvor: deployment pipeline {turnoff.us} Kontinuirano postavljanje Izvor: What is a CI/CD pipeline? (Red Hat Topics, Understanding DevOps) Kontinuirano postavljanje (engl. continuous deployment , kraće CD) je prema Wikipediji : pristup u programskom inženjerstvu u kojem se programska funkcionalnost isporučuje automatiziranim postavljanjem na redovitoj bazi slijedi nakon s kontinuirane isporuke u fazi kontinuirane isporuke programska se funkcionalnost smatra potencijalno prikladnom za postavljanje, ali se postavljanje ne događa u fazi kontinuirane isporuke očekuje se ručno postavljanje Primjer primjene CI/CD u praksi Dva developera rade promjene svaki na svojoj verziji softvera. Jedan od njih zaokruži cjelinu (npr. implementacija nove značajke, popravak buga) i lokalno izvede testove koji uspješno prođu. Taj developer zatraži od upravitelja projekta da uvrsti njegove promjene u glavnu granu stvaranjem zahtjeva za povlačenjem promjena (engl. pull request ). Upravitelj projekta spaja upravo dobivene promjene s promjenama koje su izveli drugi developeri i povlači ih u probnu granu . Po dolasku promjena u probnu granu, aktivira se CI/CD sustav koji izvodi instalaciju zavisnosti, pokreće testove, postavlja konfiguraciju i pokreće aplikaciju pa javlja rezultate svih navedenih radnji. Ako je CI/CD uspješno prošao, promjene se (uz ručno odobrenje ili bez njega) povlače u glavnu granu i od tamo se vrši postavljanje aplikacije. Zaključak dvanaestofaktorska, odnosno oblaku urođena aplikacija može automatizirati: integraciju isporuku postavljanje velik broj CI/CD alata usluge u oblaku alati otvorenog koda za samostalno postavljanje DevOps CI/CD Explained in 100 Seconds (Fireship) Author: Vedran Miletić