Introduction
Dans le développement traditionnel de logiciels, le processus d'intégration a généralement lieu à la fin d'un projet, une fois que chaque personne a terminé son travail. L'intégration prend généralement des jours ou des semaines et peut être pénible. Les conflits surviennent parce que deux développeurs ont modifié le même morceau de code. Le code ne se compile plus. Des choses qui fonctionnaient auparavant et qui ne fonctionnent plus. Le code ne fonctionne pas dans l'environnement de production.
Il n'est pas nécessaire qu'il en soit ainsi ! Dans cet article de blog, j'aimerais vous présenter l'intégration continue et la livraison continue (CI/CD).
Ce billet est basé sur une présentation que j'ai faite à Acumatica Summit 2022. L'enregistrement complet de la présentation est disponible ici : https://www.youtube.com/watch?v=o_Ma4_C2b2w
Qu'est-ce que la CI/CD ?
La CI/CD est une pratique de développement logiciel qui vise à automatiser et à rationaliser le processus de construction, de test et de déploiement des applications logicielles. Il s'agit de mettre en place un pipeline qui construit, teste et déploie automatiquement les modifications du code au fur et à mesure qu'elles sont apportées, ce qui permet une itération et un déploiement rapides des nouvelles caractéristiques et fonctionnalités.
Source : Le guide des chefs de produit sur la livraison continue et le DevOps.
https://www.mindtheproduct.com/
Pourquoi utiliser CI/CD ?
Il y a plusieurs avantages à utiliser CI/CD pour les développeurs qui construisent des solutions Acumatica :
- Amélioration de l'efficacité et de la productivité : CI/CD peut aider à réduire le temps et les efforts nécessaires pour créer, tester et déployer des personnalisations en automatisant de nombreuses étapes manuelles du processus. Cela signifie que votre équipe peut se concentrer sur des tâches plus importantes, plutôt que de passer du temps sur des processus manuels fastidieux.
- Amélioration de la qualité et de la fiabilité : En automatisant les tests et le déploiement, CI/CD permet d'identifier et de résoudre les problèmes plus tôt dans le processus de développement, réduisant ainsi le risque d'introduction de problèmes dans les environnements de production. Cela permet de s'assurer que vos personnalisations et modifications de votre instance Acumatica sont de la plus haute qualité et fiabilité.
- Accroissement de la rapidité et de la souplesse : CI/CD permet aux développeurs d'itérer rapidement sur leur code et de le mettre en production plus vite, ce qui leur permet de répondre plus rapidement aux besoins de l'entreprise et aux évolutions du marché. Cela peut aider votre petite entreprise à rester compétitive sur un marché en constante évolution.
Comment mettre en place un pipeline CI/CD pour les projets de développement Acumatica ?
La mise en place d'un pipeline CI/CD pour vos projets de développement Acumatica peut sembler intimidante au début, mais c'est un processus assez simple. Voici les étapes à suivre :
- Choisissez un système de contrôle des sources : Vous devrez utiliser un système de contrôle des sources pour gérer et suivre les modifications apportées à votre base de code. Plusieurs options sont disponibles, telles que Git, Mercurial et Subversion. Choisissez celui qui répond le mieux à vos besoins et qui est le plus familier à votre équipe.
- Mettre en place un serveur de compilation : Vous aurez besoin d'un serveur de construction pour automatiser le processus de construction, de test et de déploiement de votre code. Il peut s'agir d'une machine physique ou d'une machine virtuelle hébergée dans le nuage.
- Configurez votre serveur de compilation : Une fois que vous avez mis en place un serveur de construction, vous devez le configurer pour qu'il exécute les outils et processus nécessaires à la construction, au test et au déploiement de votre code. Cela implique généralement l'installation et la configuration d'un outil d'automatisation de la construction tel qu'Azure DevOps.
- Mettre en place un environnement de test : Vous aurez besoin d'un environnement distinct pour exécuter des tests automatisés sur votre code. Il peut s'agir d'une machine physique ou virtuelle, hébergée sur site ou dans le nuage.
- Configurez votre environnement de test : Vous devrez installer et configurer les outils et dépendances nécessaires à votre environnement de test pour exécuter des tests automatisés. Cela implique généralement l'installation du cadre de test Acumatica et de tout autre outil requis pour vos besoins de test spécifiques.
- Mettre en place un environnement de déploiement : Vous aurez besoin d'un environnement distinct pour déployer votre code en production. Il peut s'agir d'une machine physique ou virtuelle.
Pour mettre en œuvre CI/CD pour les projets de développement Acumatica, il est important d'évaluer l'état actuel des pratiques et des outils de développement. Il s'agit notamment de comprendre l'utilisation du contrôle des sources pour les projets de personnalisation, l'utilisation de l'Acumatica Test SDK pour les tests automatisés et l'utilisation d'outils CI/CD pour le déploiement. Le SDK Acumatica Test est un ensemble d'outils fournis par Acumatica pour créer des tests automatisés pour l'interface utilisateur des applications Acumatica. Ces tests permettent de simuler les interactions des utilisateurs avec l'interface utilisateur et de valider le comportement et les fonctionnalités de l'application.
Structure du dépôt GitHub
GitHub est un système de contrôle de version qui permet aux développeurs de suivre les modifications apportées à leur code au fil du temps et de collaborer avec d'autres développeurs sur des projets. Dans le contexte d'un projet de développement Acumatica, un dépôt GitHub peut inclure une bibliothèque d'extension Acumatica, des artefacts de projet de personnalisation, des projets de tests unitaires, un fichier YAML Azure Pipelines, un fichier de configuration NuGet, ainsi que des scripts supplémentaires et des outils de ligne de commande pour publier le package de personnalisation :
Ce dépôt d'échantillons se trouve à l'adresse suivante https://github.com/VelixoSolutions/AcumaticaCIDemo
Intégration d'Acumatica Source Control
L'intégration du contrôle de source d'Acumatica permet d'intégrer une gamme d'outils de contrôle de source. Elle fonctionne différemment de Visual Studio et n'est pas un lien direct avec un outil de contrôle de source spécifique. Au lieu de cela, il facilite la lecture et l'écriture dans un dossier local, qui est lié/souscrit à un système de contrôle de source tel que Git.
Pour plus d'informations, voir "Source Code and Automation for Acumatica Developers" de la conférence virtuelle des développeurs Acumatica 2019.
Lien : /media/2019/07/2019-Acumatica-DevCon-Source-Control-Automation.pdf
Construire le paquet de personnalisation
La création d'un package de personnalisation est le processus de création d'un package de code et de ressources qui peut être déployé sur une instance Acumatica pour ajouter des personnalisations ou des extensions à l'application.
Qu'est-ce qu'un forfait de personnalisation ?
Comme notre objectif est d'automatiser ce processus, nous devons nous appuyer sur un outil de ligne de commande pour le construire pour nous. PX.CommandLine.exe est un outil livré avec Acumatica et qui est couramment utilisé pour construire des paquets de personnalisation pour Acumatica, mais il a des limitations qui rendent son utilisation difficile dans le contexte d'un pipeline CI/CD :
- Il nécessite l'installation d'une instance complète d'Acumatica.
- Il est lent - l'instance Acumatica doit démarrer avant que le paquet puisse être construit.
- Il ne fonctionne pas lorsqu'il est exécuté dans le contexte d'un agent de construction.
Comme alternative, j'ai construit une simple application en ligne de commande qui fait cela pour vous, sans aucun bagage supplémentaire. Elle fournit des options pour spécifier le chemin de personnalisation, le nom de fichier du paquet et une description du projet de personnalisation. Pour créer un paquet de personnalisation à l'aide de CustomizationPackageTools.exe, les développeurs peuvent utiliser une commande comme celle-ci :
Vous pouvez trouver le code source de cet outil ici : https://github.com/VelixoSolutions/AcumaticaCIDemo/tree/main/CustomizationPackageTools
Le code est sous licence MIT - merci de le forker et de l'améliorer !
Publication du paquet de personnalisation
La publication du package de personnalisation est le processus de déploiement du package sur une instance Acumatica et la mise à disposition des personnalisations ou des extensions contenues dans le package aux utilisateurs. L'API Acumatica Service Gate est une API de service web située à /api/ServiceGate.asmx et basée sur SOAP qui peut être utilisée pour publier des packages de personnalisation sur une instance Acumatica, mais elle peut être difficile à utiliser avec une plateforme CI/CD comme Azure Pipelines. Azure Pipelines ne peut pas appeler une API de service web, mais il peut exécuter n'importe quelle application en ligne de commande ou script PowerShell. J'ai étendu la même application de ligne de commande que j'ai présentée précédemment, pour lui permettre de publier des projets également.
Pour publier un paquet de personnalisation à l'aide de CustomizationPackageTools.exe, les développeurs peuvent utiliser une commande comme celle-ci :
Tests : Tirer parti des outils et cadres de test Acumatica
Acumatica fournit un ensemble d'outils et de cadres de test pour vérifier la fonctionnalité et la performance des personnalisations et des extensions de l'application Acumatica. L'Acumatica Test SDK est un ensemble de bibliothèques construites sur le framework Selenium WebDriver qui permet aux développeurs d'écrire des tests automatisés pour l'interface utilisateur de l'application. Le cadre de test unitaire Acumatica est un ensemble de bibliothèques et d'outils conçus spécifiquement pour tester la logique métier et d'autres composants de l'application. En utilisant ces outils et cadres de test, les développeurs peuvent créer des tests automatisés qui contribuent à garantir la qualité et la fiabilité de leur code.
L'Acumatica Test SDK est un ensemble d'outils et de bibliothèques qui permettent aux développeurs de créer des tests automatisés pour l'interface utilisateur (UI) du logiciel Acumatica. Ces tests vérifient la fonctionnalité des éléments personnalisés de l'interface utilisateur et peuvent être exécutés sur différentes versions du logiciel Acumatica afin d'en assurer la compatibilité. Le SDK de test est construit sur le framework Selenium WebDriver et fournit des outils pour interagir avec l'interface utilisateur d'Acumatica, définir et grouper des cas de test, et mettre en place et supprimer des données de test. Pour créer un test d'interface utilisateur, les développeurs installent généralement les bibliothèques du SDK de test, créent un nouveau projet de test à l'aide d'un modèle fourni, écrivent le code de test à l'aide des outils fournis et exécutent les tests pour vérifier la fonctionnalité des éléments personnalisés de l'interface utilisateur. L'utilisation du SDK de test permet de garantir la qualité et la fiabilité du code personnalisé.
Un exemple de test d'interface utilisateur
Le cadre de test unitaire Acumatica est un ensemble d'outils et de bibliothèques qui permettent aux développeurs de créer des tests unitaires automatisés pour le logiciel Acumatica. Ces tests vérifient la fonctionnalité de petites unités de code isolées, telles que la logique commerciale personnalisée et d'autres composants de l'application. Le cadre de test unitaire est basé sur le cadre .NET et comprend une bibliothèque appelée PX.Tests.Unit.dll, ainsi que des outils permettant de créer et d'exécuter des tests unitaires. Pour créer un test unitaire, les développeurs installent généralement les bibliothèques du cadre, créent un nouveau projet de test à l'aide d'un modèle fourni, écrivent le code de test à l'aide des outils fournis et exécutent les tests pour vérifier la fonctionnalité du code personnalisé. Vous pouvez en apprendre plus sur le framework de test unitaire Acumatica en consultant le cours T280 - Testing Business Logic with the Acumatica Unit Test Framework sur l'Acumatica Open University.
Un exemple de test unitaire
L'assemblage - le fichier YAML d'Azure Pipeline
Dans Azure DevOps, le pipeline CI/CD est défini à l'aide d'un fichier de configuration YAML, qui spécifie les étapes du processus, telles que la construction du code, l'exécution des tests et le déploiement dans différents environnements. Les artefacts de construction sont les résultats du processus de construction, qui sont stockés dans un emplacement central et peuvent être utilisés dans les étapes ultérieures du pipeline. Le déploiement continu est une variante de la livraison continue qui déploie automatiquement chaque changement de code en production, éliminant ainsi le besoin d'une intervention manuelle.
Vous pouvez voir un exemple de fichier YAML pour un exemple de projet CI/CD Acumatica ici :
https://github.com/VelixoSolutions/AcumaticaCIDemo/blob/main/azure-pipelines.yml
Pipelines de mise en production Azure
Azure Release Pipelines est un outil d'Azure DevOps qui vous permet d'automatiser le processus de déploiement de vos applications.
Un pipeline de mise en production définit les étapes de la mise en production d'une application, y compris le déploiement du code dans différents environnements. Les pipelines de publication peuvent comporter plusieurs étapes et portes, ce qui vous permet de créer un processus de déploiement multi-environnements et de contrôler le flux de modifications du code en fonction de conditions telles que le temps ou l'approbation manuelle.
Par exemple, vous pouvez attendre trois jours après le déploiement dans votre environnement de préparation et, si aucun nouveau document de travail n'a été créé, procéder automatiquement au déploiement dans l'environnement de production.
Conclusion
En conclusion, la mise en œuvre d'un processus d'intégration et de livraison continues (CI/CD) peut considérablement améliorer la vitesse et la fiabilité de la personnalisation d'Acumatica, un système de planification des ressources d'entreprise (ERP) basé sur le cloud. Un élément clé de ce processus est l'utilisation d'un système de contrôle de source pour gérer votre base de code, ainsi que le cadre de test Acumatica et les tests unitaires pour automatiser les tests de vos personnalisations. En utilisant un outil CI/CD, vous pouvez automatiser le processus de construction, de test et de déploiement, ce qui vous permet de fournir des mises à jour cohérentes et rapides à votre instance Acumatica. Gardez à l'esprit que les étapes et les outils spécifiques que vous utilisez pour votre processus CI/CD dépendent de vos besoins spécifiques et peuvent nécessiter quelques essais pour trouver la meilleure solution pour votre équipe. Dans l'ensemble, la mise en œuvre de CI/CD pour la personnalisation d'Acumatica peut apporter de nombreux avantages et mérite d'être prise en compte par toute équipe de développement.
Bon apprentissage !
Références et liens supplémentaires
- Déployez vos personnalisations et applications Acumatica en toute confiance - CI/CD avec Acumatica - enregistrement vidéo à partir de Acumatica Summit 2022 : https://www.youtube.com/watch?v=o_Ma4_C2b2w
- Dépôt GitHub utilisé dans cette session : https://github.com/VelixoSolutions/AcumaticaCIDemo/
- Le guide du chef de produit sur la livraison continue et DevOps :
https://www.mindtheproduct.com/ - Déployer un agent Azure Pipelines sur Windows : https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops
- Premiers pas avec Acumatica Test SDK (VLOG par Robert Waite, Acumatica MVP) : https://www.youtube.com/watch?v=LiqTwe_Zhgk
- T280 DEVELOPMENT : TESTER LA LOGIQUE MÉTIER AVEC LE CADRE DE TEST UNITAIRE ACUMATICA 2021 R2 : https://openuni.acumatica.com/courses/development/t280-development-testing-business-logic/