Build keretrendszerek

Hasonló dokumentumok
Automatikus teszt futtatás, build keretrendszerek

Automatikus teszt futtatás, folytonos integráció

Szo$verfejlesztés Eclipse környezetben. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Source control systems. Horváth Ernő, Dr. Pozna Claudiu Radu

Közösség, projektek, IDE

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

Programozási technológia 2.

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

Code review és continous integration toolok BME-MIT

A FEJLESZTÉS KIHÍVÁSAI

Termék életciklus és a verziókezelés

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

A DevOps-kultúra eszközei

Szoftver technológia. Verziókövető rendszerek. Cserép Máté ELTE Informatikai Kar 2019.

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

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

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

Fási PHP függőségkezelés composerrel

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

OOP és UML Áttekintés

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

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

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

(Teszt)automatizálás. Bevezető

CI gyakorlat segédlet

Mobil Informatikai Rendszerek

JavaScript Web AppBuilder használata

RH/CentOS felügyelet SUSE Manager segítségével. Kovács Lajos Vezető konzultáns

Java Parancssor Maven-nel

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

ADATBÁZIS VERZIÓKÖVETÉSE: LIQUIBASE

Felhő alapú hálózatok (VITMMA02) OpenStack Neutron Networking

Java I. A Java programozási nyelv

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

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

Szathmáry László Debreceni Egyetem Informatikai Kar

Új technológiák az Ubuntuban. Új fejlesztések Amik egy éven belül jelenhetnek meg az Ubuntuban

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Web harvesztelés. Automatikus módszerekkel

Tortoise SVN használata. Képes útmutató

Egy egyszerű, gyors és szabad újratelepítő eszköz: upi

A fordítónak mindenhez lehet

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

SQLServer. SQLServer konfigurációk

Több app. Egy kódbázis

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

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Mobil Informatikai Rendszerek

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

HP LaserJet M9040/9050 MFP Gyors referencia útmutató

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

Szkeleton beadása. 100 Generalis faliora. Csapattagok: Konzulens: Szabó András március 29.

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Hogyan legyél DevOps

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Hello Maven. JSE vs. JEE, JEE vs Spring. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Java I. A Java programozási nyelv

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Git verziókövető rendszer alkalmazása a projektek nyomon követésére

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

Dr. Mileff Péter SZOFTVERFEJLESZTÉS VERZIÓKÖVETÉS, VERZIÓKÖVETŐ RENDSZEREK. Miskolci Egyetem Általános Informatikai Tanszék

Google Drive szinkronizálása asztali géppel Linux rendszeren

HP Color LaserJet CM3530 MFP sorozat Gyors referencia útmutató. Művelet: Másolás. Digitális küldés. Fax. Feladatok tárolása

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

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

Modell alapú tesztelés mobil környezetben

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

Saját Subversion tároló üzemeltetése i. Saját Subversion tároló üzemeltetése

Flex: csak rugalmasan!

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

C++ fejlesztés az ECLIPSE környezetben

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

Oralce kliens installálása Windows Server 2003-ra

Kiszolgálók üzemeltetése. Iványi Péter

VIRTUAL APPLIANCE KÉZIKÖNYV VIRTUAL APPLIANCE KÉZIKÖNYV

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Hatékony iteratív fejlesztési módszertan a gyakorlatban a RUP fejlesztési módszertanra építve

Feltörekvő technológiák: seam, drools, richfaces és társai a JBossban

Oracle GoldenGate Studio Nagyon rövid bemutató. Quick Talk. Gollnhofer Gábor

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

AMI KIMARADT AMI KIMARADT

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Szolgáltatás és Minőségfejlesztés a Corvinus Egyetemen Kiss György János Mogyorósi János

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

CTools és Panels pluginok

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

telepítési útmutató K&H Bank Zrt.

CMS-en túli webes megoldások

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán

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

.NET alkalmazások telepítése

2. lépés: openssh szerver telepítés sudo apt-get install openssh-server

BaBér bérügyviteli rendszer telepítési segédlete év

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Fejlesztői szemmel at K

Moodle IPSZILON előadás március 23.

Konfigurációmenedzsment

Átírás:

Eclipse alapú technológiák (VIMIAV92) Build keretrendszerek Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Tesztek készítése o Többféle módszertan o Cél: hibák szűrése Probléma Múltkor o A jó tesztelés időigényes o Fejlesztő nem fogja a saját gépén fuoatni 2

