Megosztás a következőn keresztül:


Javaslatok a folyamatos integráció használatára

Az Azure Well-Architected Framework operatív kiválósági ellenőrzőlistájára vonatkozó javaslat:

OE:04 Optimalizálja a szoftverfejlesztési és minőségbiztosítási folyamatokat az iparágban bevált fejlesztési és tesztelési eljárások követésével. A szerepkör egyértelmű megjelöléséhez szabványosítsa az összetevőkre vonatkozó eljárásokat, például az eszközkezelést, a forrásvezérlést, az alkalmazástervezési mintákat, a dokumentációt és a stíluskalauzokat.

Kapcsolódó útmutató: A build sebességének | javítása Eszközök és folyamatok szabványosítása

A kód fejlesztésével, frissítésével vagy eltávolításával intuitív és biztonságos módszerrel integrálhatók ezek a módosítások a fő kódágba, így a fejlesztők értéket biztosíthatnak.

Fejlesztőként kis kódmódosításokat hajthat végre, leküldheti ezeket a módosításokat egy kódtárba, és szinte azonnal visszajelzést kaphat a minőségről, a tesztelési lefedettségről és a bevezetett hibákról. Ezzel a folyamattal gyorsabban, magabiztosabban és kevesebb kockázattal dolgozhat.

A folyamatos integráció (CI) egy olyan gyakorlat, amelyben a forrásvezérlő rendszerek és a szoftvertelepítési folyamatok integrálva vannak, hogy automatizált buildelési, tesztelési és visszajelzési mechanizmusokat biztosítsanak a szoftverfejlesztő csapatok számára.

Főbb tervezési stratégiák

A folyamatos integráció olyan szoftverfejlesztési gyakorlat, amellyel a fejlesztők a szoftverfrissítéseket rendszeresen integrálják egy forrásvezérlő rendszerbe.

A folyamatos integrációs folyamat akkor kezdődik, amikor egy mérnök létrehoz egy GitHub-lekéréses kérelmet, amely jelzi a CI-rendszernek, hogy a kódmódosítások készen állnak az integrálásra. Ideális esetben az integrációs folyamat számos alapkonfiguráció és teszt alapján ellenőrzi a kódot. Ezután visszajelzést küld a kérelmező mérnöknek a tesztek állapotáról.

Ha az alapkonfiguráció ellenőrzése és tesztelése jól működik, az integrációs folyamat létrehozza és előkészíti azokat az eszközöket, amelyek üzembe helyezik a frissített szoftvert. Ezek az eszközök tartalmazzák a lefordított kódot és a tárolórendszerképeket.

A folyamatos integráció az alábbi műveletek végrehajtásával segíthet a kiváló minőségű szoftverek gyorsabb biztosításában:

  • Futtasson automatikus teszteket a kódon a kompatibilitástörő változások korai észleléséhez.
  • Kódelemzés futtatása a kódszabványok, a minőség és a konfiguráció biztosításához.
  • A megfelelőségi és biztonsági ellenőrzések futtatásával győződjön meg arról, hogy a szoftver nem rendelkezik ismert biztonsági résekkel.
  • Futtasson elfogadási vagy funkcionális teszteket annak érdekében, hogy a szoftver a várt módon működjön.
  • Gyors visszajelzés küldése az észlelt problémákról.
  • Adott esetben üzembe helyezhető eszközöket vagy csomagokat hozhat létre, amelyek tartalmazzák a frissített kódot.

Folyamatok folyamatos integrációjának automatizálása

A folyamatos integráció érdekében szoftvermegoldásokkal kezelheti, integrálhatja és automatizálhatja a folyamatot. Gyakori eljárás a folyamatos integrációs folyamat használata.

A folyamatos integrációs folyamat magában foglal egy szoftver (gyakran felhőben üzemeltetett) részét, amely a következőket biztosítja:

  • Automatizált tesztek futtatására szolgáló platform.
  • Megfelelőségi vizsgálatok.
  • Jelentési.
  • Minden más összetevő, amely a folyamatos integrációs folyamatot alkotja.

A legtöbb esetben a folyamatszoftver a forrásvezérlőhöz van csatolva, így a lekéréses kérelmek létrehozásakor vagy a szoftver egy adott ágba való egyesítésekor a folyamatos integrációs folyamat fut. A forrásvezérlési integráció lehetővé teszi a CI-visszajelzések közvetlen küldését a lekéréses kérelmekről.

