Introduction
Dans le développement de logiciels traditionnels, le processus d’intégration a généralement lieu à la fin d’un projet après que chaque personne ait terminé son travail. L’intégration prend généralement des jours ou des semaines et peut être douloureuse. Les conflits se produisent parce que deux développeurs ont modifié le même bit de code. Le code ne compile plus. Des choses qui fonctionnaient auparavant et qui ne fonctionnaient plus. Code qui ne fonctionne pas dans l’environnement de production.
Il n’a pas besoin d’être comme ça! Dans cet article de blog, je veux vous présenter l’intégration continue et la livraison continue (CI / CD).
Cet article est basé sur une présentation que j’ai donnée à Acumatica Summit 2022. Un enregistrement complet de la peut être trouvé ici : https://www.youtube.com/watch?v=o_Ma4_C2b2w
Qu’est-ce que CI/CD?
CI/CD est une pratique de développement logiciel qui vise à automatiser et à rationaliser le processus de création, de test et de déploiement d’applications logicielles. Cela implique la mise en place d’un pipeline qui crée, teste et déploie automatiquement les modifications de code au fur et à mesure qu’elles sont apportées, permettant une itération et un déploiement rapides de nouvelles fonctionnalités et fonctionnalités.
Source: Le Guide des chefs de produit pour la livraison continue et DevOps
https://www.mindtheproduct.com/
Pourquoi devriez-vous utiliser CI /CD?
L’utilisation de CI/CD pour les développeurs qui construisent des solutions Acumatica comporte plusieurs avantages :
- 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 impliquées dans le 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 peut aider à identifier et à 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 peut vous aider à vous assurer que vos personnalisations et modifications de votre instance Acumatica sont de la plus haute qualité et fiabilité.
- Vitesse et agilité accrues: CI / CD permet aux développeurs d’itérer rapidement sur leur code et de le mettre en production plus rapidement, ce qui leur permet de répondre plus rapidement aux besoins de l’entreprise et aux changements du marché. Cela peut aider votre petite entreprise à rester compétitive dans 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 premier abord, mais c’est un processus assez simple. Voici les étapes que vous devrez suivre :
- Choisissez un système de contrôle de code source : vous devrez utiliser un système de contrôle de code source 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.
- Configurer un serveur de construction : vous aurez besoin d’un serveur de construction pour automatiser le processus de création, de test et de déploiement de votre code. Il peut s’agir d’un ordinateur physique ou d’un ordinateur virtuel hébergé dans le cloud.
- Configurer votre serveur de build : une fois qu’un serveur de build a été configuré, vous devrez le configurer pour exécuter les outils et processus nécessaires à la création, au test et au déploiement de votre code. Cela impliquera généralement l’installation et la configuration d’un outil d’automatisation de la construction tel que Azure DevOps.
- Configurer 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’un ordinateur physique ou virtuel, et peut être hébergé sur site ou dans le cloud.
- Configurer votre environnement de test : vous devrez installer et configurer les outils et les dépendances nécessaires sur votre environnement de test pour exécuter des tests automatisés. Cela impliquera généralement l’installation du framework de test Acumatica et de tout autre outil requis pour vos besoins de test spécifiques.
- Configurer un environnement de déploiement : vous aurez besoin d’un environnement distinct pour déployer votre code en production. Il peut s’agir d’un ordinateur physique ou virtuel.
Pour mettre en œuvre l’IC/DC pour les projets de développement d’Acumatica, il est important d’évaluer l’état actuel des pratiques et des outils de développement. Cela inclut la compréhension de l’utilisation du contrôle de code source pour les projets de personnalisation, l’utilisation du SDK Acumatica Test 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 peuvent simuler les interactions de l’utilisateur avec l’interface utilisateur et valider le comportement et les fonctionnalités de l’application.
Structure du référentiel 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 référentiel GitHub peut inclure une bibliothèque d’extension Acumatica, des artefacts de projet de personnalisation, des projets de test unitaire, un fichier YAML Azure Pipelines, un fichier de configuration NuGet et des scripts et outils de ligne de commande supplémentaires pour publier le package de personnalisation :
Cet exemple de référentiel peut être trouvé à https://github.com/VelixoSolutions/AcumaticaCIDemo
Intégration du contrôle de source Acumatica
L’intégration du contrôle de code source d’Acumatica fournit une intégration avec une gamme d’outils de contrôle de code source. Il fonctionne différemment de Visual Studio et n’est pas un lien direct vers un outil de contrôle de code source spécifique. Au lieu de cela, il facilite la lecture et l’écriture dans un dossier local, qui est lié / abonné à un système de contrôle de code source tel que Git.
Pour plus d’informations, voir « Code source et automatisation pour les développeurs Acumatica » de la conférence Acumatica Virtual Developer Conference 2019
Lien : /media/2019/07/2019-Acumatica-DevCon-Source-Control-Automation.pdf
Création du package de personnalisation
La création du 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’y a-t-il dans un package de personnalisation ?
Puisque notre objectif est d’automatiser ce processus, nous devons compter 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 créer des packages de personnalisation pour Acumatica, mais il a des limitations rendant son utilisation difficile dans le contexte d’un pipeline CI / CD:
- Il nécessite l’installation d’une instance Acumatica complète
- Il est lent - l’instance Acumatica doit démarrer avant que le package puisse être construit
- Il ne fonctionne pas lorsqu’il est exécuté dans le contexte d’un agent de construction.
Comme alternative, j’ai créé une application de ligne de commande simple qui le fait pour vous, sans aucun bagage supplémentaire. Il fournit des options pour spécifier le chemin de personnalisation, le nom du fichier du package et une description du projet de personnalisation. Pour créer un package 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 - s’il vous plaît bifurquer et améliorer!
Publication du package de personnalisation
La publication du package de personnalisation est le processus de déploiement du package sur une instance Acumatica et de mise à la disposition des utilisateurs des personnalisations ou des extensions contenues dans le package. L’API Acumatica Service Gate est une API de service Web située sur /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 plate-forme 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 de 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 également des projets.
Pour publier un package de personnalisation à l’aide de CustomizationPackageTools.exe, les développeurs peuvent utiliser une commande comme celle-ci :
Test: Tirer parti des outils et des cadres de test Acumatica
Acumatica fournit un ensemble d’outils et de cadres de test pour vérifier la fonctionnalité et les performances des personnalisations et des extensions de l’application Acumatica. Le SDK Acumatica Test est un ensemble de bibliothèques construites sur le framework WebDriver Selenium 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 frameworks de test, les développeurs peuvent créer des tests automatisés qui aident à garantir la qualité et la fiabilité de leur code.
Le SDK Acumatica Test 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 d’interface utilisateur personnalisés et peuvent être exécutés sur différentes versions du logiciel Acumatica pour assurer la compatibilité. Le SDK de test repose sur le framework WebDriver Selenium et fournit des outils permettant d’interagir avec l’interface utilisateur D’Acumatica, de définir et de regrouper les cas de test, ainsi que de configurer et de démolir les 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 du code de test à l’aide des outils fournis et exécutent les tests pour vérifier la fonctionnalité des éléments d’interface utilisateur personnalisés. L’utilisation du SDK de test permet d’assurer 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 métier personnalisée et d’autres composants de l’application. Le framework de test unitaire est construit sur le .NET Framework et inclut une bibliothèque appelée PX. Tests.Unité.dll, ainsi que des outils pour la création et l’exécution de tests unitaires. Pour créer un test unitaire, les développeurs installent généralement les bibliothèques de framework, créent un nouveau projet de test à l’aide d’un modèle fourni, écrivent du code de test à l’aide des outils fournis et exécutent les tests pour vérifier la fonctionnalité du code personnalisé. Vous pouvez en savoir plus sur le cadre de test de l’unité Acumatica en consultant le cours T280 - Tester la logique métier avec le cadre de test de l’unité Acumatica sur l’Université ouverte Acumatica.
Un test unitaire d’échantillon
Mettre tout cela ensemble - le fichier YAML 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 impliquées dans le processus, telles que la création du code, l’exécution de tests et le déploiement dans différents environnements. Les artefacts de construction sont les sorties du processus de construction, qui sont stockées dans un emplacement central et peuvent être utilisées 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 de passage à la production, éliminant ainsi la nécessité d’une intervention manuelle.
Vous pouvez voir un exemple de fichier YAML pour un exemple de projet Acumatica CI / CD ici:
https://github.com/VelixoSolutions/AcumaticaCIDemo/blob/main/azure-pipelines.yml
Pipelines de versions Azure
Azure Release Pipelines est un outil dans Azure DevOps qui vous permet d’automatiser le processus de déploiement pour vos applications.
Un pipeline de version définit les étapes de la publication d’une application, y compris le déploiement de code dans divers environnements. Les pipelines de version peuvent avoir plusieurs étapes et portes, ce qui vous permet de créer un processus de déploiement multi-environnement et de contrôler le flux de modifications de code en fonction de conditions telles que le temps ou l’approbation manuelle.
Par exemple, vous pouvez attendre 3 jours après le déploiement dans votre environnement intermédiaire, et si aucun nouvel élément de travail n’a été créé, vous déployez automatiquement en production.
Conclusion
En conclusion, la mise en œuvre d’un processus d’intégration continue et de livraison continue (CI /CD) peut grandement 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 consiste à utiliser un système de contrôle de code source pour gérer votre base de code, ainsi que le cadre de test Acumatica et les tests unitaires pour automatiser le test de vos personnalisations. À l’aide d’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épendront de vos besoins spécifiques et peuvent nécessiter une certaine expérimentation pour trouver le meilleur ajustement pour votre équipe. Dans l’ensemble, la mise en œuvre de CI / CD pour la personnalisation d’Acumatica peut apporter de nombreux avantages et vaut la peine d’être envisagée pour toute équipe de développement.
Bon apprentissage!
Liens de référence 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 pour la livraison continue et DevOps:
https://www.mindtheproduct.com/ - Déployer un agent Azure Pipelines sous Windows : https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops
- Mise en route avec Acumatica Test SDK (VLOG par Robert Waite, Acumatica MVP): https://www.youtube.com/watch?v=LiqTwe_Zhgk
- DÉVELOPPEMENT T280: TEST DE LA LOGIQUE MÉTIER AVEC LE CADRE DE TEST DE L’UNITÉ ACUMATICA 2021 R2: https://openuni.acumatica.com/courses/development/t280-development-testing-business-logic/