Programozási technológia 2.

Hasonló dokumentumok
Szoftver technológia. Continuous integration & delivery. Cserép Máté ELTE Informatikai Kar 2019.

Szoftvertechnológia 12. előadás. Szoftverfejlesztési módszerek és modellek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

A DevOps-kultúra eszközei

Térinformatikai és távérzékelési alkalmazások fejlesztése. A szoftverfejlesztés technikai támogatása

Minőségi téradat-szolgáltatások. fejlesztése és. és üzemeltetése

Automatizált Java Build. ApacheAnt használatával

(Teszt)automatizálás. Bevezető

Composable Infrastruktúra

Angolul: Extreme Programming, röviden: XP Agilis módszertan. Más módszertanok bevált technikáinak extrém módú (nagyon jó) használata

IBM felhő menedzsment

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Verifikáció és validáció Általános bevezető

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Mobil Informatikai Rendszerek

Verziókövető rendszerek használata a szoftverfejlesztésben

Szoftverfejlesztés teszteléssel

Gyakorlat és házi feladat tájékoztató

Segesdi Dániel. OpenNebula. Virtualizációs technológiák és alkalmazásaik BMEVIMIAV ősz

A cloud szolgáltatási modell a közigazgatásban

Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

A Java EE 5 plattform

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Felhő alapú hálózatok Konténerek orkesztrálása Simon Csaba. Budapesti Műszaki és Gazdaságtudományi Egyetem

BIG DATA ÉS GÉPI TANULÁS KÖRNYEZET AZ MTA CLOUD-ON KACSUK PÉTER, NAGY ENIKŐ, PINTYE ISTVÁN, HAJNAL ÁKOS, LOVAS RÓBERT

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Utolsó módosítás:

Informatikai projektellenőr szerepe/feladatai Informatika / Az informatika térhódítása Függőség az információtól / informatikától Információs

Microsoft SQL Server telepítése

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

30 MB INFORMATIKAI PROJEKTELLENŐR

A hibrid DB cloud biztonsági eszköztára. Kóródi Ferenc Budapest,

Java I. A Java programozási nyelv

Gara Péter, senior technikai tanácsadó. Identity Management rendszerek

Hogyan legyél DevOps

Virtualizációs Technológiák Operációs rendszer szintű virtualizáció Konténerek Forrás, BME-VIK Virtualizációs technológiák

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC

Fejlesztési projektek menedzselése IBM Rational CLM termékekkel. Ker-Soft Kft. Kaszás Orsolya - üzleti tanácsadó

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Tartalom. Konfiguráció menedzsment bevezetési tapasztalatok. Bevezetés. Tipikus konfigurációs adatbázis kialakítási projekt. Adatbázis szerkezet

SUSE Container as a Service Platform Nagyvállalati Kubernetes. Papp Zsolt Konzultáns

UNIX / Linux rendszeradminisztráció

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

GUSE BEMUTATÓ. Az MTA CLOUD felhasználói számára készült guse bemutató v2.0. MTA Cloud csapat

Utolsó módosítás:

ERserver. iseries. Az iseries Access for Windows használatának megkezdése

WebCenter. Online jóváhagyás és együttműködés. Gönczi Zsolt Október

Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció

Mi is a git? Csapatban dolgozni Git pro eszközök. Git bevezető. Szabó Adrienn Adatbányászat és Webes Keresés Kutatócsoport

Név: Neptun kód: Pontszám:

Valós idejű gépi fordítás kiegészítő szolgáltatásként

Felhőszolgáltatások megvalósítása PureSystems eszközökön

Veeam Agent for Windows and Linux

Teszt terv Új funkció implementációja meglévı alkalmazásba

Linux alapok gyakorlat

FELHŐ és a MAINFRAME. Irmes Sándor

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Földmérési és Távérzékelési Intézet

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

Tesztelési szintek Tesztautomatizálás

Tudásalapú információ integráció

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Floppix linux disztribúció üzembe helyezése VirtualBox alatt fizikai floppy meghajtó nélkül

Iman 3.0 szoftverdokumentáció

Code review és continous integration toolok BME-MIT

Szoftver-technológia I.

Felhő demonstráció Gergely Márk MTA SZTAKI

Szoftverminőségbiztosítás

italc felhasználói dokumentáció

