A GitHub Actions egy hatékony eszköz a folyamatos integráció (CI) és folyamatos szállítás (CD) automatizálására, amely különösen előnyös a C# és .NET alapú projektek számára. Egy tipikus CI workflow több lépésből áll, melyek meghatározzák, mikor és hogyan történjen a projekt fordítása, tesztelése és telepítése.

Az első lépés a workflow metainformációinak definiálása, amely segíti a folyamat azonosítását a GitHub felületén. Ezt követően a trigger feltételek kerülnek meghatározásra, amelyek a leggyakrabban eseményekhez kötöttek, mint például a push vagy pull request műveletek a "main" ágon. Ezek a feltételek biztosítják, hogy a build és tesztelési folyamat automatikusan elinduljon, amikor a kód módosul.

A munka (job) konfigurálása során megadjuk, hogy mely környezetben fusson a build, jellemzően a legfrissebb Windows környezetben, mivel a .NET Core és újabb verziók gyakran ezt igénylik. A lépések (steps) egymás után hajtódnak végre: először a kód ellenőrzése (checkout), majd a megfelelő .NET verzió telepítése, ezt követi a build futtatása a release konfigurációban, és végül az egységtesztek végrehajtása. Ez a szekvencia garantálja, hogy a kód helyesen összeáll és tesztelt legyen, mielőtt továbbhaladna a fejlesztési folyamatban.

A Visual Studio támogatja a GitHub Actions workflow fájlok automatikus generálását, ami jelentősen egyszerűsíti az integrációt az Azure felhőszolgáltatásokba történő telepítéshez. Ehhez először egy alkalmazást kell létrehozni, például egy Blazor Server projektet, majd a publish varázsló segítségével kiválasztani az Azure App Service célt. Az előre definiált lehetőségek közül a CI/CD GitHub Actions workflow generálása opció automatikusan létrehozza a szükséges YAML fájlt, amelyet aztán testreszabhatunk, például statikus kódelemző eszközökkel, mint a SonarCloud.

A GitHub Actions egy rugalmas, könnyen bővíthető eszköz, amely lehetővé teszi, hogy a fejlesztők a projektjük igényeihez igazítsák a build és tesztelési folyamatokat. A verziók megadásával, további lépések hozzáadásával vagy több job definiálásával a workflow tökéletesen illeszthető a különböző fejlesztési környezetekhez. A GitHub felületén az Actions fülön nyomon követhetők a folyamatok, így azonnali visszajelzést kapunk a build állapotáról és a tesztek eredményéről.

Fontos megérteni, hogy a CI/CD bevezetése nem pusztán egy automatizált folyamat létrehozását jelenti, hanem alapvetően javítja a szoftverfejlesztés minőségét és megbízhatóságát. A rendszeres, automatizált teszteléssel és buildeléssel csökken a hibák száma, és gyorsabbá válik a fejlesztés, miközben az integrációs konfliktusok is könnyebben kezelhetők. Emellett a Visual Studio és Azure integrációja lehetővé teszi a teljes fejlesztési és telepítési életciklus kezelését egyetlen környezetből, ami tovább növeli a hatékonyságot és csökkenti a hibalehetőségeket.

Az automatizálás során különös figyelmet kell fordítani a workflow fájlok verziókezelésére és karbantartására, hiszen a fejlesztési igények és eszközök folyamatosan változnak. Egy jól kialakított CI/CD pipeline nemcsak a build és teszt folyamatokat végzi el, hanem képes integrálódni más minőségbiztosítási eszközökkel, kódstatisztikákkal és biztonsági ellenőrzésekkel, így egy komplex fejlesztési környezetet hoz létre.

Hogyan készíthetünk saját Visual Studio kiterjesztést és osszuk meg másokkal?

Az első lépés a kiterjesztés fejlesztésében a megfelelő projekt létrehozása és konfigurálása. Miután kiválasztottuk a kívánt helyet a projektfájlok mentéséhez, a Visual Studio segítségével könnyedén felépíthetjük a kiterjesztésünk alapját. A projekt struktúrája már készen áll a testreszabásra, és a következő lépés a kívánt funkciók hozzáadása.

A sikeres kiterjesztés készítése érdekében fontos, hogy elindítsuk a projektünket egy új parancs hozzáadásával. Ehhez a Visual Studio SDK által kínált sablont használhatjuk. A jobb egérgombbal kattintsunk a projekt csomópontjára, válasszuk az „Új elem hozzáadása” lehetőséget, és keressük meg a „Command” elemet a C# elemek között. Az új parancsunk neve lehet például „MyCustomTemplate”. Ez a sablon mindent tartalmaz, amire szükségünk van, hogy egy parancsot létrehozzunk: a szükséges .vsct fájlt és a MyCustomCommand.cs fájlt.

