Concord Pro と Git サーバー間の自動ミラーリング

Ari Mahpour
|  投稿日 2020/09/18, 金曜日  |  更新日 2020/09/19, 土曜日
Concord Pro と Git サーバー間の自動ミラーリング

Altium Concord Pro™ としての単独製品およびブランド名は廃止され、その機能は現在、Altiumのエンタープライズソリューションの一部として利用可能です。詳細はこちら

「Altium Concord Proを使用して管理されたプロジェクトをGitサーバーとリンクする」では、Altium Concord Pro™サーバーからお気に入りのGitサーバー(例:Github、Bitbucket、Gitlabなど)へのGitリポジトリのミラーリング方法について検討しました。この記事では、Gitサーバーミラーの作成を自動化し、包括的なログを含むアプローチをレビューします。ここで設定するものは、Altium Concord Proサーバー上でWindowsサービスとして実行できます。

概要

Altium Concord Proは内部のGitサーバーを使用して管理プロジェクトを保存します。この記事を書いている時点で、Concord Proは外部のGitサーバーにすべての管理プロジェクトをネイティブに保存する方法がありません。Concord Proサーバー上のすべての管理プロジェクトを別のGitサーバーにミラーリングするプロセスを自動化するスクリプトとアーキテクチャの例を紹介します。独自のGitサーバーミラーを作成するためのコードを入手するには、このGitlabリポジトリからダウンロードできます。

なぜGitサーバーミラーを使用するべきなのでしょうか?Concord Proではなく、外部のGitサーバーに設計を保存したい理由はたくさんあるかもしれません。主な理由は、包括的なリビジョン履歴のバックアップを維持することです。オンプレミスのConcord Proサーバーからプロジェクトを簡単に管理したい場合があります。プロジェクトがConcord Proサーバーから削除されても、Gitサーバーミラーに保持することができます。これはプロジェクトファイルを単にミラーリングするだけでなく、コミット、ブランチなどの履歴も保存します。

Gitサーバーミラーアーキテクチャ

このサービスを構成するいくつかの重要なコンポーネントがあります:

  1. Watchdog Pythonライブラリ:これはConcord Proサーバー上のGitリポジトリフォルダを監視し、ファイルに変更があった場合にイベントをトリガーします
  2. Windows Serverライブラリはpywin32を利用しています:これにより、基本的なPythonスクリプトをWindowsサービスに変換し、Windows Server上で中断なく実行できます。
  3. FirebirdSQL Python ライブラリ:これにより、Concord Pro の Firebird データベースにアクセスし、管理されたプロジェクトに関する情報を抽出することができます。
  4. お気に入りの Git サーバーの API:この例では、Atlassian (Bitbucket) Python ライブラリを使用して Bitbucket リポジトリを列挙し、必要に応じて新しいリポジトリを作成します。

コードは2つの部分に分けられます:ルックアップテーブルと同期器です。ルックアップテーブル(コード内では「リポジトリ辞書」としても知られています)は、各Concord Pro管理プロジェクトリポジトリとあなたのターゲット/リモートリポジトリとの間のリンカーとして機能します。Concord ProはGUIDを使用しているため、リポジトリ名/説明はFirebirdデータベース内にあります。この例では、ルックアップテーブル、または辞書は、GUIDをキーとして、リモートリポジトリ(あなたのリモートGitサーバー上)を値として使用します。同期器部分は、Watchdogライブラリを使用して、Concord Proインストールフォルダ内のGitフォルダを再帰的に監視し、ファイル変更イベントがあるかどうかを監視します。任意のフォルダ(つまりリポジトリ)のマスターファイルが変更された場合、Git HEADが新しいハッシュに移動されたと比較的安全に仮定できます。これは、基本的にリポジトリが更新されたことを意味します。これにより、イベントが生成され、同期器にConcord ProサーバーからリモートGitサーバー上のリモートリポジトリへGUIDのリポジトリをミラーリングするよう指示します(リポジトリ辞書ルックアップテーブルを使用して)。gitミラーリングが行われると、トランザクションが完了し、キュー内の次のイベント(存在する場合)がプロセスを繰り返します。

