Automatisierte Spiegelung zwischen Concord Pro und Ihrem Git-Server

Ari Mahpour
|  Erstellt: September 18, 2020  |  Aktualisiert am: September 19, 2020
Automatisierte Spiegelung zwischen Concord Pro und Ihrem Git-Server

Altium Concord Pro™ als eigenständiges Produkt und Markenname wurde eingestellt, und die Funktionen sind jetzt als Teil unserer Altium Enterprise-Lösungen verfügbar. Erfahren Sie mehr hier.

In Verknüpfung von verwalteten Projekten mit Ihrem Git-Server unter Verwendung von Altium Concord Pro haben wir besprochen, wie man Git-Repositorys von Ihrem Altium Concord Pro™-Server auf Ihren bevorzugten Git-Server (z.B. Github, Bitbucket, Gitlab usw.) spiegelt. In diesem Artikel werden wir einen Ansatz überprüfen, der die Erstellung eines Git-Server-Spiegels automatisiert und umfassendes Logging beinhaltet. Was wir hier einrichten, kann als Windows-Dienst auf Ihrem Altium Concord Pro-Server laufen.

Übersicht

Altium Concord Pro verwendet einen internen Git-Server, um verwaltete Projekte zu speichern. Zum Zeitpunkt der Erstellung dieses Artikels hat Concord Pro keine Möglichkeit, alle verwalteten Projekte nativ auf einem externen Git-Server zu speichern. Wir werden ein Beispiel-Skript und eine Architektur durchgehen, die den Prozess des Spiegelns aller verwalteten Projekte auf einem Concord Pro-Server auf einen anderen Git-Server automatisiert. Um den Code zu erhalten und Ihren eigenen Git-Server-Spiegel zu erstellen, können Sie ihn aus diesem Gitlab-Repository herunterladen.

Warum sollten wir einen Git-Server-Spiegel verwenden? Es könnte eine Vielzahl von Gründen geben, warum man seine Entwürfe auf einem externen Git-Server anstatt auf Concord Pro speichern möchte. Der primäre Grund ist, eine umfassende Sicherung der Versionsgeschichte zu erhalten. Vielleicht möchten Sie eine einfache Möglichkeit, Projekte von Ihrem lokalen Concord Pro-Server zu verwalten. Wenn ein Projekt vom Concord Pro-Server gelöscht wird, kann es auf dem Git-Server-Spiegel aufbewahrt werden. Dies tut mehr als nur Projektdateien zu spiegeln, es speichert auch eine Historie von Commits, Branches usw.

Architektur des Git-Server-Spiegels

Es gibt einige Schlüsselkomponenten, die diesen Dienst ausmachen:

  1. Die Watchdog Python-Bibliothek: Diese überwacht die Git-Repository-Ordner auf dem Concord Pro-Server und löst ein Ereignis aus, wenn sich Dateien ändern
  2. Windows Server-Bibliothek unter Verwendung von pywin32: Dies verwandelt ein einfaches Python-Skript in einen Windows-Dienst, sodass es auf Ihrem Windows-Server ohne Unterbrechung ausgeführt werden kann.
  3. Die FirebirdSQL Python-Bibliothek: Diese ermöglicht es uns, auf die Firebird-Datenbank von Concord Pro zuzugreifen und Informationen über die verwalteten Projekte zu extrahieren
  4. Ihre bevorzugte Git-Server-API: In diesem Beispiel wird die Atlassian (Bitbucket) Python-Bibliothek verwendet, um Bitbucket-Repositories aufzulisten und bei Bedarf neue zu erstellen.

Der Code ist in zwei Teile gegliedert: die Lookup-Tabelle und den Synchronisierer. Die Lookup-Tabelle (auch bekannt als das „Repo-Dictionary“ im Code) dient als Verknüpfung zwischen jedem Concord Pro Managed Project-Repository und Ihrem Ziel-/Remote-Repository. Da Concord Pro GUIDs verwendet, befindet sich der Repository-Name/die Beschreibung in der Firebird-Datenbank. In diesem Beispiel verwendet die Lookup-Tabelle oder das Dict die GUID als Schlüssel und das Remote-Repository (auf Ihrem Remote-Git-Server) als Wert. Der Synchronisierer-Teil verwendet die Watchdog-Bibliothek, um rekursiv den Git-Ordner im Concord Pro Installationsordner auf jegliche Dateiänderungsereignisse zu überwachen. Wenn die Masterdatei für einen Ordner (d.h. Repository) geändert wird, kann man relativ sicher davon ausgehen, dass der Git HEAD auf einen neuen Hash verschoben wurde. Das bedeutet im Wesentlichen, dass das Repository aktualisiert wurde. Dies löst ein Ereignis aus, das den Synchronisierer anweist, das GUID-Repository vom Concord Pro-Server auf das Remote-Repository auf dem Remote-Git-Server zu spiegeln (unter Verwendung der Repo-Dictionary-Lookup-Tabelle). Sobald die Git-Spiegelung erfolgt ist, wird die Transaktion abgeschlossen, und das nächste Ereignis in der Warteschlange (sollte eines existieren) wiederholt den Prozess.