Mozilla Firefox 17 plasorm 12 branch forrásnak 1200 build and teszt gép o Fordítási idő: 12.40 óra o Tesztelési idő: 54.48 óra o CPU időben: 2.79 nap (!) o Korábban release: 10 nap Forrás: hop://relengo]henerds.blogspot.com/2010/11/mozilla- versus- eclipse- build.html 3

Eclipse Release Train Projektek szinkronizált kiadása o 2006 óta o Évente 1 nagy kiadás (új funkciók) 2 service release (javítások) 4

Projektek száma 45 40 39 35 33 30 25 20 21 23 15 10 10 5 0 Callisto (3.2) Europa (3.3) Ganymede (3.4) Galileo (3.5) Helios (3.6) 5

Projektméret (MLOC) 35 33 30 25 24 20 15 17 18 10 5 6 0 Callisto (3.2) Europa (3.3) Ganymede (3.4) Galileo (3.5) Helios (3.6) 6

PlaSorm o Windows Win32 32/64 bit Sok változat Early access WPF port is pillanatnyilag nem fejleszlk o Linux GTK 32/64 bit GTK PPC/PPC64 bit Molf o Mac OSX Carbon 32 bit Cocoa 32/64 bit 7

Csomagok o Java o Java EE o Plug- in developer o C/C++ o Modeling o PHP o Sok változat 8

Eclipse build előállítása (2009.11.) Forrás beszerzése Digitális aláírás Director használata P2 repo- k előállítása Kiadások csomagolása Unit tesztelés 20 perc 1 óra 14 perc 20 perc 4 perc 30 perc 6 óra 40 perc Forrás: hops://bugs.eclipse.org/bugs/show_bug.cgi?id=293830#c11 9

Eclipse Release Train Sok projekt, bonyolult folyamat A rendszeres release komoly kihívás Shipping is hard, that s why we do it 7 5mes a release. 10

Folytonos integráció

Folytonos integráció Con5nuous Integra5on is a so=ware development prac5ce where members of a team integrate their work frequently, usually each person integrates at least daily - leading to mul5ple integra5ons per day. Each integra5on is verified by an automated build (including test) to detect integra5on errors as quickly as possible. Mar5n Fowler hjp://www.mar5nfowler.com/ar5cles/con5nuousintegra5on.html 12

Folytonos integráció feladatok Forráskód tároló o Rendszeres commit o Minden commit fordítása Fordítás o Automalkus o Öntesztelő o Gyors Tesztelés az éles környezet másolatában Automalkus közzététel o Kód elérhető o Eredmények elérhetőek 13

Reprodukálható Eredmények o Akár az egy évvel korábbi build is megismételhető Integrációs fázis rövidebb o Hamar kezdődik o Integrációs hibák előjönnek Nem csodaszer! o A jó kódot meg kell tervezni 14

Conlnous Build ypusok o Minden commit után fut o Legyen gyors - > minimális sanity check Nightly o Minden éjjel fut o Csomagolás o Nem gond, ha pár óra Release build o Teljes tesztelés o Lehet nagyon hosszú is! 15

Főbb lépések Pre- build lépések Build- elés Tesztelés Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 16

Főbb lépések Pre- build lépések Build- elés Tesztelés Források beszerzése SVN, CVS, fájlrendszer Környezet előállítása vagy alaphelyzetbe állítása Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 17

Főbb lépések Pre- build lépések Build- elés Tesztelés Stalkus analízis Függőségek kezelése Fordítás Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 18

Főbb lépések Pre- build lépések Build- elés Tesztelés BVT (Build Verificalon Test) Gyors ellenőrzés Részletesebb tesztelés Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 19

Főbb lépések Pre- build lépések Build- elés Tesztelés Kódolási sylus Javadoc kommentek KódfedeOség Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 20

Főbb lépések Pre- build lépések Build- elés Tesztelés Teszteredmények Kód fedeoségi mérőszámok Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 21

Főbb lépések Pre- build lépések Build- elés Tesztelés Hiba esetén Adminisztrátornak Fejlesztőknek Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 22

Főbb lépések Pre- build lépések Build- elés Tesztelés Telepítő készlet MSI, P2 Update site Archiválás Egyéb ellenőrzések Csomagolás / publikálás Értesítések küldése Jelentések készítése 23

Build végrehajtó motorok

Make o C/C++ Apache Ant Fordító eszközök o Make fájl Java- hoz, XML alapokon Apache Maven o Egységes forrás letöltés és fordítás o Funkcionalitásában hasonlít az Ant- hoz 25

Ant Java könyvtár és parancssori eszköz Rugalmas, bővíthető Fő felhasználási terület: o Java alkalmazások build- elése 26

