Sélectionner une page

How‑to : Pipeline de build complet (YAML)

Nous automatisons compilation, tests, export/unpack et contrôles qualité en un pipeline unique.

build.yml

Le YAML suivant est prêt à l’emploi pour Azure DevOps.

trigger:
  branches:
    include: [ dev ]

pool:
  vmImage: windows-latest

variables:
  - group: pp-customapi-dev
  - name: SOL_NAME
    value: Marlk_SalesCore

steps:
- task: UseDotNet@2
  inputs:
    version: '6.x'

- script: dotnet restore plugins/Marlk.SalesCore.Plugins/Marlk.SalesCore.Plugins.csproj
  displayName: Restore

- script: dotnet build plugins/Marlk.SalesCore.Plugins/Marlk.SalesCore.Plugins.csproj -c Release /p:GeneratePackageOnBuild=false
  displayName: Build plugins

- script: dotnet test plugins/Marlk.SalesCore.Plugins.Tests/Marlk.SalesCore.Plugins.Tests.csproj --logger trx
  displayName: Unit tests

- powershell: |
    pac auth create --url $(ENV_URL) --tenant $(TENANT_ID) --applicationId $(APP_ID_DEV) --clientSecret $(APP_SECRET_DEV) --name DevAuth
    pac solution export --name $(SOL_NAME) --path $(Build.SourcesDirectory)/artifacts/$(SOL_NAME).zip --managed false --processCanvasApps false
    pac solution unpack --zipfile $(Build.SourcesDirectory)/artifacts/$(SOL_NAME).zip --folder $(Build.SourcesDirectory)/solutions/$(SOL_NAME) --allowDelete true
  displayName: Export & Unpack

- powershell: |
    pac solution check --path $(Build.SourcesDirectory)/solutions/$(SOL_NAME) --geco true --json $(Build.SourcesDirectory)/artifacts/solution-check.json
  displayName: Solution Checker

- task: PublishTestResults@2
  inputs:
    testResultsFormat: VSTest
    testResultsFiles: '**/*.trx'
    failTaskOnFailedTests: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: 'artifacts'
    ArtifactName: 'drop'
  displayName: Publish artifacts

Notes

Nous appliquons trois règles simples de qualité.

  • Échec si tests unitaires échouent.
  • Échec si Solution Checker retourne des findings High.
  • Publier artefacts pour la promotion vers TEST/PROD.