Folyamatos integráció Flashcards

1
Q

Mi az a folyamatos integráció? (Continuous Integration)

A

Egy szoftverfejlesztési gyakorlat, amely során a csapat tagjai rendszeresen integrálnak, legalább egy integráció / nap. Minden integráció egy automatikus buildelésből áll, beleértve a tesztek futtatása. Jobb minőségű szoftvert biztosít ez a gyakorlat, mert a hibák rögtön kibuknak.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

CI fázisai

A
  1. forráskód tárolása
  2. verziókezelő
  3. build
  4. statikus kódanalízis
  5. automata unit tesztek futtatása
  6. kód lefedettség ellenőrzése
  7. alkalmazás elkészítése
  8. teszt adatok felállítása, teszt környezetbe helyezés
  9. funkcionális tesztek
  10. reportok készítése
  11. csapatnak elküldeni, akik erre tudnak reagálni.

(Source -> Build -> Test -> Deploy)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Source

A

A CI/CD pipeline alapköve. A forráskód a fejlesztők által folyamatosan frissítve van egy verziókezelő rendszer segítségével. Minden módosítás trackelve van és bármikor visszaállhatnak előző verziókra. A Source stage-ben a commitok, merge requestek triggerelik a következő fázist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Build

A

Egy kritikus szakasza a pipeline-nak mivel itt lesz a forráskódból futtatható állomány.
Ebben a fázisban kerülnek kezelésre a függőségek, és a statikus kód analízis is lefut. Ha a build elhasal, akkor a fejlesztőknek ezt jelzi a rendszer, illetve a hiba okát is. A build után előáll egy artifact, vagy akár több is ami a következő fázisba átadható.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Test

A

Ebben a fázisban futnak le az automatikus tesztek amelyek garantálják a termék minőségét.
Tesztek amik lefutnak:
* Integrációs tesztek
* Funkcionális tesztek
* Teljesítménybeli tesztek
* Biztonsági tesztek

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Deploy

A

A pipeline utolsó fázisa, ahol a program kitelepítésre kerül így elérhetővé válhat a felhasználók számára.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

CI szabályai

A
  • közös repository használata
  • állandó integrálás a fő branchről
  • automata gyors build és automata unit tesztek a build részeként
  • DEV és UAT környezet a develop branch klónjaként léteznek
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Folyamatos szállítás (Continuous Delivery)

A
  • A termék mindig készen áll arra, hogy szállítva legyen UAT/QA-ra.
  • Folyamatos szállítás és telepítés: UAT-ra.
  • Batched deploy PROD-ra.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Folyamatos kitelepítés (Continuous Deployment)

A

Automatikus kitelepítés PROD-ra

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Continuous Delivery és Continuous Deployment különbség

A

Continuous Deliverynél a PROD-ra való telepítés manuális addig a Continuous Deployment-nél ez automatikus.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

CI Stack komponensek és eszközök

A
  • verziókezelő (pl git)
  • vcs manager (pl gitlab)
  • software project manager (pl Gradle)
  • CI servers (pl Jenkins)
  • repository management (pl Nexus)
  • code review, dokumentáció, hiba keresés. (nem fő része)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Jenkins

A

Ingyenes, pluginokkal tudjuk kiegészíteni, skálázható. Ugyanazok a pluginek megvannak, mint a Gradle-höz is.
Beállításai: header, forrás kód, mire triggerelődjön, gradle wrapper, script beállításai, postbuild akciók beállításai (pl a JUnit teszt eredmények reportolása).
Úgynevezett agentek (slaves) léteznek akik a buildelést, tesztelést végzik így a master servert hagyják más dolgokkal foglalkozni. Skálázhatóságot segítik elő.
Telepítés a Jenkinssel: kontrollálja a folyamatot, nexusból letöltés, cél környezetbe feltöltés, megállítja, újraindítja a folyamatot, ha kell.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Repository Management

A

Szerver alkalmazás (Nexus), bináris komponenseket tároljuk itt (artifactokat).
Azért is használjuk, mert az artifactokat nem akarjuk publikálni.
Nexus karakterisztika a letöltések számát csökkenti, jobb build stabilitás, mert nem függenek külső repotól, snapshot repokkal való kapcsolat magasabb teljesítmény érdekében.
Kontrolálhatjuk az engedélyezett artifactokat. Központi tároló, ahonnan a többi fejlesztő le tudja szedni az artifactokat. Kényelmesebb használat, mert nekünk már nem kell buildelni.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Repository management típusai

A

● hostolt
● proxy (távoli szerverre), hogy a saját gyorsabb legyen
● virtual: adapter különböző repok számára.
Repository csoportok: Sorrendbe tehetők, előírás, hogy ki írhatja elő.
Snapshot: szeretném megosztani valakivel, hogy hogy állok, de még nincs kész. Van redeploy, akárhány verzió lehet.
Release: nincs redeploy, tehát ha kint van az 1.0 nem lehet még egyszer 1.0. Gradle publish-al lehet távoli repoba feltölteni, ha megadjuk ennek címét.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly