Helix4Git管理者ガイド (2019.1)

別のGitホストにフェイルオーバーするためのGit Connector構成

Helix4Gitは、GitLab、GitHub、Gerrit、Helix TeamHubなどのGitサーバからミラーリングできます。 Helix4Gitでは、Gitサーバが利用できなくなった場合、フェイルオーバーサーバからHelix4Gitのミラーリングを手動で設定することをサポートしています。

注意
  • 2つのGitサーバはそれぞれお互いのレプリカである必要があります。
  • Git ConnectorはGitサーバやHelix Coreサーバとは別のマシンで実行する(推奨)ことも、Gitサーバと同じマシンで実行する(推奨)ことも、Helix Coreサーバと同じマシンで実行する(非推奨)こともできます。
  • Perforceは、GitLabおよびGerritでフェイルオーバーをテストしています。

手順

Git Connectorのフェチ元であるサードパーティ製のGitサーバのフェイルオーバーを実行するには、Helix Git Connectorのsetremoteコマンドを使用します。

このコマンドを最初に使用するときは次のように-nオプションを使用することをお勧めします。

gconn --mirrorhooks -n setremote oldUrl newUrl

  • oldUrlは、1つ以上のリポのセットのプライマリGitサーバURLに一致するパターンです。
  • newUrlは、フェイルオーバーまたはセカンダリサーバURLを含めた置換パターンです。この場合、oldUrlパターンに一致するMirroredFrom URLでミラーリングされたすべてのリポジトリが置換により修正されます。
  • -nは、影響する可能性のあるリポ名をプレビューモードで表示します。ただし、操作は実行されません。

操作を実行するには、以下のとおり-nオプションを省略します。

gconn --mirrorhooks setremote oldUrl newUrl

  1. 環境変数GCONN_CONFIGgconn.confファイルへの絶対パスに設定します。

    export GCONN_CONFIG=/opt/perforce/git-connector/gconn.conf

  2. listコマンドを実行してWebhookに関連付けられたリポジトリ名をリストします。

    gconn --mirrorhooks list

    出力は次のようになります。

    gconn --mirrorhooks list
    //graphDepot/project1 <<< http://primaryGitHost/hth/projects/support/repositories/git/project1.git //graphDepot/project2 <<< http://primaryGitHost/hth/projects/support/repositories/git/project2.git ... Not mirrored by this Gconn instance ( no mirror config ) //graphDepot/project3 <<< http://primaryGitHost/hth/projects/support/repositories/git/project3.git ... Not mirrored by this Gconn instance ( no mirror config )
  3. -nオプションを含めて反映結果を確認します。

    gconn -n --mirrorhooks setremote https://primaryGitHost https://secondaryGitHost

    This is a report of a trial run. No MirroredFrom urls are changed.
    Execute without the '-n' option to update the urls.
    //graphDepot/project1: updating remote url from http://primaryGitHost/hth/projects/support/repositories/git/project1.git
    to git@http://secondaryGitHost/hth/projects/support/repositories/git/project1.gitりぽい

    画面出力は、単なるテストであることを示しています。

  4. セカンダリサーバに切り替えるコマンドを実行するには、-nオプションを省略します。

                        gconn --mirrorhooks setremote https://primaryGitHost https://secondaryGitHost
                    
  5. リストコマンドを再度実行してWebhookに関連付ける必要があるリポをリストします。

    gconn --mirrorhooks list

    出力は次のようになります。

    gconn --mirrorhooks list
    //graphDepot/project1 <<< http://secondaryGitHost/hth/projects/support/repositories/git/project1.git //graphDepot/project2 <<< http://primaryGitHost/hth/projects/support/repositories/git/project2.git ... Not mirrored by this Gconn instance ( no mirror config ) //graphDepot/project3 <<< http://primaryGitHost/hth/projects/support/repositories/git/project3.git ... Not mirrored by this Gconn instance ( no mirror config )

効果

setremoteコマンドは、Git Connectorサーバとグラフディポサーバの両方に影響します。

  • Git Connectorサーバで、.mirror.configファイルが再設定され、フェイルオーバーURLが"upstream_url"として指定されます。
  • Git Connectorサーバで、リポのキャッシュされたGitリポジトリのアップストリームのフェッチURLが再設定されます。
  • Helixサーバでリポ仕様が再設定され、MirroredFrom:フィールドでフェイルオーバーURLが指定されます。

コマンドラインのヘルプ

setremoteコマンドでコマンドラインのヘルプを取得するには、Git Connectorコマンドラインで、

gconn --help

と入力しますaddremove、およびlistコマンドの説明に加えて、setremoteコマンドの説明が表示されます。

次の手順

最初に、ミラーリングする各リポのWebhookを使用して、サードパーティのGitサーバのフェイルオーバーを設定します。

注意

リポジトリの.mirror.configファイルにある同じsecretトークンを再利用することができます。

Webhookのセットアップ方法の詳細手順については、次の手順のうち、状況に適合するものを参照してください。

最後に、現在アクティブなGitサーバにプッシュし、WebhookによりGit Connectorが変更をフェッチしてHelix4Gitがこの変更をリポ内にミラーリングすることを検証します。