Das Folgende ist ein Blockdiagramm, das die beiden Teile als Python-Skripte darstellt:

  1. Git-zu-Git-Kreuzreferenz: Dies ist die Suchtabelle, die in einem Skript generiert wird
  2. Watchdog Python-Bibliothek: Dies ist der Synchronisierer, der im Hauptskript läuft
Block Diagram of the Script’s Services
Figure 1: Blockdiagramm der Dienste des Skripts

Die Suchtabelle

Es gibt viele Möglichkeiten, die Suchtabelle zu generieren, die die Concord Pro Managed Projects mit den Repositories des entfernten Git-Servers verlinkt. Eine sehr triviale Methode wäre, das entfernte Repository manuell zu erstellen und dann eine Textdatei in das Synchronisierer-Skript einzuspeisen. Dieses Skript erzeugt ein Wörterbuchobjekt, welches den Synchronisierer anweist, welches Managed Project welchem entfernten Git-Repository entspricht. In diesem Beispiel wird der entfernte Git-Server von Bitbucket verwaltet. Daher wurde die Atlassian (Bitbucket) API verwendet, um vorhandene Repositories zu validieren und bei Bedarf neue zu erstellen.

Wie oben erwähnt, da die verwalteten Projekte GUID für ihr Repository-Namensschema verwenden, ist es notwendig, eine Suchfunktion in der Firebird-Datenbank durchzuführen, um den „wahren“ Namen des verwalteten Projekts zu erhalten. Nachdem der Name des Projekts abgerufen wurde, kann dieser verwendet werden, um das Repository auf dem entfernten Server zu erstellen. Zum Beispiel könnte eine Repository-GUID „E9B1952E-BAFE-4A79-801B-76C0F750A8D7“ lauten, mit dem Namen des verwalteten Projekts als „My Repo“. Dieses Repository wird anfangs nicht auf dem entfernten Server existieren, und Sie müssen möglicherweise eine allgemeine Regel erstellen: Alle Leerzeichen werden durch einen Bindestrich ersetzt und alle Buchstaben in Kleinbuchstaben umgewandelt. Dies führt dazu, dass Ihr entfernter Repository-Name zu „my-repo“ wird. Sie geben einen API-Aufruf aus, um das Repository zu erstellen und dann in Ihrer Wörterbuch-Tabelle/Datei zu speichern. Sobald diese Initialisierung der Suchtabelle abgeschlossen ist (einschließlich der Erstellung von Repositories, die auf dem entfernten Server noch nicht existieren), sind Sie bereit, den Synchronisierer zu starten.

Der Synchronisierer

Wie oben besprochen, sucht der Synchronisierer nach Dateiänderungen im Ordner für verwaltete Projekte von Concord Pro. Anschließend spiegelt er diese Änderungen mithilfe der vom Repo-Dictionary-Skript bereitgestellten Lookup-Tabelle auf den Remote-Server. Es gibt Hilfsfunktionen wie umfassendes Logging und die Verwaltung von Windows-Diensten, die im Hintergrund ablaufen, aber sie sind nicht Teil der Kernfunktionalität des Skripts. Obwohl dieses Skript nicht erschöpfend und nicht fehlerfrei ist, stellt es eine gute Demonstration dar, wie man einen automatisierten Spiegelungsdienst zwischen Concord Pro und einem entfernten Git-Server-Spiegel erstellen kann.

Schlussfolgerung

In diesem Artikel haben wir überprüft und ein Beispiel dafür gegeben, wie man automatisch einen Git-Server-Spiegel erstellen und ihn mit den verwalteten Projekten in Ihrer Altium Concord Pro-Instanz bevölkern kann. Sie können einen entfernten Git-Server wie Github, Gitlab oder Bitbucket als Ihren Git-Server-Spiegel verwenden, um Ihre Altium Concord Pro-Projekte zu speichern. Wir haben uns die Architektur und die Dienste angesehen, die benötigt werden, um diese Lösung zusammenzustellen, und dann erklärt, wie alles zusammenpasst.

Dieses Beispiel deckt nicht jeden Sonderfall ab. Allerdings ist diese Art der Spiegelung einfach als Dienst auf einem Windows-Server zu implementieren, der Altium Concord Pro hostet. Wir haben von der API auf einem Atlassian (Bitbucket) Server durch deren Python-Bibliothek Gebrauch gemacht, aber Sie könnten dies auch auf einem anderen Git-Server implementieren, solange Sie Zugang zur API haben. Wenn Sie an Ihrem eigenen benutzerdefinierten Server arbeiten, können Sie diesen gleichen Schritten mit Ihrem eigenen Code folgen, um einen Git-Server-Spiegel Ihrer Altium Concord Pro-Projekte zu erstellen.

Sprechen Sie noch heute mit einem Altium-Experten, um mehr zu erfahren.

Über den Autor / über die Autorin

Über den Autor / über die Autorin

Ari ist ein PCB-Designer mit umfassender Erfahrung in der Entwicklung, Herstellung, Prüfung und Integration verschiedener Softwaresysteme. Dabei bringt er leidenschaftlich gern Entwickler aus den Bereichen Design, Prüfung und Abnahme zusammen, um gemeinsam an Projekten zu arbeiten und diese voranzutreiben.

Ähnliche Resourcen

Verwandte technische Dokumentation

Zur Startseite
Thank you, you are now subscribed to updates.