Rekommendationer för att använda kontinuerlig integrering
Gäller för denna checklista för Azure Well-Architected Framework Operational Excellence:
OE:04 | Optimera processer för programvaruutveckling och kvalitetssäkring genom att följa branschbeprövade metoder för utveckling och testning. För tydlig rollbeteckning, standardisera metoder för komponenter som verktyg, källkontroll, mönster för programdesign, dokumentation och formatguider. |
---|
Relaterad guide: Förbättra kompileringshastigheten | Standardisera verktyg och processer
När kod utvecklas, uppdateras eller till och med tas bort, med en intuitiv och säker metod för att integrera dessa ändringar i huvudkodgrenen kan utvecklare tillhandahålla värde.
Som utvecklare kan du göra små kodändringar, skicka ändringarna till en kodlagringsplats och få nästan omedelbar feedback om kvalitet, testtäckning och introducerade buggar. Med den här processen kan du arbeta snabbare och med större förtroende och mindre risk.
Kontinuerlig integrering (CI) är en praxis där källkontrollsystem och pipelines för programvarudistribution är integrerade för att tillhandahålla automatiserade mekanismer för att skapa, testa och feedback för programvaruutvecklingsteam.
Viktiga designstrategier
Kontinuerlig integrering är en metod för programutveckling som utvecklare använder för att integrera programuppdateringar i ett källkontrollsystem med jämna mellanrum.
Processen för kontinuerlig integrering startar när en tekniker skapar en GitHub-pull-begäran för att signalera till CI-systemet att kodändringar är redo att integreras. Helst validerar integreringsprocessen koden mot flera baslinjer och tester. Den ger sedan feedback till den begärande teknikern om statusen för dessa tester.
Om baslinjekontroller och testning går bra skapar integreringsprocessen och faser tillgångar som distribuerar den uppdaterade programvaran. Dessa tillgångar omfattar kompilerad kod och containeravbildningar.
Kontinuerlig integrering kan hjälpa dig att leverera programvara av hög kvalitet snabbare genom att utföra följande åtgärder:
- Kör automatiserade tester mot koden för att tidigt identifiera icke-bakåtkompatibla ändringar.
- Kör kodanalys för att säkerställa kodstandarder, kvalitet och konfiguration.
- Kör efterlevnads- och säkerhetskontroller för att säkerställa att programvaran inte har några kända säkerhetsrisker.
- Kör godkännande- eller funktionstester för att säkerställa att programvaran fungerar som förväntat.
- Ge snabb feedback om identifierade problem.
- I tillämpliga fall skapar du distribuerade tillgångar eller paket som innehåller den uppdaterade koden.
Automatisera kontinuerlig integrering med pipelines
För att uppnå kontinuerlig integrering använder du programvarulösningar för att hantera, integrera och automatisera processen. En vanlig metod är att använda en pipeline för kontinuerlig integrering.
En pipeline för kontinuerlig integrering omfattar en programvara (ofta molnbaserad) som tillhandahåller:
- En plattform för att köra automatiserade tester.
- Efterlevnadsgenomsökningar.
- Rapportering.
- Alla andra komponenter som utgör den kontinuerliga integreringsprocessen.
I de flesta fall är pipelineprogramvaran kopplad till källkontroll så att när pull-begäranden skapas eller programvara slås samman till en specifik gren körs pipelinen för kontinuerlig integrering. Källkontrollintegrering ger också möjlighet att ge CI-feedback direkt på pull-begäranden.
Många lösningar, till exempel Azure Pipelines eller GitHub Actions, tillhandahåller funktionerna i pipelines för kontinuerlig integrering.
Integrera pipelines med källkontroll
Integreringen av din pipeline för kontinuerlig integrering med källkontrollsystemet är nyckeln till att aktivera snabba kodbidrag med självbetjäning.
CI-pipelinen körs på en nyligen skapad pull-begäran. Pipelinen innehåller alla tester, säkerhetsutvärderingar och andra kontroller. CI-testresultat visas direkt i pull-begäran för att möjliggöra nästan realtidsfeedback om kvalitet.
En annan populär metod är att skapa små rapporter eller märken som kan visas i källkontrollen för att göra de aktuella byggtillstånden synliga.
Följande bild visar integreringen mellan GitHub och en Azure DevOps-pipeline. I det här exemplet utlöser skapandet av en pull-begäran en Azure DevOps-pipeline. Pipelinestatusen visas i pull-begäran.
Införliva automatiserade tester
En viktig del av kontinuerlig integrering är kontinuerlig skapande och testning av kod när utvecklare gör kodbidrag. Testning av pull-begäranden när de skapas ger snabb feedback om att incheckningen inte har infört icke-bakåtkompatibla ändringar. Fördelen är att testerna i pipelinen för kontinuerlig integrering kan vara samma tester som körs under testdriven utveckling.
Följande kodfragment visar ett teststeg från en Azure DevOps-pipeline. Steget har två uppgifter:
- Den första uppgiften använder ett populärt Python-testramverk för att köra CI-tester. Dessa tester finns i källkontrollen tillsammans med Python-koden. Testresultaten går till en fil med namnet test-results.xml.
- Den andra uppgiften använder testresultaten och publicerar dem till Azure DevOps-pipelinen som en integrerad rapport.
- 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)'
Följande bild visar testresultat som visas i Azure DevOps-portalen.
Misslyckade tester
Misslyckade tester bör tillfälligt blockera en distribution och leda till en djupare analys av vad som hände. Misslyckade tester bör också leda till antingen en förfining av testerna eller en förbättring av den ändring som gjorde att testerna misslyckades.
Publicera versionsstatus
Många utvecklare visar att deras kodkvalitet är hög genom att visa ett statusmärke på deras lagringsplats. Följande bild visar ett Azure Pipelines-märke som visas på readme-filen för ett projekt med öppen källkod i GitHub.
Azure-underlättande
Azure DevOps är en samling tjänster som hjälper dig att skapa en samarbetsinriktad, effektiv och konsekvent utvecklingspraxis.
Azure Pipelines tillhandahåller bygg- och versionstjänster för kontinuerlig integrering och kontinuerlig leverans (CI/CD) av dina program.
GitHub for Actions för Azure möjliggör automatisering av CI/CD-processer. Den integreras direkt med Azure för att förenkla distributioner. Du kan skapa arbetsflöden som skapar och testar varje pull-begäran på lagringsplatsen eller som distribuerar sammanfogade pull-begäranden till produktion.
Relaterade länkar
Lär dig hur du skapar en pipeline för kontinuerlig integrering med hjälp av antingen GitHub eller Azure DevOps:
Lär dig hur du visar märken i dina lagringsplatser:
- Lägga till ett Azure Pipelines-statusmärke på lagringsplatsen
- Lägg till ett statusmärke för GitHub-arbetsflödet på lagringsplatsen