Comment créer un pipeline DevOps supportant .net 10, et Microsoft Testing Paltform 2 ?

Depuis le début, l'usage de Microsoft Testing Platform n'est pas de tout repos. Pour compliquer la chose, il n'existe aucun Template de build.

Mais en se penchant sur les différentes documentations, on finit par trouver une solution.

Je vous propose aujourd'hui une procédure de mon cru que j’utilise avec succès depuis deux mois.

Dans un premier temps, nous devons créer un fichier globa.json à la racine du repository.


{
  "test": {
    "runner": "Microsoft.Testing.Platform"
  }
}

Ensuite, il faut résoudre les problèmes suivants :

  • DotNetCoreCLI@2 test, ne peut pas être utilisé avec la propriété projects.
  • DotNetCoreCLI@2 test, ajoute des arguments propres à VSTest quand on laisse la publication automatique active.
  • DotNetCoreCLI@2 test, n'applique pas le fichier global.json s'il n'est pas à la racine du repository.

Ma solution consiste donc en l'enchaînement de taches qui suit :


- task: DotNetCoreCLI@2
    displayName: 'Compilation'
    inputs:
      command: build
      projects: $(solution)
      arguments: '--configuration $(buildConfiguration)'

  - task: DotNetCoreCLI@2
    displayName: 'Tests unitaires'
    inputs:
      command: test
      publishTestResults: false
      arguments: '--solution $(solution) --no-restore --configuration $(buildConfiguration) --report-trx --results-directory $(Agent.TempDirectory) --coverage --coverage-output-format cobertura --coverage-output coverage.cobertura.xml'      
      # si le global.json est dans un dossier "Sources"
      # workingDirectory: '$(Build.SourcesDirectory)\Sources\'

  - task: PublishTestResults@2
    displayName: "Publication des resultats des tests unitaires"
    condition: always()
    inputs:
      testResultsFormat: VSTest
      searchFolder: $(Agent.TempDirectory)
      testResultsFiles: "**/*.trx"

  - task: reportgenerator@5
    displayName: 'Génération du rapport de couverture de code'
    inputs:
      reports: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'      
      targetdir: 'coveragereport'
      publishCodeCoverageResults: true  

Note: Aucune IA n’a été maltraitée pour obtenir cette solution.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.