Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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, flytta ändringarna till en koddatabas och få nästan omedelbar feedback på kvaliteten, testdisponering och introducerade programfel. Denna process låter dig arbeta snabbare och med mer självfö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.
Den kontinuerliga integreringsprocessen startar när en tekniker skapar GitHub pull-begäran för att signalera till CI-systemet att kodändringar är redo att integreras. Integrationsprocessen verifierar koden mot flera baslinjer och tester. Därefter får den som begär support feedback på statusen för dessa tester.
Om baslinjekontroller och testning går bra, producerar och förbereder integreringsprocessen tillgångar som kommer att distribuera den uppdaterade programvaran. Tillgångar omfattar kompilerade kod- och behållarbilder.
Kontinuerlig integrering kan hjälpa dig att leverera programvara med hög kvalitet snabbare genom att utföra följande åtgärder:
- Kör automatiserade tester mot koden om du vill identifiera ändringar tidigt.
- Kör kodanalyser 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 acceptans- eller funktionstester för att säkerställa att programmet fungerar som förväntat.
- Ge snabb feedback på identifierade problem.
- I tillämpliga fall tar du fram 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. Integrering av källkontroll ger också möjlighet att ge CI-feedback direkt på pull-begäran.
Många lösningar, som Azure Pipelines eller GitHub Actions tillhandahåller funktioner för kontinuerliga integrationspipelines.
Integrera pipelines med källkontroll
Integreringen av din kontinuerliga integrationspipeline med ditt källkontrollsystem är nyckeln till att möjliggöra snabba självbetjäningskodbidrag.
CI-pipelinen körs på en nyskapad pull-begäran. Pipelinen innehåller alla tester, säkerhetskontroller 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 praxis är att skapa små rapporter eller brickor som kan presenteras i källkontrollen för att göra de aktuella byggstatusarna 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
Ett viktigt element i den kontinuerliga integreringen är att kontinuerligt skapa och testa kod allt eftersom utvecklare bidrar med kod. Testning av pull-begäranden när de skapas ger snabb feedback om att commiten inte har infört ändringar som kan orsaka problem. Fördelen är att testerna i den kontinuerliga integreringspipelinen kan vara samma tester som körs under testdrivna utvecklingar.
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 i Azure DevOps-pipeline 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 har hänt. Misslyckade tester bör också leda till en förfining av testerna eller till en förbättring av den ändring som orsakade att testerna misslyckades.
Publicera kompilationsstatus
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.
Optimera byggtider
För att utföra snabbare kompileringar kan du:
Välj agenter som uppfyller dina prestandakrav: Snabba upp dina byggen genom att välja rätt byggdatorer. Snabba datorer kan göra skillnad mellan timmar och minuter. Om dina pipelines finns i Azure Pipelines kan du köra dina jobb med hjälp av en Microsoft-värdbaserad agent. När du använder Microsoft-värdbaserade agenter tas underhåll och uppgraderingar hand om åt dig. Mer information finns i Agenter med Microsoft som värd.
Optimera platsen för byggservern: När du skapar koden skickas data över kabeln. Indata till versionerna hämtas från en källkontrolllagringsplats och artefaktlagringsplatsen. Utdata från byggprocessen måste kopieras, inklusive kompilerade artefakter, testrapporter, kodtäckningsresultat och felsökningssymboler. Det är viktigt att dessa kopieringsåtgärder körs snabbt. Om du använder din egen byggserver kontrollerar du att byggservern finns nära källorna och en målplats. Snabba uppladdningar och nedladdningar kan minska den totala byggtiden.
Skala ut byggservrar: En enskild byggserver kan vara tillräcklig för en liten produkt. När produktens storlek och omfattning och antalet team som arbetar med produkten ökar kanske inte en enda server räcker. Skala infrastrukturen vågrätt över flera datorer när du når gränsen. Mer information finns i Skapa och hantera agentpooler.
Optimera bygg:
Lägg till parallella jobb för att påskynda byggprocessen. Mer information finns i Konfigurera och betala för parallella jobb.
Aktivera parallella testpaketkörningar, vilket ofta sparar mycket tid, särskilt när du kör integrerings- och användargränssnittstester. Mer information finns i Köra tester parallellt för alla testkörare.
Använd begreppet multiplikator, där du kan skala ut dina byggen över flera byggagenter. Mer information finns i Ange jobb i din pipeline.
Överväg att flytta integrerings-, användargränssnitts- och röktester till en release-pipeline. Genom att övergå till en versionspipeline ökar bygghastigheten och hastigheten för byggfeedbackslingan.
Publicera byggartefakterna till en pakethanteringslösning, till exempel NuGet eller Maven. Genom att publicera till en pakethanteringslösning kan du återanvända din byggartefakt enklare.
Implementera byggtyper som passar dina arbetsflöden
Din organisation kan välja att skapa flera olika typer av versioner för att optimera byggtiderna. Möjliga byggen inkluderar:
Kontinuerlig integrering (CI) build: Syftet med den här versionen är att säkerställa att koden kompileras och att enhetstester körs. Den här versionen utlöses vid varje incheckning. Det fungerar som pulsslag i projektet och ger kvalitetsfeedback till teamet omedelbart. Mer information finns i Ange händelser som utlöser pipelines.
Nattligt bygge: Syftet med ett nattligt bygge är inte bara att kompilera koden, utan även att se till att större testsviter som körs ineffektivt körs regelbundet för varje version. Dessa tester omfattar vanligtvis integrerings-, användargränssnitts- eller röktester. Mer information finns i Konfigurera scheman för pipelines.
Versionsversion: Förutom att kompilera och köra tester kompilerar den här versionen även API-dokumentationen, efterlevnadsrapporter, kodsignering och andra steg som inte krävs varje gång koden skapas. Den här versionen innehåller den gyllene kopian som skickas till versionspipelinen för att slutligen distribueras i produktionsmiljön.
Vilka typer av byggen som krävs av din organisation beror på faktorer som teamets och organisationens mognad, vilken typ av produkt du arbetar med och din distributionsstrategi.
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: