Önálló rész - noramehesz/gyak GitHub Wiki

Feladatként azt kaptam, hogy az egyik alkalommal bemutatott példaalkalmazáshoz rakjak össze Travis vagy Jenkins segtségével egy automatizált bulild folyamatot( a Jenkinst választottam) , majd hogy commit után buildelődjön a projekt végül pedig , hogy a buildet futtatni lehessen külön branch-ekre és pull requestekre. Röviden összefoglalva ott tartok, hogy git push parancsra buildelődik, már csak a a feladat második részét kéne megvalósítani. Ehhez annyit csináltam, hogy a git-es repobana webhook beállításakor kiválasztottam, hogy mi triggerelje, az alábbiak:


Dokumentáció

A feladatom az egyik kozuktáció alkalmával bemutatott példaprogramhoz való automatikus build folyamat elkészítése, továbbá, hogy a build triggerelődjön git commit-ra/push-ra és , hogy futtatni lehessen külön branch-ekre , és pull requestek-re. A folytonos integráció (continuous integration, CI) azzal segíti a fejlesztők közötti interakciót, hogy központilag és rendszeresen végzi el az integrációt. Így az esetleges hibák hamar kiderülnek, illetve nem az összes fejlesztő feladata ennek javítása.

Elsőként egy saját git-es repository-ba töltöttem fel a programot.

Ezek után a félév során már tanultak alapján kezdem hozzá a CI folyamat összeállításához, Jenkins-t használva. Dockerből futtatam a jenkins-t az alábbi paranccsal:

docker run -d -v jenkins_home:/var/jenkins_home -p 802:8080 jenkins/jenkins:lts

A localhost:802-n boöngészőből értem el a Jenkins felületét, installáltam az auth secret megadásával, mely a létrejött container logs-jában található.

A Jenkins megfelelő beállításaival a build sikeresen lefutott. Ezek részleteseben: Job létrehozásánal a Freestyle projektet választottam ki.

A Job általános beállításánál:

Verziókezelés:

Build Triggerek:

Itt már látható a GitHub Pull Request Builder lehetőség, ez alapból nem található itt, a későbbiekben lesz szó erről.

Build és Post-build Action:

Itt került bállításra, a build környezet, mely egy gradle builder, ezt külön a Jenkis Kezelésén belül a Global Tool Configuration-nál kell beállítani. Post-build Actionnál pedig már itt beállításra került, hogy a git-es felületen is megjelenjenek a build eredményei.

Ahhoz, hogy a build git push-ra triggerelődjön webhook-ot kell hasznáni. Ezt a Git felületén kell beállítani:

Ezáltal a Job beállításain belül a "GitHub hook trigger for GITScm polling" lehetőség kiválasztásával a build a webhook-ban beállított eseményekre tirgger-elődik.

Az igazi kihívást a feldat során az jelentette, hogy a Pull Requestre és külön branch-ekre is megvalósítható legyen a trigger. Először próbálkoztam azza, hogy a git-es webhook-nál kiválasztam a pull request eventet, de ez nem volt működő megoldás. Külön branch-nél pedig a Jenkis-en belül a job beállításánál lehet választani brach-t , de ez sem a legszebb megoldás erre, mert ha egy branh-ből push-olunk, az amiatt úgyis triggerelődni fog.

Első próbálkozásként a jenkins GitHub Pull Request Plugin plugin használatával próbálkoztam. Ez egy elég elvault plugin, de írták, hogy ettől függetlenül aki szeretni az használhatja, mert semmi hátránya nem származik belőle, nekem viszont ezt nem sikerült működésre bírnom. A hivatalos dokumentációjában leírtak alapján állítottam be a dolgokat, ezek: A plugin installálása után a build trigger-eknél megjelenik kiválasztható lehetőségként:

Credentials-nél is szükség van egy github-on generáltatott access token secret text-ként való felvételére, amellyel a github api és a jenkins között jön létre kapcsolat.

Ezen nem jutottam túl. Rengetek ezzel foglalkozó kérdésre adott választ böngésztem át, de mivel azok elég égiek voltak, így sok minden változott azóta mind Jenkins-es és GitHub-on belül is. Az alábbi képen a kapcsolat létrejött, viszont enne ellenére is csak Anonymus connection-t lehetett kiválasztani a trigger-ek beállításánál.

Ez itt megrekedt, de kaptam segítségként azt , hogy inkább próbáljam meg ezzel. Először készítettem a Job-ot, mely Multinrach Pipeline volt, de ez nem egészen az volt, ami nekem a feladatom lett volan. Az oldal alján a Pull Request támogatás alatt a GitHub Branch Source plugint javasolja az író. Ez a plugin default installálva volt a Jenkins-emhez.

Ez a plugin lehetőséget nyújt olyan projektek kézítéséhez, melyek a github-os repository struktúráján alapulnak. A Job létrehozásakor a Github organization-t kellett kiválasztani. Ezután meg kellett adni, hogy melyik repository-t akarjuk használni, és a Scan credentials-nál meg kellett adni az ehhez szükséges username-password párost, hogy elérhesse. Ezek mentése után rövid időn belül megtalálta a repo-t a jenkins, és az azon belüli branch-eket is.

A pull request neve itt azért van áthúzva, mert már close-olva lett.

A GitHub-on is megjellenek a build-ek eredméynei:

A kis zöld pipa jelzi a sikerességét a build-nek, de ha arra rákattintunk a részleteket is meg tudjunk tekinteni.