Konfigurera CI/CD-arbetsflödet manuellt för att köra belastningstester
Artikel
Du kan automatisera ett belastningstest i Azure Load Testing genom att skapa en CI/CD-pipeline. I den här artikeln får du lära dig hur du manuellt konfigurerar GitHub Actions, Azure Pipelines eller andra CI-verktyg för att anropa ett befintligt test i Azure Load Testing. Automatisera ett belastningstest för att kontinuerligt verifiera programmets prestanda och stabilitet under belastning.
Så här lägger du till ett befintligt belastningstest i en CI/CD-pipeline:
Konfigurera tjänstautentisering så att CI-verktyget kan ansluta till din Azure-belastningstestningsresurs.
Lägg till indatafiler för belastningstest till lagringsplatsen, till exempel JMeter-testskriptet och YAML-konfigurationen för belastningstestet.
Uppdatera CI/CD-pipelinedefinitionen för att anropa Azure Load Testing.
En Azure DevOps-organisation och ett projekt. Om du inte har en Azure DevOps-organisation kan du skapa en kostnadsfritt. Om du behöver hjälp med att komma igång med Azure Pipelines kan du läsa Skapa din första pipeline.
En GitHub-lagringsplats för att lagra indatafilerna för belastningstestet och skapa ett GitHub Actions-arbetsflöde. Information om hur du skapar en finns i Skapa en ny lagringsplats.
Behörighet att skapa eller ändra en CI-pipeline.
En källkodslagringsplats för att lagra indatafilerna för belastningstestet.
Konfigurera tjänstautentisering
Om du vill köra ett belastningstest i ditt CI/CD-arbetsflöde måste du ge behörighet till CI/CD-arbetsflödet för att få åtkomst till din belastningstestningsresurs. Skapa ett huvudnamn för tjänsten för CI/CD-arbetsflödet och tilldela rollen Inläsningstestdeltagare i Azure RBAC.
I Azure Pipelines skapar du en tjänstanslutning i ditt Azure DevOps-projekt för att få åtkomst till resurser i din Azure-prenumeration. När du skapar tjänstanslutningen skapar Azure DevOps ett Microsoft Entra-objekt för tjänstens huvudnamn.
Logga in på din Azure DevOps-organisation (https://dev.azure.com/<your-organization>) och välj ditt projekt.
<your-organization> Ersätt textplatshållaren med projektidentifieraren.
Välj Projektinställningar>Tjänstanslutningar>+ Ny tjänstanslutning.
I fönstret Ny tjänstanslutning väljer du Azure Resource Manager och sedan Nästa.
Välj autentiseringsmetoden Tjänsthuvudnamn (automatisk) och välj sedan Nästa.
Ange information om tjänstanslutningen och välj sedan Spara för att skapa tjänstanslutningen.
Fält
Värde
Omfångsnivå
Prenumeration.
Abonnemang
Välj den Azure-prenumeration som är värd för din belastningstestningsresurs.
Resursgrupp
Välj den resursgrupp som innehåller din belastningstestningsresurs.
Namn på tjänstanslutning
Ange ett unikt namn för tjänstanslutningen.
Bevilja åtkomstbehörighet till alla pipelines
Markerad.
I listan över tjänstanslutningar väljer du den som du skapade tidigare och väljer sedan Hantera tjänstens huvudnamn.
Azure Portal öppnas på en separat webbläsarflik och visar information om tjänstens huvudnamn.
I Azure Portal kopierar du värdet Visningsnamn.
Du använder det här värdet i nästa steg för att bevilja behörigheter för körning av belastningstester till tjänstens huvudnamn.
Bevilja åtkomst till Azure Load Testing
Azure Load Testing använder Azure RBAC för att bevilja behörigheter för att utföra specifika aktiviteter på din belastningstestningsresurs. Om du vill köra ett belastningstest från CI/CD-pipelinen beviljar du rollen Load Test Contributor till tjänstens huvudnamn.
I Azure Portal går du till din Azure Load Testing-resurs.
Välj Åtkomstkontroll (IAM)>Lägg till lägg till>rolltilldelning.
På fliken Roll väljer du Läs in testdeltagare i listan över jobbfunktionsroller.
På fliken Medlemmar väljer du Välj medlemmar och använder sedan visningsnamnet som du kopierade tidigare för att söka i tjänstens huvudnamn.
Välj tjänstens huvudnamn och välj sedan Välj.
På fliken Granska + tilldela väljer du Granska + tilldela för att lägga till rolltilldelningen.
Nu kan du använda tjänstanslutningen i arbetsflödesdefinitionen för Azure Pipelines för att få åtkomst till azure-belastningstestningsresursen.
För att få åtkomst till din Azure Load Testing-resurs från GitHub Actions-arbetsflödet skapar du först ett Huvudnamn för Microsoft Entra-tjänsten. Tjänstens huvudnamn representerar ditt GitHub Actions-arbetsflöde i Microsoft Entra-ID.
Därefter beviljar du behörighet till tjänstens huvudnamn för att skapa och köra ett belastningstest med din Azure Load Testing-resurs.
Skapa ett huvudnamn för tjänsten
Skapa ett huvudnamn för tjänsten i Azure-prenumerationen och tilldela rollen Load Test Contributor så att ditt GitHub Actions-arbetsflöde har åtkomst till din Azure-belastningstestresurs för att köra belastningstester.
Skapa ett huvudnamn för tjänsten och tilldela Load Test Contributor rollen:
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
Utdata är ett JSON-objekt som representerar tjänstens huvudnamn. Du använder den här informationen för att autentisera med Azure i GitHub Actions-arbetsflödet.
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Kommentar
Du kan få en --sdk-auth utfasningsvarning när du kör det här kommandot. Du kan också använda OIDC-baserad autentisering (OpenID Connect) för att autentisera GitHub med Azure. Lär dig hur du använder Azure-inloggningsåtgärden med OpenID Connect.
Kopiera JSON-utdataobjektet till Urklipp.
I nästa steg lagrar du informationen om tjänstens huvudnamn som en GitHub Actions-hemlighet.
Lagra Azure-autentiseringsuppgifter i GitHub Actions-hemlighet
Skapa en GitHub Actions-hemlighet för att lagra informationen om tjänstens huvudnamn på ett säkert sätt. Du använder den här hemligheten i arbetsflödesdefinitionen för att ansluta för att autentisera med Azure och få åtkomst till din Azure-belastningstestningsresurs.
Välj Ny lagringsplatshemlighet, ange hemlig information och välj sedan Lägg till hemlighet för att skapa en ny hemlighet.
Fält
Värde
Namn
AZURE_CREDENTIALS
Hemlighet
Klistra in JSON-utdata från kommandot för att skapa tjänstens huvudnamn som du kopierade tidigare.
Nu kan du komma åt din Azure-prenumeration och läsa in testresursen från ditt GitHub Actions-arbetsflöde med hjälp av de lagrade autentiseringsuppgifterna.
Om du använder ett annat CI/CD-verktyg använder du Azure CLI för att interagera med dina Azure-resurser. Utför följande steg för att auktorisera CI-verktygets åtkomst till din belastningstestningsresurs:
Skapa ett Microsoft Entra-tjänsthuvudnamn för att ansluta till din Azure-prenumeration och få åtkomst till din Azure-belastningstestningsresurs.
Ge tjänstens huvudnamn behörighet att skapa och köra ett belastningstest genom att tilldela rollen Load Test-deltagare.
Lagra Azure-autentiseringsuppgifterna på ett säkert sätt i CI-verktyget.
Utför följande steg för att konfigurera tjänstauktorisering för ditt CI-verktyg:
Skapa ett huvudnamn för tjänsten och tilldela rollen Load Test-deltagare:
<resource-group-name> Ersätt platshållarna och <load-testing-resource-name> text.
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
Utdata är ett JSON-objekt som representerar tjänstens huvudnamn.
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
clientIdKopiera värdena , clientSecretoch tenantId och lagra dem på ett säkert sätt som hemligheter i ditt CI-verktyg.
Du använder dessa värden för att logga in på din Azure-prenumeration med Azure CLI-kommandot az login .
Lägga till belastningstestfiler på lagringsplatsen
Om du vill köra ett belastningstest med Azure Load Testing i ett CI/CD-arbetsflöde måste du lägga till alla indatafiler för belastningstest i källkontrolllagringsplatsen.
Om du inte har ett befintligt belastningstest lägger du till följande filer i källkodslagringsplatsen:
Läs in YAML-filen för testkonfiguration. Lär dig hur du kan skapa en YAML-fil för belastningstestkonfiguration.
Testplansfil. För JMeter-baserade tester lägger du till ett JMeter-testskript (JMX fil). För URL-baserade tester lägger du till en JSON-fil för begäranden.
Alla indatafiler som testplanen använder. Till exempel CSV-datafiler.
Om du har ett befintligt belastningstest kan du ladda ned konfigurationsinställningarna och alla indatafiler direkt från Azure Portal. Utför följande steg för att ladda ned indatafilerna för en befintlig belastningstestning i Azure Portal:
I Azure Portal går du till din Azure Load Testing-resurs.
I den vänstra rutan väljer du Tester för att visa listan över belastningstester och väljer sedan ditt test.
Välj ellipsen (...) bredvid den testkörning som du arbetar med och välj sedan Ladda ned indatafil.
Webbläsaren laddar ned en zippad mapp som innehåller indatafilerna för belastningstestet.
Använd alla zip-verktyg för att extrahera indatafilerna.
Mappen innehåller följande filer:
config.yaml: YAML-konfigurationsfilen för belastningstestet. Du refererar till den här filen i CI/CD-arbetsflödesdefinitionen.
.jmx: JMeter-testskriptet
Eventuella ytterligare indatafiler, till exempel CSV-filer eller filer med användaregenskaper som behövs för att köra belastningstestet.
Checka in alla extraherade indatafiler till källkontrolllagringsplatsen.
Använd källkodslagringsplatsen där du konfigurerar CI/CD-pipelinen.
Uppdatera CI/CD-arbetsflödesdefinitionen
Azure Load Testing stöder både GitHub Actions och Azure Pipelines för att köra belastningstester.
Installera Azure Load Testing-tillägget för Azure DevOps
För att skapa och köra ett belastningstest använder Azure Pipelines-arbetsflödesdefinitionen aktivitetstillägget Azure Load Testing från Azure DevOps Marketplace.
Välj din Azure DevOps-organisation och välj sedan Installera för att installera tillägget.
Om du inte har administratörsbehörighet för den valda Azure DevOps-organisationen väljer du Begär att begära att en administratör installerar tillägget.
Uppdatera Azure Pipelines-arbetsflödet
Uppdatera ditt Azure Pipelines-arbetsflöde för att köra ett belastningstest för azure-belastningstestningsresursen.
Logga in på din Azure DevOps-organisation (https://dev.azure.com/<your-organization>) och välj ditt projekt.
Välj Pipelines i det vänstra navigeringsfältet, välj din pipeline och välj sedan Redigera för att redigera arbetsflödesdefinitionen.
Alternativt väljer du Skapa pipeline för att skapa en ny pipeline i Azure Pipelines.
Använd uppgiften AzureLoadTest för att köra belastningstestet.
Ange konfigurationsfilen för belastningstestet som du exporterade tidigare i egenskapen loadTestConfigFile .
<load-testing-resource> Ersätt platshållarna och <load-testing-resource-group> text med namnet på din Azure-belastningstestningsresurs och resursgruppen.
Använd åtgärden azure/load-testing för att köra belastningstestet.
Ange konfigurationsfilen för belastningstestet som du exporterade tidigare i egenskapen loadTestConfigFile .
<load-testing-resource> Ersätt platshållarna och <load-testing-resource-group> text med namnet på din Azure-belastningstestningsresurs och resursgruppen.
Uppdatera ditt CI-arbetsflöde för att köra ett belastningstest för azure-belastningstestningsresursen med hjälp av Azure CLI. Använd detaljerna i ditt CI-verktyg för att lägga till följande kommandon i ditt CI-arbetsflöde:
Logga in på Azure-prenumerationen med tjänstens huvudnamn.
Använd värdena clientId, clientSecretoch som tenantId du lagrade tidigare.
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
az account set -s $AZURE_SUBSCRIPTION_ID
Skapa ett belastningstest med yaml-filen för belastningstestkonfiguration.
<load-testing-resource>Ersätt platshållarna , <load-testing-resource-group>och <load-test-config-yaml> text med namnet på belastningstestningsresursen, resursgruppens namn och filnamnet för yaml-filen för belastningstestkonfigurationen som du lade till på lagringsplatsen tidigare.
az load test create --load-test-resource <load-testing-resource> --resource-group <load-testing-resource-group> --test-id sample-test-id --load-test-config-file <load-test-config-yaml>
Kör belastningstestet.
testRunId="run_"`date +"%Y%m%d%_H%M%S"`
displayName="Run"`date +"%Y/%m/%d_%H:%M:%S"`
az load test-run create --load-test-resource <load-testing-resource> --test-id sample-test-id --test-run-id $testRunId --display-name $displayName --description "Test run from CLI"
Hämta och visa mått på klientsidan för belastningstestkörningen.
az load test-run metrics list --load-test-resource <load-testing-resource> --test-run-id $testRunId --metric-namespace LoadTestRunMetrics
Visa testresultat för belastning
När du kör ett belastningstest från CI/CD-pipelinen kan du visa sammanfattningsresultaten direkt i CI/CD-utdataloggen. Om du har publicerat testresultaten som en pipelineartefakt kan du också ladda ned en CSV-fil för ytterligare rapportering.
Rensa resurser
Om du inte planerar att använda någon av de resurser som du har skapat tar du bort dem så att du inte debiteras ytterligare avgifter.
Om du har skapat en ny arbetsflödesdefinition tar du bort YAML-filen för arbetsflödet .github/workflows i mappen.
Om du har ändrat en befintlig arbetsflödesdefinition kan du ångra ändringarna för att köra belastningstestet och spara arbetsflödet.
Ta bort tjänstens huvudnamn:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
Ångra ändringarna i ditt CI-arbetsflöde.
Ta bort tjänstens huvudnamn:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
Nästa steg
Gå vidare till nästa artikel för att lära dig hur du identifierar prestandaregressioner genom att definiera kriterier för testfel och jämföra testkörningar.