Mise en miroir automatique entre Concord Pro et votre serveur Git

Ari Mahpour
|  Créé: Septembre 18, 2020  |  Mise à jour: Septembre 19, 2020
Mise en miroir automatique entre Concord Pro et votre serveur Git

Altium Concord Pro™ en tant que produit et marque autonome a été discontinué et ses capacités sont désormais disponibles dans le cadre de nos solutions d'entreprise Altium. Apprenez-en plus ici.

Dans Lier des projets gérés à votre serveur Git avec Altium Concord Pro, nous avons examiné comment miroiter les dépôts Git de votre serveur Altium Concord Pro™ vers votre serveur Git préféré (c'est-à-dire, Github, Bitbucket, Gitlab, etc.). Dans cet article, nous examinerons une approche qui automatise la création d'un miroir de serveur Git et inclut une journalisation complète. Ce que nous allons configurer ici peut fonctionner comme un service Windows sur votre serveur Altium Concord Pro.

Vue d'ensemble

Altium Concord Pro utilise un serveur Git interne pour stocker les Projets Gérés. Au moment de la rédaction de cet article, Concord Pro ne peut pas stocker tous les Projets Gérés sur un serveur Git externe de manière native. Nous allons parcourir un exemple de script et d'architecture qui automatise le processus de miroitage de tous les Projets Gérés sur un serveur Concord Pro vers un autre serveur Git. Pour obtenir le code et créer votre propre miroir de serveur Git, vous pouvez le télécharger depuis ce dépôt Gitlab.

Pourquoi devrions-nous utiliser un miroir de serveur Git ? Il pourrait y avoir une myriade de raisons pour lesquelles on souhaiterait stocker ses conceptions sur un serveur Git externe plutôt que sur Concord Pro. La raison principale est de maintenir une sauvegarde complète de l'historique des révisions. Vous pourriez vouloir une manière simple de gérer les projets depuis votre serveur Concord Pro local. Si un projet est supprimé du serveur Concord Pro, il peut être conservé sur le miroir du serveur Git. Cela fait plus que simplement miroiter les fichiers de projet, cela stocke également un historique des commits, des branches, etc.

Architecture du Miroir de Serveur Git

Il y a quelques composants clés qui constituent ce service :

  1. La Bibliothèque Python Watchdog : Celle-ci surveille les dossiers de répertoire Git sur le serveur Concord Pro et déclenche un événement lorsque des fichiers changent
  2. Bibliothèque Windows Server utilisant pywin32 : Cela transforme un script Python de base en un service Windows afin qu'il puisse être exécuté sur votre serveur Windows sans interruption.
  3. La bibliothèque Python FirebirdSQL : Cela nous permet d'accéder à la base de données Firebird de Concord Pro et d'extraire des informations sur les Projets Gérés
  4. Votre API de serveur Git préférée : Dans cet exemple, la bibliothèque Python Atlassian (Bitbucket) est utilisée pour énumérer les dépôts Bitbucket et en créer de nouveaux si nécessaire.

Le code est divisé en deux parties : la table de correspondance et le synchroniseur. La table de correspondance (également connue sous le nom de "dictionnaire de dépôt" dans le code) sert de lien entre chaque dépôt de projet géré Concord Pro et votre dépôt cible/distant. Puisque Concord Pro utilise des GUID, le nom/la description du dépôt se trouve dans la base de données Firebird. Dans cet exemple, la table de correspondance, ou dict, utilise le GUID comme clé et le dépôt distant (sur votre serveur Git distant) comme valeur. La partie synchroniseur utilise la bibliothèque Watchdog pour surveiller de manière récursive le dossier Git dans le dossier d'installation de Concord Pro pour tout événement de changement de fichier. Lorsque le fichier maître pour n'importe quel dossier (c'est-à-dire dépôt) change, il est relativement sûr de supposer que le HEAD Git a été déplacé vers un nouveau hash. Cela signifie essentiellement que le dépôt a été mis à jour. Cela déclenche un événement qui indique au synchroniseur de refléter le dépôt du GUID du serveur Concord Pro vers le dépôt distant sur le serveur Git distant (en utilisant la table de correspondance du dictionnaire de dépôt). Une fois le mirroring git effectué, la transaction se termine, et le prochain événement dans la file d'attente (s'il en existe un) répète le processus.

Voici un schéma en blocs décrivant les deux parties sous forme de scripts Python :

  1. Git-to-Git Cross Reference : Il s'agit de la table de correspondance générée dans un script
  2. Bibliothèque Python Watchdog : C'est le synchroniseur qui s'exécute dans le script principal
Block Diagram of the Script’s Services
Figure 1: Schéma fonctionnel des services du script

La Table de Correspondance

Il existe de nombreuses manières de générer la table de correspondance qui relie les Projets Gérés Concord Pro aux dépôts du serveur Git distant. Une manière très simple serait de créer manuellement le dépôt distant puis d'insérer un fichier texte dans le script Synchroniseur. Ce script génère un objet dictionnaire, qui indique au synchroniseur quel Projet Géré est le miroir de quel dépôt Git distant. Dans cet exemple, le serveur Git distant est géré par Bitbucket. Par conséquent, l'API Atlassian (Bitbucket) a été utilisée pour valider les dépôts existants et en créer de nouveaux si nécessaire.

Comme mentionné ci-dessus, étant donné que les Projets Gérés utilisent un GUID pour leur schéma de nommage de dépôt, il est nécessaire d'effectuer une fonction de recherche dans la base de données Firebird pour obtenir le nom « réel » du Projet Géré. Après avoir récupéré le nom du projet, cela peut être utilisé pour créer le dépôt sur le serveur distant. Par exemple, un GUID de dépôt pourrait être « E9B1952E-BAFE-4A79-801B-76C0F750A8D7 » avec le nom du Projet Géré comme « Mon Repo ». Ce dépôt n'existera pas initialement sur le serveur distant, et vous devrez peut-être créer une règle générique : tous les espaces sont remplacés par un tiret, et tous les caractères sont convertis en minuscules. Cela aboutira à ce que le nom de votre dépôt distant devienne « mon-repo ». Vous émettez un appel API pour créer le dépôt puis le stockez dans votre table/fichier de dictionnaire. Une fois cette initialisation de la table de recherche terminée (y compris la création de dépôts qui n'existent pas encore sur le serveur distant), vous êtes prêt à démarrer le synchroniseur.

Le Synchroniseur

Comme discuté précédemment, le synchroniseur recherche les modifications de fichiers dans le dossier des Projets Gérés Concord Pro. Il les réplique ensuite sur le serveur distant en utilisant la table de correspondance fournie par le script du dictionnaire de dépôt. Il existe des fonctions auxiliaires telles que la journalisation complète et la gestion des services Windows qui se déroulent en arrière-plan, mais elles ne font pas partie de la fonctionnalité principale du script. Bien que ce script ne soit pas exhaustif et infaillible, il constitue une bonne démonstration de la manière dont on peut créer un service de miroir automatisé entre Concord Pro et un miroir de serveur Git distant.

Conclusion

Dans cet article, nous avons passé en revue et fourni un exemple sur la manière de créer automatiquement un miroir de serveur Git et de le peupler avec les Projets Gérés dans votre instance Altium Concord Pro. Vous pouvez utiliser un serveur Git distant tel que Github, Gitlab ou Bitbucket comme miroir de votre serveur Git pour stocker vos projets Altium Concord Pro. Nous avons examiné l'architecture et les services nécessaires pour assembler cette solution, puis expliqué comment ils s'articulent tous ensemble.

Cet exemple ne couvre pas tous les cas particuliers. Cependant, ce type de miroir est facile à mettre en œuvre en tant que service sur un serveur Windows qui héberge Altium Concord Pro. Nous avons profité de l'API sur un serveur Atlassian (Bitbucket) via leur bibliothèque Python, mais vous pourriez également implémenter cela sur un autre serveur Git tant que vous avez accès à l'API. Si vous travaillez sur votre propre serveur personnalisé, vous pouvez suivre ces mêmes étapes avec votre propre code pour créer un miroir de serveur Git de vos projets Altium Concord Pro.

Parlez dès aujourd'hui à un expert Altium pour en savoir plus.

A propos de l'auteur

A propos de l'auteur

Ari est un ingénieur doté d'une solide expérience dans la conception, la fabrication, les tests et l'intégration de systèmes électriques, mécaniques et logiciels. Il aime collaborer avec des ingénieurs chargés de la conception, la vérification et les tests afin de favoriser les synergies.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.