Azure és .NET Core alapú GitHub integrációs alkalmazás továbbfejlesztése

2020-2021 tavasz

Szoftver

Téma leírása

Téma

A tanszéken oktatási eszközként támaszkodunk a GitHub platformra. A GitHub nagyon jó bizonyos célokra, de például egy házi feladat beadásához munkafolyamati segítséggel nem rendelkezik. Munkafolyamat alatt olyan szabályokat értünk, amelyeknek a betartását elvárjuk, például, hogy a master/main ágra ne kerüljön kommit. Ugyan a GitHub az un. branch protection rule-ok segítségével képes az ágakra megkötéseket tenni, ezen szabályokat létre kell hozni.

Egy hasonló példa a hallgató - laborvezető összerendelése. A GitHub nem ismeri azt, hogy egy hallgató egy laborvezetőhöz "tartozik", és hogy a házi beadását ezen laborvezetőhöz kell rendelnie. A hozzárendelést (például egy pull request-ben) támogatja a GitHub, de nem tudja ellenőrizni, hogy a jó ember kerül-e hozzárendelésre.

A fentiekhez hasonló "kényelmi" ellenőrzésekhez egy GitHub integrációs alkalmazást használunk, amely Azure Function-ben fut. Az alkalmazás értesül bizonyos eseményekről, és ezekre reagál - például egy házi feladat repository létrehozásakor alkalmazza a szükséges branch protection szabályokat. A feladat ezen rendszer továbbfejlesztése.

Konkrét feladat

A jelenlegi megoldás egy Azure Function-ben futó .NET Core alkalmazás, amely minden GitHub-tól érkező eseményre közvetlenül reagál. Az alkalmazás számos konfigurációval rendelkezik, melyek egy része be van égetve az alkalmazásba (pl. a létrehozandó branch protection rule szabály), más része környezeti változókon keresztül kerül a futó alkalmazásba, amely viszotn nem alkalmas komplex konfigurálásra.

Attól függően, hogy milyen képzés milyen tárgyáról van szó, pontosan megbeszéljük a feladatokat az alábbiak közül.

  1. Tesztek készítése az alkalmazáshoz. Jelenleg nincsenek automata tesztjeink, így minden módosítás az "éles" rendszer helyes működését veszélyezteti. A feladat kidolgozni a tesztelhetőséget.
  2. A konfigurációk JSON/YAML formátumban egy publikus GitHub repository-ból kerüljenek letöltésre. Ez lehetőséget ad arra, hogy komplexebb konfigurációkat írjunk le.
  3. Előbbi konfigurációs repository leváltása nem publikusra. A repository egy-egy GitHub organization alatt konvenció szerinti névvel létezik, nem publikus, elérése GitHub API-n keresztül történik. A feladat része kitalálni, hogyan lehet az elérést megoldani.
  4. Művelet kezdeményezése GitHub komment formájában: adott utasítás szintaktikával rendelkező üzenet felismerése, ellenőrzése, hogy a kezdeményező felhasználó jogosult-e arra, majd adott művelet elvégzése (pl. pull request jóváhagyása és mergelése).
  5. Házi feladat eredmény feldolgozása és rögzítése. Az eredmények CI formájában futó alkalmazásból jönnek, amelyet fel kell dolgozni, majd eltárolni egy adatbázisban. A feladat kihívása annak garantálása, hogy az eredmény authentikus, valóban a CI rendszertől jön, és nem meghamisítható.
  6. Új Azure WebApp készítése az előbbi pontban rögzített eremények eléréséhez és exportálásához.
 

Jelentkezés

A témára való jelentkezés előtt egyeztessünk. Keress Teams-en vagy emailben, és kérlek, kezdd azzal, hogy miért ez a téma érdekel téged.

Maximális létszám: 2 fő