Project o Build fájlonként egy Target o Végrehajtandó taszkok egy halmaza o 1..* o Egymástól függhetnek o Pl. compile, deploy Task o Végrehajtható kód o Pl. javac, copy, junit, exec, signjar, mail Ant alapfogalmak 27

További elemek Név érték párok (properles) <property name="build" location="build"/> <target name="init"> <mkdir dir="${build}"/> </target> Útvonalak, classpath <classpath> <pathelement path="${classpath}"/> <pathelement location="lib/helper.jar"/> </classpath> Bármely projektelemnek lehet ID- ja o Minden hivatkozható 28

Példa: TeszSuOatás Ant segítségével Szükséges: o junit.jar o ant- junit.jar AlapértelmezeO helye: ANT_HOME/lib junit.jar megadása: o ANT_HOME/lib könyvtárba másolással, vagy o -lib argumentummal, vagy o <junit> taszk <classpath> elemében 29

Példa: TeszSuOatás Ant segítségével <project default="test" > <path id="classpath.test"> <pathelement location="x/y/junit.jar" /> <pathelement location="${build}" /> </path>... <target name="compile- test"> <javac srcdir="${tst- dir}" >... <classpath refid="classpath.test"/> </javac> </target> 30

Példa: TeszSuOatás Ant segítségével... <target name="test" depends="compile- test" > <junit printsummary="yes" haltonfailure="yes"> <classpath refid="classpath.test" /> <formatter type="plain" /> <test name="hu.bme.mit.junit. bookstore.book.test.bmlisttest" haltonfailure="no" outfile="result" > <formattertype="xml"/> </test> </junit> </target> 31

Maven ÖsszeteOebb build RögzíteO fordítási folyamat o Kevesebb kódolást igényel o DE: Meg kell érteni a konvenciókat Függőségek (depenency) kezelése! 32

Leíró Maven o pom.xml: projekt modell o Archeypus: minta o Eltérések felsorolása a mintától Fordítás o Megnevezünk egy célt (pl. teszt, csomagolás) o Végignézi az összes szükséges fázist 33

Maven életciklus és célok 34

Példa: Teszt fuoatás Mavennel Projekt struktúra: my- app o pom.xml o src main java» com mycompany app App.java o test java com» mycompany app AppTest.java 35

Példa: Teszt fordítás Mavennel pom.xml <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema- instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http:// maven.apache.org/xsd/maven- 4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.mycompany.app</groupid> <artifactid>my- app</artifactid> <packaging>jar</packaging> <version>1.0- SNAPSHOT</version> <name>maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid><artifactid>junit</artifactid> <version>4.8.0</version> <scope>test</scope> </dependency> </dependencies> </project> 36

Igazi vallásháború Ant vs. Maven o Lásd még.net vagy Java, stb. Ant o Minden kézben tartható o Egyedi projektnél hasznos Maven o Convenlon over configuralon o Minden Maven projekt hasonló o Függőségkezelés Ld. még letöll az internetet 37

Build ütemezés Jenkins (a.k.a. Hudson)

CI szerverek Apache Conlnuum (Java) o XML szerkesztés + webes UI CruiseControl (Java,.NET, Ruby) o XML szerkesztés Jenkins/Hudson (Java, de kiterjeszthető) o Webes UI TeamCity (Java,.NET, Ruby) o Fizetős 39

Java szervlet alapú Jenkins o Tetszőleges alkalmazás szerveren fut Plug- in alapú, bővíthető Frissítések keresése automalkus Gyorsan bele lehet tanulni Nem végez tényleges fordítást o Időzítés o Menedzselés Több folyamat, köztük akár függőségekkel 40

hops://hudson.eclipse.org/hudson/ 41

Hudson munkafolyamat Trigger Pre- build Build Post- build 42

Hudson munkafolyamat Trigger Pre- build Build Post- build Kézi IdőzíteO Verziókezelő rendszer változása Függő job befejeződése Egyéb (bővíthető) 43

Hudson munkafolyamat Trigger Pre- build Build Post- build Opcionális Források beszerzése 44

Hudson munkafolyamat Trigger Pre- build Build Post- build Tényleges fordítási lépések BeépíteO támogatás Ant Maven Shell script Bővítéssel Buckminster 45

Hudson munkafolyamat Trigger Pre- build Build Post- build Opcionális Archiválás Publikálás Függő build- ek indítása Értesítések 46

Blame mail 47

Metrikák, trendek 48

KódfedeOség trendek 49

Egyéb metrikák (Sonar) 50

Mi kell? o Automalkus fordítás o Automalkus integráció o Automalkus tesztelés Mit ad? o Forráskód összegyűjtés o Ütemezés o Közzététel Jelentés Fordítás eredménye Eredmények 51

