Technique6 min de lecture

Pipeline de build Azure DevOps pour D365 F&O sans VM de build

Compiler le X++ et créer le package déployable de D365 F&O avec Azure Pipelines et des agents hébergés : NuGet, packages.config, tâches, limites.

La réponse courte

Aujourd'hui, on peut compiler le code X++ et produire un package déployable Dynamics 365 Finance & Operations dans Azure DevOps sur un agent Windows hébergé par Microsoft, sans machine virtuelle de build. Le principe : publier dans un flux Azure Artifacts les packages NuGet de Microsoft (compilateur X++ et références compilées de la plateforme et de l'application), les déclarer dans un fichier packages.config, puis enchaîner dans le pipeline les tâches de restauration NuGet, de version des modèles, de build MSBuild et de création du package déployable (extension « Dynamics 365 Finance and Operations Tools »).

Limite importante : ce build ne fait que compiler et packager. Pas de tests SysTest, pas de synchronisation de base, rien qui nécessite le runtime (AOS).

Prérequis : projets et packages NuGet

  • Un projet X++ par package à compiler dans le dépôt (une solution peut les regrouper et fixer l'ordre), et le descripteur de chaque modèle versionné.
  • Les packages NuGet de la bibliothèque d'actifs partagés de Lifecycle Services (ou via l'extension Visual Studio Power Platform) : CompilerPackage, Platform, Application1, Application2 et ApplicationSuite « Build Reference ». Leur version doit être supérieure ou égale à celle de votre environnement.
  • Un flux Azure Artifacts, un nuget.config pour y accéder et un packages.config qui liste les versions :
<packages>
    <package id="Microsoft.Dynamics.AX.Platform.DevALM.BuildXpp" version="…" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Application1.DevALM.BuildXpp" version="…" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Application2.DevALM.BuildXpp" version="…" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.ApplicationSuite.DevALM.BuildXpp" version="…" targetFramework="net40" />
    <package id="Microsoft.Dynamics.AX.Platform.CompilerPackage" version="…" targetFramework="net40" />
</packages>

Pour monter de version, il suffit de publier les nouveaux packages et de mettre à jour packages.config.

Créer le pipeline

La méthode recommandée par Microsoft : importer le modèle de pipeline xpp-classic-ci.json du dépôt GitHub Dynamics365-Xpp-Samples-Tools, choisir l'agent windows-latest, pointer les sources (pour TFVC, le dossier qui contient Metadata et Projects) et la variable NugetConfigPath. Les pipelines YAML ne sont disponibles qu'avec Git ; TFVC impose les pipelines classiques.

En création manuelle, les tâches sont : installation des packages NuGet, mise à jour des versions de modèles, build de la solution, installation de NuGet sur l'agent, création du package déployable. L'extension Azure DevOps « Dynamics 365 Finance and Operations Tools » fournit les tâches spécifiques ; avec l'expérience développeur unifiée, elle peut aussi ajouter des licences d'éditeurs et appliquer le package sur un environnement. Voir UDE : ce qui change pour un développeur X++.

Erreurs fréquentes

  • Des packages NuGet plus anciens que l'environnement cible.
  • Oublier le descripteur d'un modèle dans le contrôle de code source.
  • Un projet .rnrproj non créé ou non enregistré avec les outils Visual Studio.
  • Compter sur ce pipeline pour exécuter les tests SysTest : il ne les exécute pas.
  • Laisser s'accumuler les versions de packages dans Azure Artifacts : l'espace gratuit est limité.

Et chez Skalp AI ?

Skalp ne déploie pas lui-même : le code arrive par pull request dans votre projet Azure DevOps, et c'est votre pipeline qui compile et package ensuite. Skalp AI rédige la spécification, génère le code X++ et les tests unitaires, compile en contrôlant les bonnes pratiques, puis livre par pull request dans votre Azure DevOps : rien n'est fusionné sans la validation de votre architecte technique. Voir intégration Azure DevOps, le cadre général dans développer en X++ sans consultant en 2026, et les offres Basic, Pro et Max (1 crédit, ≈ 400 € en Basic, 200 € en Pro, consommé seulement à la génération du code).

Sources

Questions fréquentes

Faut-il encore une VM de build pour D365 F&O ?

Non pour compiler et packager : un agent hébergé par Microsoft suffit avec les packages NuGet. Il en faut une, ou un environnement, pour exécuter les tests SysTest qui nécessitent le runtime.

Pipeline YAML ou classique ?

YAML uniquement avec un dépôt Git ; un dépôt TFVC impose un pipeline classique. Microsoft fournit un modèle classique à importer.

Où trouver les packages NuGet du compilateur X++ ?

Dans la bibliothèque d'actifs partagés de Lifecycle Services, ou via l'extension Visual Studio Power Platform ; on les publie ensuite dans un flux Azure Artifacts.

Prêt à transformer votre D365 ?

Rejoignez les DSI qui développent leurs tickets D365 en 2 à 4 h pour 1 crédit (≈ 400 € en Basic, 200 € en Pro).