Intégration K6 dans une pipeline Azure DevOps

Après avoir couvert le « pourquoi » et le « comment » des tests de charges/stress, il nous fallait parler de son intégration dans un environnement Azure DevOps.

Commencez tout d’abord par ajouter l’extension K6 à votre projet Azure DevOps:

Pour le coup j’ai importé mon repository GitHub vers mon projet Azure Devops et j’ai crée une pipeline de build afin de pouvoir générer un artifact de build.

All in one in build pipeline

Pour cela, ajoutez une pipeline de build à votre projet sur Azure DevOps comme suit :

Choissisez votre repository puis prenez le template ASP.NET Core que nous allons modifier :

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    packageType: 'sdk'
    version: '6.0.x'
    
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' # Update this to match your need

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'loadtestK6'
- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'your azure subscription'
    appType: 'webApp'
    WebAppName: 'k6loadtest'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/loadtestK6/AOP-Logging-PostSharp-Sample.zip'
    
- task: k6-load-test@0
  inputs:
    filename: 'AOP-Logging-PostSharp-Sample/test.js'
    args: '--env API_BASEURL=k6loadtest.azurewebsites.net'

Cette pipeline intégre tout ce dont vous avez besoin pour builder , publier votre artefact et déployer vers votre instance Azure App Service.

Avec pipeline de release

Une fois que votre pipeline est en capacité de créer des artifacts de build , nous allons créer une pipeline de release pour lancer nos tests K6.

Sélectionnez « Empty Job » pour partir d’un modèle vide :

Rajoutez votre artifact généré lors de votre pipeline de build :

J’ai créé au préalable un app service sur Azure en .NET 6.0 pour pouvoir héberger mon application et je vais le déployer vers celui-ci comme suit en créant la tache appropriée:

Puis une tache de test K6 :

Ajoutez ensuite une tache pour lire les résultats des tests :

thumbnail image 11 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Load Testing with Azure DevOps and k6
thumbnail image 12 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Load Testing with Azure DevOps and k6

Une fois que la release est lancée, vous obtiendrez vos résultats de manière visuelle 😉

thumbnail image 14 of blog post titled 
	
	
	 
	
	
	
				
		
			
				
						
							Load Testing with Azure DevOps and k6

Voila c’est tout pour cette intégration avec Azure DevOps.

Faites en bon usage et have fun coding !