A .vsct fájl, azaz a Visual Studio Command Table fájl egy XML fájl, amely a Visual Studio kiterjesztések számára meghatározza a menük, parancsok és egyéb UI elemek struktúráját és viselkedését. Ez a fájl határozza meg, hogy a kiterjesztés hogyan illeszkedik a Visual Studio felületéhez, és milyen módon kell viselkednie a menüknek, gomboknak és egyéb interaktív elemeknek.

A következő lépés az, hogy a MyCustomCommand.cs fájlban meghatározzuk a parancsunk funkcionalitását. Kezdetben egy egyszerű üzenetablak megjelenítése történik, de a kódot testreszabhatjuk bármilyen kívánt funkcióval.

Amikor elindítjuk a hibakeresési módot, egy új példányt nyitunk meg a Visual Studio-ból, ahol a kiterjesztésünket letöltve az Extensions | Manage Extensions ablakban megtalálhatjuk a telepített csomagunkat. A Tools menüben megjelenik az „Invoke MyCustomCommand” lehetőség, ami jelenleg egy egyszerű üzenetablakot nyit meg, amikor végrehajtjuk a parancsot.

Ezzel már kész is a saját kiterjesztésünk első változata, de az igazi kihívás akkor kezdődik, amikor tovább szeretnénk bővíteni és testreszabni a Visual Studio kiterjesztéseinket. A következő lépésben részletesebben ismerjük meg azokat a funkciókat, amelyek segítségével még egyedibbé tehetjük a fejlesztésünket.

A Visual Studio kiterjesztések fejlesztésében rengeteg előre beállított sablont találunk, amelyek segítenek abban, hogy gyorsan és hatékonyan bővítsük az IDE funkcionalitását. Az „Add New Item” ablakban többféle sablont találhatunk, és mindegyik egy-egy különböző területet céloz meg, mint például az editor módosítása, UI elemek hozzáadása, vagy éppen egyedi parancsok és eszköztárak létrehozása.

Az Editor kategória például számos olyan sablont tartalmaz, amelyek segítségével a Visual Studio szerkesztőfelületét módosíthatjuk. Az Editor Classifier például lehetővé teszi számunkra, hogy egyéni szabályok alapján szintaxis kiemelést hajtsunk végre, vagy meghatározzunk bizonyos mintákat a kódban, így segítve a fejlesztőt a kód minőségének fenntartásában. Az Editor Margin sablon például lehetővé teszi, hogy egyéni margót adjunk hozzá az editorablak köré, amely hasznos információkat vagy navigációs eszközöket tartalmazhat, például egy mini-mappa a kód fájlról.

A Toolbox kategóriában olyan sablonokat találunk, amelyek lehetővé teszik, hogy saját vezérlőelemeket hozzunk létre a Windows Forms vagy WPF dizájnfelületein belül. Ezek az eszközök egyszerű UI elemekből akár komplex funkciókat megvalósító komponensekig terjedhetnek.

Ha még mélyebb szintű testreszabást szeretnénk végezni a Visual Studio-ban, akkor a VSPackage sablonok kínálnak lehetőséget arra, hogy az IDE alapvető funkcióit módosítsuk vagy bővítsük. A VSPackage-ek segítségével például új eszköztárakat, parancsokat, vagy akár komplex eszközablakokat hozhatunk létre, amelyek közvetlenül kapcsolódnak a Visual Studio környezetéhez.

A kiterjesztésünket mindig tesztelni kell, hogy biztosak legyünk abban, hogy zökkenőmentesen illeszkedik a Visual Studio környezetébe, és hogy az új funkciók valóban hasznosak és praktikusak a fejlesztők számára. Miután a kiterjesztést tökéletesítettük és minden hibát kijavítottunk, elérkezik az idő, hogy azt közzétegyük. A kiterjesztés terjesztése nemcsak izgalmas, hanem rendkívül hasznos is lehet, hiszen így más fejlesztők számára is elérhetővé válik, és hozzájárulhatunk a Visual Studio ökoszisztémájához.

A kiterjesztések biztonságos megosztása érdekében fontos, hogy a VSIX csomagokat aláírjuk, biztosítva ezzel a megbízhatóságot és a felhasználók bizalmát. A VSIX csomagok segítségével több kiterjesztést is egyesíthetünk, és azok egyszerre kerülhetnek telepítésre, ezzel még könnyebbé téve a fejlesztési folyamatokat.