Számos megoldás, például az Azure Pipelines vagy a GitHub Actions biztosítja a folyamatos integrációs folyamatok képességeit.

Folyamatok integrálása a forrásvezérlővel

A folyamatos integrációs folyamat integrálása a forrásvezérlő rendszerrel kulcsfontosságú a gyors, önkiszolgáló kódbefizetések engedélyezéséhez.

A CI-folyamat egy újonnan létrehozott lekéréses kérelemen fut. A folyamat magában foglalja az összes tesztet, biztonsági értékelést és egyéb ellenőrzést. A CI-teszt eredményei közvetlenül a lekéréses kérelemben jelennek meg, így szinte valós idejű visszajelzést kaphatnak a minőségről.

Egy másik népszerű eljárás a kis jelentések vagy jelvények készítése, amelyek megjeleníthetők a forrásvezérlőben az aktuális buildállapotok láthatóvá tétele érdekében.

Az alábbi képen a GitHub és egy Azure DevOps-folyamat integrációja látható. Ebben a példában egy lekéréses kérelem létrehozása elindít egy Azure DevOps-folyamatot. A folyamat állapota megjelenik a lekéréses kérelemben.

Képernyőkép egy Azure DevOps állapotjelvényről egy GitHub-adattárban.

Automatizált tesztek beépítése

A folyamatos integráció kulcsfontosságú eleme a kód folyamatos kiépítése és tesztelése, mivel a fejlesztők kódokkal járulnak hozzá. A létrehozott lekéréses kérelmek tesztelése gyors visszajelzést ad arról, hogy a véglegesítés nem vezetett be kompatibilitástörő módosításokat. Ennek az az előnye, hogy a folyamatos integrációs folyamat tesztjei ugyanazok a tesztek lehetnek, amelyek a tesztalapú fejlesztés során futnak.

Az alábbi kódrészlet egy Azure DevOps-folyamat tesztelési lépését mutatja be. A lépés két feladatból áll:

  • Az első feladat egy népszerű Python-tesztelési keretrendszert használ a CI-tesztek futtatásához. Ezek a tesztek a Python-kód mellett a forrásvezérlőben is találhatók. A teszteredmények egy test-results.xml nevű fájlra kerülnek.
  • A második feladat felhasználja a teszteredményeket, és integrált jelentésként közzéteszi őket az Azure DevOps-folyamatban.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

Az alábbi képen az Azure DevOps portálon megjelenő teszteredmények láthatók.

Képernyőkép az Azure DevOps-folyamattesztekről az Azure DevOps portálon.

Sikertelen tesztek

A sikertelen teszteknek ideiglenesen blokkolnia kell az üzembe helyezést, és mélyebb elemzést kell végeznie a történtekről. A sikertelen teszteknek vagy a tesztek finomításához vagy a tesztek sikertelenségéhez vezető változás javulásához kell vezetnie.

Build állapotának közzététele

Sok fejlesztő azt mutatja, hogy a kódminőségük magas, ha egy állapotjelvényt jelenít meg az adattárukban. Az alábbi képen egy Azure Pipelines-jelvény látható, amely egy nyílt forráskódú projekt olvasási fájljában jelenik meg a GitHubon.

Képernyőkép egy Azure Pipelines-jelvényről egy olvasófájlon a GitHubon.

Az Azure megkönnyítése

Az Azure DevOps olyan szolgáltatások gyűjteménye, amelyek segítenek egy együttműködési, hatékony és konzisztens fejlesztési gyakorlat kialakításában.

Az Azure Pipelines buildelési és kiadási szolgáltatásokat biztosít az alkalmazások folyamatos integrációjának és folyamatos kézbesítésének (CI/CD) támogatására.

Az Azure-hoz készült GitHub for Actions lehetővé teszi a CI/CD-folyamatok automatizálását. Közvetlenül integrálható az Azure-ral az üzembe helyezés egyszerűsítése érdekében. Létrehozhat olyan munkafolyamatokat, amelyek minden lekéréses kérelmet létrehoznak és tesztelnek az adattárban, vagy egyesített lekéréses kérelmeket helyeznek üzembe éles környezetben.

Megtudhatja, hogyan hozhat létre folyamatos integrációs folyamatot a GitHub vagy az Azure DevOps használatával:

Megtudhatja, hogyan jeleníthet meg jelvényeket az adattárakban:

Működési kiválósági ellenőrzőlista