Pipeline Build : export, unpack, quality gates et tests
Le pipeline de build produit des artefacts vérifiés et reproductibles. Il part de la solution Dataverse et s’assure que le code et le modèle respectent les règles de qualité.
Étapes clés du build
Le build suit un enchaînement standardisé et scriptable.
- Restore des dépendances .NET et outils
pac. - Compile des plugins et exécution des tests unitaires.
- Export de la solution depuis DEV en unmanaged.
- Unpack de la solution pour versionner le XML.
- Solution Checker pour détection de risques.
- Publish des artefacts (zip + sources unpacked).
Exemple de YAML (extrait)
Ce snippet illustre les étapes critiques avec pac et dotnet.
trigger:
branches: { include: [ dev ] }
pool: { vmImage: 'windows-latest' }
variables:
SOL_NAME: 'Marlk_SalesCore'
ENV_URL: '$(ENV_URL)'
TENANT_ID: '$(TENANT_ID)'
APP_ID: '$(APP_ID)'
APP_SECRET: '$(APP_SECRET)'
steps:
- task: UseDotNet@2
inputs: { version: '6.x' }
- script: dotnet build plugins/Marlk.SalesCore.Plugins/Marlk.SalesCore.Plugins.csproj --configuration Release
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) --clientSecret $(APP_SECRET) --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: PublishBuildArtifacts@1
inputs: { PathtoPublish: 'artifacts', ArtifactName: 'drop' }
displayName: Publish artifacts
Quality gates
Les contrôles empêchent la dérive technique dès le build.
- Tests unitaires obligatoires sur la logique C# (calculs, validations).
- Solution Checker en échec bloquant si severities ≥ High.
- Analyse statique StyleCop/FXCop et interdiction d’APIs obsolètes.
Rapports et traçabilité
Les sorties du build servent de preuve de qualité.
- Publier TRX de tests,
solution-check.json, package zip. - Associer le build aux Work Items liés.
- Conserver l’artefact pour promotion vers TEST/PROD.