Figyelem: A gyakorlatok során törekedjen mindenki arra, hogy professzionális jellegű munkát végezze! Például kerüljük az asdfg commit megjegyzéseket, nem sokkal több idő azt írni helyette, hogy Add acceleration feature vagy Fix #5 (további tanácsokat commit megjegyzések írásához lásd itt vagy itt).

Környezet kialakítása

A gyakorlatok során sokszor IDE helyett parancssori eszközöket fogunk javasolni, mert egyrészt egy CI környezetben azokat lehet csak használni, másrészt ilyen bevezető jellegű feladatoknál többet lehet belőle tanulni.

Mivel most mindenki egymástól függetlenül fogja elvégezni ugyanazokat a kiegészítéseket és javításokat ugyanazon a nyílt forráskódú projekten, ezért a bevett módszer (fork) helyett mindenki saját magának készít egy tárhelyet (repository) azonos tartalommal, amin tud dolgozni.

  1. [local] Indítsa el a mérésvezető által javasolt virtuális gépet és tekintse át a labor elvégzéséhez szükséges eszközöket.
  2. [web] A saját GitHub felhasználója alá készítsen egy ivt-lab nevű publikus tárhelyet és állítsa is inicializált állapotba (Initialize this repository with a README). Ezen a tárhelyen kell majd végig dolgozni a labor folyamán.
  3. [local] Klónozza le helyileg a saját tárhelyét a virtuális gépre (git clone parancs).
  4. [web/local] Töltse le ZIP-ként a közös projekt tartalmát, és másolja bele fájlszinten a saját lokális tárhelyébe a ZIP-ben lévő ivt-lab-master könyvtár tartalmát (maga a könyvtár nem kell!).
  5. [local] Nézze meg, hogy milyen fájlok nincsenek jelenleg még verziókezelés alatt (git status), adjon minden új vagy módosított fájlt hozzá az aktuális indexhez (git add), véglegesítse azokat (git commit), majd küldje át az új tartalmat a GitHub-on lévő tárhely példánynak (git push).
  6. [web] Ellenőrizze a GitHub tárhelyén, hogy a fájlok sikeresen megjelentek-e!

Megjegyzés: ha van van kapcsolva a two-factor authentication a felhasználóra, akkor előbb egy access tokent kell készíteni, amivel be lehet jelentkezni a parancssorból.

Travis CI feladatok

A saját Git tárolónkban lévő projekt fordítását és tesztelését végezzük el a Travis CI segítségével.

  1. [web] Jelentkezzen be a Travis CI (http://travis-ci.org) oldalára a GitHub felhasználójával.
  2. [web] A profilja alatt keresse meg az előbb létrehozott projektet és kapcsolja be rá a folytonos integrációt!
  3. [local] Készítse el a projekthez szükséges .travis.yml fájlt és adja hozzá a Git tárolójához, hogy felkészítse a projektjét a Travis CI segítségével történő fordításra:

    dist: xenial
    language: java    
    jdk:
      - openjdk11
    cache:
      directories:
      - $HOME/.m2
    Ez egy Maven-alapú Java projekt, így az alapértelmezett beállítások elegendők (language: java). A jdk segítségével adhatók meg különböző JDK verziók. A cache segítségével elmenti a letöltött függőségeket, így a következő fordítás során azt már nem kell újra letölteni.
  4. [local] Véglegesítse és töltse fel a változásokat (Commit and push). Most már a Travis tud arról, hogy hogyan kell kezelni ezt a projektet.
  5. [local] Változtasson valamit a README-ben, töltse fel ezt is, ezáltal kezdeményezve már egy új Travis fordítást.
  6. [web] Ellenőrizze és értelmezze a Travis webes felületén a fordítás eredményét. Amennyiben megfelelően végezte el az előbbi feladatokat a projektnek le kell fordulnia, ugyanakkor az egyik egységtesztnek hibát kell jeleznie (lásd következő feladat).

GitHub Flow feladatok

A Travis által felfedett egységteszt hiba abból fakad, hogy egy funkció még nincs teljesen implementálva a kódban (torpedó ALL tüzelési módja). Ennek kijavítását egy GitHub Flow munkafolyamat mentén végezze el.

  1. [web/local] A Travis kimenete és a forráskód vizsgálata alapján határozza meg a teszt hibájának az okát.
  2. [web] Definiálja pontosan az új funkciót, az elvégzendő implementációs feladatot és ehhez hozzon létre egy hibajegyet (Issue) a GitHub webes felületén.
  3. [web] Hozzon létre egy fejlesztési ágat (branch) ezen implementációs feladatok elvégzéséhez.
  4. [local] Töltse le a távoli tárolót (pull) és váltson a megfelelő ágra (checkout).
  5. [local] Végezze el az implementációt és tesztelje azt egy helyi futtatás keretében (mvn test).
  6. [local] Véglegesítse és töltse fel (commit and push) a változásokat a távoli tárolóba.
  7. [web] Az így kapott változások alapján hozzon létre egy pull request-et a webes felületen, hogy megvitatható legyen a módosítás a fejlesztőcsapaton belül. A pull request szövegébe írjuk bele, hogy "Fix #1", ezzel jelezve, hogy az 1-es hibajegyet fogja majd lezárni.
  8. [web] Vizsgálja meg a létrehozott pull request-et, és ha rendben találja, akkor fogadja el, olvassza vissza a master ágba és törölje ki a fejlesztésre használt ágat. (A pull request nyújtotta átvizsgálási lehetőségekkel a következő gyakorlaton foglalkozunk majd.)
  9. [local] Töltse le a távoli tárolóból a változásokat és vizsgálja meg őket a git log utasítás segítségével.

További információ:

Konfliktus előállítása összeolvasztás esetén (Merge conflict)

  1. [local] Hozzon létre parancssori eszközökkel két új ágat. (branch-A, branch-B).
  2. [local] Váltson át a branch-A-ra, szerkessze egy adott fájl adott sorát, majd véglegesítse a változásokat (commit).
  3. [local] Váltson át a branch-B-re, szerkessze ugyanazon fájl ugyanazon sorát kicsit máshogy, majd véglegesítse a változásokat (commit).
  4. [local] Váltson vissza a master ágra és olvassza (merge) bele előbb az egyik, majd a másik branch-et. Ellenőrizze az összeolvasztás művelet eredményét, oldja fel a keletkezett konfliktust és véglegesítse a feloldás során tett módosításokat.

A gyakorlat befejezése

Véglegesítsen minden változást, töltse fel a távoli tárolóba és ellenőrizze, hogy a Travis fordítás is helyesen lefut-e.

Figyelem: A saját GitHub tárhelyet ne törölje, a további gyakorlatokon is azon fog dolgozni. A lokális klón viszont törölhető.