Közösség, projektek, IDE

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

MÉRŐ AUTOMATA RENDSZEREK

01. gyakorlat - Projektalapítás

Zimbra levelező rendszer

A MatekSzabadon LiveDVD

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

CRA - Cisco Remote Access

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Erőforrás gazdálkodás a bevetésirányításban

IRÁNYTŰ A SZABÁLYTENGERBEN

MIÉRT KELL TESZTELNI?

Android Wear programozás. Nyitrai István


Viczián István IP Systems JUM XIX szeptember 18.

IMOLA. Integrált MOKKA2, ODR2 és OLA. Vándorgyűlés Szombathely, 2008 július 25. Monguz MTA SZTAKI konzorcium

A Magyar Posta Zrt Hyper-V infrastruktúrája. Bene Zsolt Infrastruktúra fejlesztő rendszermérnök Magyar Posta ZRT

Robot Operating System

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

A Docker alapjai. Takács Ákos PTE Egyetemi Könyvtár és Tudásközpont TAKÁCS ÁKOS - IPSZILON SZEMINÁRIUM - A DOCKER ALAPJAI 1

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

TOGAF elemei a gyakorlatban

Private Cloud architektúra keretrendszer

Java Programozó képzés A&K AKADÉMIA 2019.

Operációs rendszerek. 1. gyakorlat. Bevezetés, követelmények UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Szabálykezelés a gyakorlatban

6.2. TMS320C64x és TMS320C67xx DSP használata

The Power To Develop. i Develop

Átírás:

Programozási technológia 2. Cserép Máté ELTE Informatikai Kar 2019.

Folyamatos integráció A folytonos integráció (continuous integration, CI) egy olyan gyakorlati módszer, amely lehetővé teszi a programkódok ellenőrzésének és tesztelésének felgyorsítását célja a lehetséges hibák, integrációs problémák azonnali, automatizált kiszűrése, visszajelzés a fejlesztőnek a programkódok verziókezelő rendszer segítségével egy központi tárhelyre kerülnek, naponta többször a tárhely tartalma minden módosítást követően automatikusan fordításra kerül (build automation), a fordítással pedig a lekódolt tesztek is végrehajtódnak az így ellenőrzött kódot további tesztelés követheti 2

Folyamatos teljesítés Az agilis szoftverfejlesztés (agile software development) célja a gyors alkalmazásfejlesztés megvalósítása, inkrementális alapon a szoftver folyamatos fejlesztés és kiadás alatt áll (continuous delivery), a sebesség állandó, a változtatások minden lépésben beépíthetőek (welcome changes) a működő szoftver az előrehaladás mérőeszköze, előtérben az egyszerűség, ugyanakkor folyamatos odafigyelés a megfelelő tervezésre, optimalizációra a fejlesztést általában önszervező, kis csapatok végzik, megosztott felelősséggel, folytonos interakcióval, gyors visszajelzésekkel a folyamatos kiadások automatizálhatók, ekkor continuous deployment-ről beszélünk 3

Folyamatos integráció és teljesítés fejlesztő verziókövető automatikus fordítás automatikus tesztelés kihelyezés betölt értesít sikertelen fordítás fordít betölt értesít fordít értesít tesztel továbbít sikeres kihelyezés 4

Feladatok A folyamatos integráció és teljesítés lépéseit egymásra épülő feladatok (jobs) láncolataként (pipelines) definiálhatjuk 5

GitLab Runners A GitLab rendelkezik integrált, saját megoldással a folyamatos integráció és teljesítés támogatására a feladatokat (jobs) a GitLab szervertől független ún. GitLab Runner példányok hajtják végre Shell, SSH, VirtualBox, Docker, Kubernetes, stb. a runnerek egyedileg konfigurálhatóak, lehetnek megosztottak vagy projekthez rendeltek 6

Docker A folyamatos integrációt egy izolált, reprodukálható környezetben érdemes végezni A Docker napjainkban a legelterjedtebb container framework a container hasonlít a virtuális gépekhez (VM) olyan tekintetben, hogy egy teljesen elkülönített, virtualizált környezett biztosít, amelynek a gazdaszámítógép szolgáltat erőforrásokat a fő különbség a containerek és a virtuális gépek között, hogy minden container osztozik a gazda kerneljén a többi containerrel, a virtualizált hardver és az OS nem része, csupán az alkalmazásunkhoz kötődő könyvtárak, binárisok és a felhasználói terület a containerek ezáltal nagyságrendekkel kisebb overheaddel bírnak a VM-ekhez képest, így könnyebb súlyú megoldást nyújtanak a virtualizációra 7

GitLab CI/CD A folyamatos integráció konfigurációját a.gitlab-ci.yml fájl tartalmazza, YAML formátumban a YAML (YAML Ain't Markup Language) egy emberi szemmel könnye(bbe)n olvasható strukturált leíró nyelv https://yaml.org/spec/1.2/spec.html A GitLab webes felületén elérhető egy CI Lint funkció a formátum validálására beküldés előtt before_script: - apt-get update -qq - apt-get install yqq openjdk-11-jdk ant build_program: script: - ant compile - ant jar 8

GitLab CI/CD: jobs Több feladat (job) definiálása: before_script: - apt-get update qq - apt-get install yqq openjdk-11-jdk ant junit build_program: script: - ant compile - ant jar test_program: script: - ant compile-test - ant test 9

GitLab CI/CD: stages A folyamatos integráció feladatait egymást követő szakaszokra (stages) oszthatjuk alapértelmezetten 3 stage van: build, test, deploy ez tetszőlegesen felüldefiniálhatjuk stages: - lint - build Egy stage feladatai egymástól függetlenül párhuzamosítva végrehajthatóak (több runner bevonásával) a stagek egymásra épülnek, amennyiben egy stage valamely feladata hibával zárul, a rá épülő stagek nem kerülnek végrehajtásra 10

GitLab CI/CD: stages A folyamat stagekre osztása: before_script: - apt-get update qq - apt-get install yqq openjdk-11-jdk ant junit build_program: stage: build script: - ant compile - ant jar test_program: stage: test script: - ant compile-test - ant test 11

GitLab CI/CD: artifacts A CI feladatok részeként előállított bináris vagy egyéb állományokat megőrizhetjük (artifact) pdf: script: pdftex paper.tex artifacts: paths: - paper.pdf expire_in: 1 month Az artifactok a GitLab webes felületéről könnyen letölthetőek 12

GitLab CI/CD: artifacts Artifactok definiálása: before_script: - apt-get update qq - apt-get install yqq openjdk-11-jdk ant build_program: stage: build script: - ant compile - ant jar artifacts: paths: - dist/program.jar expire_in: 1 week 13

GitLab CI/CD: dependencies Artifactok átadása jobok között: before_script:... build_program_a: stage: build script: - cd module_a - ant jar artifacts: paths: - module_a/dist/program_a.jar build_program_b: # depends on program_a.jar stage: build script: - cd modue_b - ant jar dependencies: - build_program_a 14

Docker images Docker container alapú GitLab Runner esetén megadhatjuk melyik docker image-ből kívánunk kiindulni: image: ubuntu:18.04 before_script:... Docker image-t egy docker registryből kérhetünk: Használható a publikus Docker Hub, ahová saját image is feltölthető: https://hub.docker.com/ Használható privát docker registry is (pl. vállalati környezet) Ha nem adjuk meg, akkor a runner konfigurációja adja meg a használandó image-t a szofttech.inf.elte.hu runnerjei az ubuntu:18.04 imagere vannak konfigurálva 15

GitLab CI/CD További lehetőségek (teljesség igénye nélkül): only, except: CI jobok végrehajtásának feltételhez kötése (például csak a master branch-en futtatni) when: CI jobok végrehajtásának feltételhez kötése (manuális vs. automatikus végrehajtás) cache: fájlok, könyvtárak (tipikusan függőségek) megőrzése CI jobok között variables: változók definiálása. A futtató környezetre számos változó már előre definiált: https://docs.gitlab.com/ce/ci/variables/ services: szolgáltatások (pl. adatbázis motor) külön Docker containerben futtatása (docker-compose) 16

GitLab CI/CD: terminals A folyamatos integráció feladatainak végrehajtását egy online terminál ablakon keresztül követhetjük a GitLab webes felületén 17

GitLab CI/CD: példa projekt Hálózati Pacman játék Java implementációval: https://szofttech.inf.elte.hu/mate/pacman-java/ 18