以下は、Pythonスクリプトとしての2つの部分を示すブロック図です:

  1. Git-to-Git クロスリファレンス:これは、1つのスクリプトで生成されるルックアップテーブルです
  2. Watchdog Python ライブラリ:これは、メインスクリプトで実行される同期化ツールです
Block Diagram of the Script’s Services
Figure 1: スクリプトのサービスのブロック図

ルックアップテーブル

Concord Pro 管理プロジェクトをリモートのGitサーバーのリポジトリにリンクするルックアップテーブルを生成する方法は多数あります。非常に簡単な方法の一つは、リモートリポジトリを手動で作成し、その後テキストファイルを同期化スクリプトに入力することです。このスクリプトは、どの管理プロジェクトがどのリモートGitリポジトリに対応するかを指示する辞書オブジェクトを生成します。この例では、リモートのGitサーバーはBitbucketによって管理されています。したがって、既存のリポジトリを検証し、必要に応じて新しいリポジトリを作成するために、Atlassian(Bitbucket)APIが使用されています。

上記のように、マネージドプロジェクトがリポジトリ名にGUIDを使用しているため、Firebirdデータベースでルックアップ機能を実行してマネージドプロジェクトの「真の」名前を取得する必要があります。プロジェクトの名前を取得した後、これを使用してリモートサーバー上にリポジトリを作成できます。たとえば、リポジトリのGUIDが「E9B1952E-BAFE-4A79-801B-76C0F750A8D7」で、マネージドプロジェクトの名前が「My Repo」である場合、そのリポジトリは当初リモートサーバー上に存在しません。そして、一般的なルールを作成する必要があるかもしれません:すべてのスペースはダッシュに置き換えられ、すべての文字は小文字に変換されます。これにより、リモートリポジトリ名が「my-repo」になります。APIコールを発行してリポジトリを作成し、それを辞書テーブル/ファイルに保存します。このルックアップテーブルの初期化が完了すると(リモートサーバー上にまだ存在しないリポジトリを作成することを含む)、同期化を開始する準備が整います。

同期化

上で議論したように、同期化ツールはConcord Pro Managed Projectsフォルダ内のファイル変更を探します。それから、リポジトリ辞書スクリプトによって提供されたルックアップテーブルを使用して、リモートサーバーにそれをミラーリングします。包括的なログ記録やWindowsサービス管理などの補助機能がバックグラウンドで行われますが、これらはスクリプトのコア機能の一部ではありません。このスクリプトは網羅的ではなく万全ではありませんが、Concord ProとリモートのGitサーバーミラー間で自動ミラーリングサービスを作成する方法を示す良いデモンストレーションです。

結論

この記事では、Altium Concord ProインスタンスのManaged Projectsを自動的にGitサーバーミラーに作成し、それに入れる方法について検討し、例を提供しました。Github、Gitlab、BitbucketなどのリモートGitサーバーを使用して、Altium Concord Proプロジェクトを保存するためのGitサーバーミラーとして使用できます。このソリューションをまとめるために必要なアーキテクチャとサービスを見て、それらがどのように一緒に機能するかを説明しました。

この例では、すべての特殊ケースを網羅していません。しかし、このタイプのミラーリングは、Altium Concord ProをホストするWindowsサーバー上でサービスとして実装するのが簡単です。私たちは、Atlassian(Bitbucket)サーバー上のAPIを彼らのPythonライブラリを通じて利用しましたが、APIアクセスがあれば、他のGitサーバー上でもこれを実装することができます。独自のカスタムサーバーを作業している場合は、独自のコードでこれらの同じステップに従って、Altium Concord ProプロジェクトのGitサーバーミラーを作成できます。

今日、Altiumの専門家に相談してさらに詳しく学びましょう。

筆者について

筆者について

Ariは、設計、デバイスパッケージ、テスト、および電気、機械、およびソフトウェアシステムの統合において幅広い経験を持つエンジニアです。彼は、設計/デザイン、検証、テストのエンジニアをまとめて団結したグループとして機能させることに情熱を注いでいます。

関連リソース

関連する技術文書

ホームに戻る
Thank you, you are now subscribed to updates.