Folytonos integráció és Eclipse

Probléma 53

Probléma (folytatás) Mivel kezdjek? 54

Probléma (folytatás) Töltsd le az A, B és C plug- in- okat az XY repo- ból! 55

Probléma (folytatás) Megvan, de nem fordulnak 56

Probléma (folytatás) Ja igen, még le kell tölteni az YX repo- ból a D és E plug- in- okat is. 57

Probléma (folytatás) Még mindig hiányzik valami. 58

Probléma (folytatás) Oh, hát persze, a D- nek csak az 1.2- es változata jó, és másold be F- et a plugins könyvtárba, majd 59

Eclipse plug- inek automalkus fordítása Headless fuoatás o Parancssor o Felhasználói beavatkozás nélkül! Target plasorm o Kézzel összeállítoo, vagy o A build során épül 60

Ant4Eclipse o PDE/Build kikerülése Pax, Tycho Függőségek kezelése o Maven felkészítése OSGi függőségekre PDE headless build o Ant szkriptek generálásával Lényegében lehetetlen a megértés/kézi javítás Buckminster 61

Buckminster

Eclipse Tools Project Buckminster Magas szintű eszköz o Meglévő eszközök feleo fut Ami Eclipse- ben fordítható, az Buckminster- rel is o Leírók segítsége XML dokumentumok Részben generáltak Többihez szerkesztési támogatás o Függőségek kezelése 63

IDE támogatás o Leírók szerkesztése o FuOatás Felhasználási módok Headless mód Hudson/Jenkins plug- in 64

Képességek Forrás beszerzés Fordítás o PDE/Build, Ant, Maven Csomagolás o P2 update site o Target plasorm 65

Alapfogalom: Komponens Egy egység (absztrakció) o Feature, plug- in o Van neve, ypusa, verziója Műveletek értelmezhetőek rajta o Néhány előre definiált (pl. site.p2, bundle.jar) o Saját műveletek 66

Leírók CQUERY MSPEC RMAP BOM {Materialize} (Remote) Component Loca(ons Component1 Component2 Component3 {Resolve} CSPEC CSPEC CSPEC Target Host Materialized Component Assembly 67

Component Query Mit? CQuery o Legfelső szintű komponens azonosítója o A függőségeket majd feloldja a Buckminster 68

Cquery szerkesztő 69

Adatlekérdezés Component Query o Mit kell megszerezni? o Azonosító + Resource map Opcionális paraméterek o Forrás vagy bináris? o Branchek/tagek, stb. o Release/Nightly build repository 70

RMap Resource Map Honnan? o P2 update site o Lokális könyvtár o SVN, CVS, Git o Maven o Target plasorm o Workspace o URL 71

Resource map példa 72

CSpec Component Specifica5on Generált Ebben szerepelnek pl. a komponensen elvégezhető műveletek is Saját kiegészítések: o CSpeX (CSpec extension) 73

BOM Bill Of Materials Generált Konkrét helyek és teendők listája 74

MSpec Materializa5on Specifica5on Mit hova tegyen? o Workspace o Target plasorm o AdoO könyvtár Alapértelmezés 3.6 óta: o Források workspace- be o Binárisok target plasormba o Ritkán kell testreszabni 75

Buckminster - összefoglalás ÖsszegyűjtöOe a komponenseket Definiálta a műveleteket Innentől jöhet o Tényleges build o Tesztek fuoatása o 76

Segédanyag: BuckyBook Eclipse Buckminster, The Definilve Guide o hop://www.eclipse.org/downloads/download.php? file=/tools/buckminster/doc/buckybook.pdf o 271 oldalas dra] 77

Maven/Tycho

Maven POM egyszerű Maven Tycho o Manifest- first megközelítés o Cserébe egy beállítás több helyen is lehet Létezik mintaprojekt o Minerva projekt Target plasorm Fordítás Tesztek o hops://github.com/caniszczyk/minerva 79

Három lépés: Tycho: Kipróbálás o Maven telepítés o git clone git://github.com/caniszczyk/minerva.git o mvn - Dskip- ui- tests=true clean install 80

Összefoglalás

Teszt automalzálás Összefoglalás o ÖsszeteO folyamat o Sok lépés o Külön- külön automalzálandó Build folyamat o Kötelező o Reprodukálhatóság o Jó eszköztámogatás o DE: Egyszer össze kell állítani 82

hop://geekandpoke.typepad.com/geekandpoke/2010/10/geekpokes- list- of- best- praclces- today- conlnuous- integralon.html 83