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.