Altium Concord Pro™ jako samodzielny produkt i marka został wycofany, a jego możliwości są teraz dostępne jako część naszych rozwiązań korporacyjnych Altium. Dowiedz się więcej tutaj.
W Łączenie zarządzanych projektów z serwerem Git za pomocą Altium Concord Pro, omówiliśmy sposób klonowania repozytoriów Git z serwera Altium Concord Pro™ na ulubiony serwer Git (np. Github, Bitbucket, Gitlab itp.). W tym artykule omówimy podejście, które automatyzuje tworzenie lustrzanego serwera Git i obejmuje kompleksowe logowanie. To, co tutaj ustawimy, może działać jako usługa Windows na serwerze Altium Concord Pro.
Altium Concord Pro używa wewnętrznego serwera Git do przechowywania zarządzanych projektów. W chwili pisania tego artykułu, Concord Pro nie ma możliwości natywnego przechowywania wszystkich zarządzanych projektów na zewnętrznym serwerze Git. Przejdziemy przez przykładowy skrypt i architekturę, która automatyzuje proces lustracji wszystkich zarządzanych projektów na serwerze Concord Pro na inny serwer Git. Aby uzyskać kod i stworzyć własne lustrzane odbicie serwera Git, możesz pobrać go z tego repozytorium Gitlab.
Dlaczego powinniśmy używać lustrzanego serwera Git? Istnieje wiele powodów, dla których ktoś mógłby chcieć przechowywać swoje projekty na zewnętrznym serwerze Git, a nie na Concord Pro. Głównym powodem jest utrzymanie kompleksowej kopii zapasowej historii rewizji. Możesz chcieć mieć prosty sposób na zarządzanie projektami z lokalnego serwera Concord Pro. Jeśli projekt zostanie usunięty z serwera Concord Pro, może być zachowany na lustrzanym serwerze Git. To robi coś więcej niż tylko kopiowanie plików projektu, przechowuje również historię commitów, gałęzi itp.
Istnieje kilka kluczowych komponentów, które tworzą tę usługę:
Kod podzielony jest na dwie części: tabelę wyszukiwań i synchronizator. Tabela wyszukiwań (znana również jako "słownik repozytorium" w kodzie) służy jako łącznik między każdym repozytorium zarządzanym przez Concord Pro Managed Project a docelowym/zdalnym repozytorium. Ponieważ Concord Pro używa GUID, nazwa/opis repozytorium znajduje się w bazie danych Firebird. W tym przykładzie tabela wyszukiwań, czyli dict, używa GUID jako klucza i zdalne repozytorium (na zdalnym serwerze Git) jako wartości. Część synchronizatora używa biblioteki Watchdog do rekursywnego monitorowania folderu Git w folderze instalacyjnym Concord Pro pod kątem jakichkolwiek zdarzeń zmiany plików. Gdy główny plik dla dowolnego folderu (tj. repozytorium) ulegnie zmianie, można z dużym prawdopodobieństwem założyć, że Git HEAD został przeniesiony do nowego hasha. To, w zasadzie, oznacza, że repozytorium zostało zaktualizowane. Wywołuje to generowanie zdarzenia, które informuje synchronizator o konieczności odbicia repozytorium GUID z serwera Concord Pro do zdalnego repozytorium na zdalnym serwerze Git (używając tabeli wyszukiwań słownika repozytorium). Gdy nastąpi mirroring git, transakcja zostaje zakończona, a następne zdarzenie w kolejce (jeśli takie istnieje) powtarza proces.
Poniższy schemat blokowy przedstawia dwa elementy jako skrypty Pythona:
Istnieje wiele sposobów na wygenerowanie tabeli przeszukiwań, która łączy zarządzane projekty Concord Pro z repozytoriami zdalnego serwera Git. Jednym z bardzo trywialnych sposobów byłoby ręczne utworzenie zdalnego repozytorium, a następnie wprowadzenie pliku tekstowego do skryptu Synchronizatora. Ten skrypt generuje obiekt słownika, który instruuje synchronizator, które zarządzane projekty są lustrzanymi odbiciami którego zdalnego repozytorium Git. W tym przykładzie zdalny serwer Git jest zarządzany przez Bitbucket. Dlatego użyto API Atlassian (Bitbucket) do weryfikacji istniejących repozytoriów i tworzenia nowych w razie potrzeby.
Jak wspomniano powyżej, ponieważ Zarządzane Projekty używają GUID jako schematu nazewnictwa repozytorium, konieczne jest wykonanie funkcji wyszukiwania w bazie danych Firebird, aby uzyskać „prawdziwą” nazwę Zarządzanego Projektu. Po odnalezieniu nazwy projektu, można jej użyć do utworzenia repozytorium na zdalnym serwerze. Na przykład, identyfikator GUID repozytorium może być „E9B1952E-BAFE-4A79-801B-76C0F750A8D7”, a nazwa Zarządzanego Projektu to „My Repo”. To repozytorium początkowo nie będzie istnieć na zdalnym serwerze i może być konieczne utworzenie ogólnej reguły: wszystkie spacje zostają zastąpione myślnikiem, a wszystkie znaki zostają zamienione na małe litery. W rezultacie nazwa twojego zdalnego repozytorium stanie się „my-repo”. Wydajesz wywołanie API, aby utworzyć repozytorium, a następnie zapisujesz je w swojej tabeli/słowniku. Po zakończeniu inicjalizacji tabeli wyszukiwania (w tym tworzenia repozytoriów, które jeszcze nie istnieją na zdalnym serwerze), jesteś gotowy do uruchomienia synchronizatora.
Jak omówiono powyżej, synchronizator szuka zmian w plikach w folderze Zarządzanych Projektów Concord Pro. Następnie odbija je na zdalnym serwerze, korzystając z tabeli przekierowań dostarczonej przez skrypt słownika repozytorium. Istnieją funkcje pomocnicze, takie jak kompleksowe logowanie i zarządzanie usługami Windows, które działają w tle, ale nie są częścią podstawowej funkcjonalności skryptu. Chociaż ten skrypt nie jest wyczerpujący i nie jest niezawodny, jest dobrym przykładem na to, jak można stworzyć zautomatyzowaną usługę lustrzaną między Concord Pro a zdalnym serwerem Git.
W tym artykule przeanalizowaliśmy i przedstawiliśmy przykład, jak automatycznie utworzyć lustrzane odbicie serwera Git i zapełnić je Zarządzanymi Projektami w twojej instancji Altium Concord Pro. Możesz użyć zdalnego serwera Git, takiego jak Github, Gitlab lub Bitbucket, jako lustrzanego serwera Git do przechowywania twoich projektów Altium Concord Pro. Przyjrzeliśmy się architekturze i usługom potrzebnym do złożenia tego rozwiązania, a następnie wyjaśniliśmy, jak wszystko to do siebie pasuje.
Ten przykład nie obejmuje każdego szczególnego przypadku. Jednakże, tego typu lustrzane odbicie jest łatwe do wdrożenia jako usługa na serwerze Windows, który hostuje Altium Concord Pro. Skorzystaliśmy z API na serwerze Atlassian (Bitbucket) za pośrednictwem ich biblioteki Python, ale można również zaimplementować to na innym serwerze Git, o ile ma się dostęp do API. Jeśli pracujesz na własnym niestandardowym serwerze, możesz postępować zgodnie z tymi samymi krokami, używając własnego kodu, aby stworzyć lustrzane odbicie serwera Git Twoich projektów Altium Concord Pro.
Porozmawiaj z ekspertem Altium już dziś, aby dowiedzieć się więcej.