Altium Concord Pro™ как самостоятельный продукт и торговая марка был прекращен, и теперь его возможности доступны в рамках наших корпоративных решений Altium. Узнать больше можно здесь.
В статье Связывание управляемых проектов с вашим Git-сервером с использованием Altium Concord Pro мы рассмотрели, как создать зеркало репозиториев Git с вашего сервера Altium Concord Pro™ на ваш предпочтительный Git-сервер (например, Github, Bitbucket, Gitlab и т.д.). В этой статье мы рассмотрим подход, который автоматизирует создание зеркала Git-сервера и включает в себя всестороннее ведение журнала. То, что мы здесь настроим, может работать как служба Windows на вашем сервере Altium Concord Pro.
Altium Concord Pro использует внутренний Git-сервер для хранения управляемых проектов. На момент написания этой статьи Concord Pro не имеет возможности нативно хранить все управляемые проекты на внешнем Git-сервере. Мы рассмотрим пример скрипта и архитектуру, которые автоматизируют процесс зеркалирования всех управляемых проектов с сервера Concord Pro на другой Git-сервер. Чтобы получить код и создать свое собственное зеркало Git-сервера, вы можете скачать его из этого репозитория на Gitlab.
Почему мы должны использовать зеркало сервера Git? Существует множество причин, по которым кто-то захочет хранить свои проекты на внешнем сервере Git вместо Concord Pro. Основная причина заключается в поддержании полной истории изменений в качестве резервной копии. Возможно, вы захотите простой способ управления проектами с вашего локального сервера Concord Pro. Если проект удаляется с сервера Concord Pro, он может быть сохранен на зеркальном сервере Git. Это делает больше, чем просто копирование файлов проекта, оно также сохраняет историю коммитов, веток и т.д.
Существует несколько ключевых компонентов, формирующих эту услугу:
Код разделен на две части: таблицу поиска и синхронизатор. Таблица поиска (также известная как "словарь репозитория" в коде) служит связующим звеном между каждым репозиторием управляемого проекта Concord Pro и вашим целевым/удаленным репозиторием. Поскольку Concord Pro использует GUID, имя/описание репозитория находится в базе данных Firebird. В этом примере таблица поиска, или словарь, использует GUID в качестве ключа и удаленный репозиторий (на вашем удаленном Git-сервере) в качестве значения. Часть синхронизатора использует библиотеку Watchdog для рекурсивного мониторинга папки Git в папке установки Concord Pro на предмет любых событий изменения файлов. Когда основной файл для любой папки (т.е. репозитория) изменяется, можно с достаточной уверенностью предположить, что Git HEAD был перемещен на новый хеш. Это, по сути, означает, что репозиторий был обновлен. Это вызывает генерацию события, которое сообщает синхронизатору о необходимости зеркального отображения репозитория GUID с сервера Concord Pro на удаленный репозиторий на удаленном Git-сервере (используя таблицу поиска словаря репозитория). После зеркального отображения git транзакция завершается, и следующее событие в очереди (если оно существует) повторяет процесс.
Ниже представлена блок-схема, описывающая две части в виде скриптов на Python:
Существует множество способов создания таблицы поиска, которая связывает управляемые проекты Concord Pro с репозиториями удаленного сервера Git. Один из очень простых способов - вручную создать удаленный репозиторий, а затем загрузить в синхронизирующий скрипт текстовый файл. Этот скрипт генерирует объект словаря, который указывает синхронизатору, какой управляемый проект является зеркалом какого удаленного репозитория Git. В данном примере удаленный сервер Git управляется Bitbucket. Поэтому для проверки существующих репозиториев и создания новых при необходимости использовался API Atlassian (Bitbucket).
Как упоминалось выше, поскольку Управляемые Проекты используют GUID в качестве схемы именования своего репозитория, необходимо выполнить функцию поиска в базе данных Firebird, чтобы получить «настоящее» имя Управляемого Проекта. После получения имени проекта его можно использовать для создания репозитория на удаленном сервере. Например, GUID репозитория может быть «E9B1952E-BAFE-4A79-801B-76C0F750A8D7» с именем Управляемого Проекта как «My Repo». Изначально этот репозиторий не будет существовать на удаленном сервере, и вам может потребоваться создать общее правило: все пробелы заменяются на тире, а все символы преобразуются в нижний регистр. В результате имя вашего удаленного репозитория станет «my-repo». Вы выполняете API-вызов для создания репозитория, а затем сохраняете его в вашей таблице/файле словаря. После завершения инициализации таблицы поиска (включая создание репозиториев, которых еще нет на удаленном сервере), вы готовы начать работу синхронизатора.
Как обсуждалось выше, синхронизатор ищет изменения файлов в папке управляемых проектов Concord Pro. Затем он отражает их на удаленном сервере, используя таблицу соответствия, предоставленную скриптом словаря репозитория. Существуют вспомогательные функции, такие как всестороннее ведение журнала и управление службами Windows, которые происходят в фоновом режиме, но они не являются частью основной функциональности скрипта. Хотя этот скрипт не является исчерпывающим и не безошибочным, он хорошо демонстрирует, как можно создать автоматизированную службу зеркалирования между Concord Pro и зеркальным сервером Git на удаленном сервере.
В этой статье мы рассмотрели и предоставили пример того, как автоматически создать зеркало сервера Git и заполнить его управляемыми проектами из вашего экземпляра Altium Concord Pro. Вы можете использовать удаленный сервер Git, такой как Github, Gitlab или Bitbucket, в качестве зеркала сервера Git для хранения ваших проектов Altium Concord Pro. Мы рассмотрели архитектуру и необходимые для реализации этого решения службы, а затем объяснили, как все они сочетаются вместе.
Этот пример не охватывает все возможные особые случаи. Однако такое зеркалирование легко реализовать в виде сервиса на сервере Windows, на котором размещен Altium Concord Pro. Мы воспользовались API на сервере Atlassian (Bitbucket) через их библиотеку Python, но вы также можете реализовать это на другом Git-сервере, если у вас есть доступ к API. Если вы работаете на своем собственном сервере, вы можете следовать этим же шагам с вашим собственным кодом, чтобы создать зеркало Git-сервера ваших проектов Altium Concord Pro.
Обратитесь к эксперту Altium сегодня, чтобы узнать больше.