#Jenkins haladó
A snippetben megmutatom, hogyan lehet futtatni a unit teszteket Jenkins környezetben.
Beállítások
Ha többmagos környezetben futtatjuk a Jenkins szervert, akkor észrevehető, hogy egy komolyabb fordítás alatt, milyen sokat kell várni a Konzol eredményére. A windows vezérlőpultjában látható, hogy a Jenkins csak egy magon / feldolgozóegységen fut, így nincs kihasználva az összes mag. „Jenkins Kezelése” -> „Rendszer Beállítások” -> „A végrehajtók száma” alatt lehet állítani a kihasználtságon. Ebben az esetben ne felejtsük el a ’–j A’ parancsot a shell scriptből sem (A db feldolgozó egység esetén). Ahhoz hogy unit teszteket tudjunk futtatni, szükségünk van megfelelő plugin(ok)ra. Ilyenek például a „JUnit Plugin”, „qTest Plugin” vagy az „xUnit Plugin”. (Az xUnit Plugint fogjuk használni a snippet példában.) A szükséges pluginokat ezután telepíteni kell, és a jenkinst újraindítani a következő URL-el egyszerűen: http://localhost:8080/restart .
Fontos tudni, hogy a Jenkins létrehoz egy mappát a számítógépeden, ahova letölti az aktuális git working directoryt, ebben a mappában helyezi el a legenerált fájlokat és itt keresi a relatív URL-ben megadott paramétereket. Így fog kinézni az URL: „\Jenkins\jobs\Project_neve\workspace”. Úgy lehet leellenőrizni, hogy tényleg jó git repositoryn dolgozik a Jenkins, hogy megnézed milyen fájlok vannak a workspaceben. Ez leellenőrizhető a fájlrendszerben a megadott URL alatt, illetve a Jenkins kezelőfelületén is a „Munkaterület” gomb alatt.
Build
A Build beállítások alatt megadható, hogy mikor töltse le a Jenkins a repository-t és futtassa a unit teszteket. Nekem célszerű volt éjfél utánra állítani ezt a paramétert. A kérdőjel alatt látható, milyen szintaktia szerint lehet paramétereket felvenni.
Windows alatt célszerű „Execute Windows Batch command”-t választani így egyszerű shell parancsokkal futtatható a build. A commands.cmd fájlt az előbb említett workspace-be kell helyezni, ugyanis a Jenkins mindent a munkakönyvtárhoz képest relatívan keres
A példámban egy Qt-C++ alkalmazásnak a unit tesztjeit szeretném futtatni. A cmd fájlban három sor található. Először futtatom a Qt qmake.exe-jét. Persze meg kell a Jenkinsnek adni az elérési URL-t. Ezek után futtatom a mingw make.exe-jét. Ezután futtatható a generált UnitTests.exe fájl. A parancsok a fejlesztőkörnyezet „Compile Output” részében látható, hogyan is futtatható a megírt program. Valahogy így néz ki a cmd fájl:
qmake.exe Gitplugin.pro -r -spec win32-g++ "CONFIG+=debug" "CONFIG+=declarative_debug" "CONFIG+=qml_debug"
mingw32-make.exe
UnitTests.exe
A build legvégén a unit tesztek állapotai kiszínezhetők, hogy jobban láthatóak legyenek az eredmények. Ezenkívül az eredményeket érdemes kiírattatni egy XML fájlba, ami a munkaterületre lesz elmentve. Ilyenkor a cmd fájlban a UnitTests.exe sor a következőre változik:
UnitTests.exe -xml -o UnitTestResult.xml
Lehetőség van még Build utáni feldolgozásra. Például e-mailt küldeni, dokumentációt készíteni, vagy az eredményeket egyéb programmal tovább analizálni. Grafikonon is látható a build tendencia:
Egyéb
Fontos még megemlíteni, hogy a buildeléshez szükséges rendszerváltozókat és rendszerútvonalakat nem a Felhasználó „Felhasználói változó”-i közé kell lementeni, hanem a „Rendszerváltozó”-k közé, ugyanis a Jenkins egy másik user nevében fut, így a saját felhasználó számára beállított környezeti változók rá nem lesznek érvényesek. E nélkül elérési hibára vagy jogosultsági problémára fut a Jenkins.
Szerzők, verziók: Almási Péter