第18章 リポジトリーフック

Business Central で、フックとして知られるスクリプトを使用し、特定のイベントが発生するたびに、リポジトリーが指定のアクションをトリガーするように設定できます。Git フックの詳細は、Customizing Git Hooks を参照してください。

18.1. Git フックの設定

Business Central では、コミット後のフックを設定し、Git フックを使用してリモートのリポジトリーに対して自動的に変更をプッシュできます。

注記

現在、コミット後にフックのみがサポートされています。コミット後のフックは、コミットプロセスの完了後にトリガーされます。

前提条件

  • Red Hat JBoss EAP 7.2 サーバーインスタンスに Red Hat Decision Manager がインストールされている。
  • Red Hat Decision Manager プロジェクトが外部の Git リポジトリーに存在している。
  • 外部 Git リポジトリーへの読み取りアクセスに必要な認証情報。
  • (Windows の場合) Cygwin は、インストール時に追加される Git パッケージでインストールします。Cygwin /bin フォルダーへのパスは、お使いの環境の PATH 変数に追加されます。たとえば、C:\cygwin64\bin です。Cygwin のインストールに関する詳細は、Installing and Updating Cygwin Packages を参照してください。

手順

  1. Business Central で、MenuProjects に移動します。
  2. Git プロジェクトをインポートするスペースを選択または作成します。
  3. 画面の右側の dots をクリックして、Import Project を選択します。
  4. Import Project ウィンドウで、Git リポジトリーの URL を入力します (例: https://github.com/USERNAME/REPOSITORY_NAME.git および Git リポジトリーの認証情報)。
  5. Import をクリックします。

    プロジェクトを Business Central の Git リポジトリーに追加すると、スペースで使用できるようになります。

    重要

    SCP スタイルの SSH URL の代わりに、HTTPS または Git プロトコルを使用します。Business Central は基本的な SSH URL をサポートしないため、この URL を使用する場合はエラーが発生します。

    公開 SSH キーを Git プロバイダーに設定する必要があります。

    Git リポジトリーは、Red Hat Decision Manager のバージョンと互換性のある KJAR が 1 つだけ含まれる、KJAR プロジェクトでなければなりません。KJAR コンテンツは、リポジトリーのルートに配置する必要があります。

  6. コマンドターミナルで、リポジトリーのフォルダーに移動します。

    cd JBOSS_HOME/bin/.niogit/<SPACE>/REPOSITORY_NAME.git
  7. 権限が rwxr—r-- に設定された hooks フォルダーに post-commit ファイルを作成します。たとえば、JBOSS_HOME/bin/.niogit/<SPACE>/REPOSITORY_NAME.git/hooks/post-commit です。
  8. 以下のコンテンツを post-commit ファイルに追加します。

    #!/bin/sh
    git push origin +master
  9. 設定が正常に行われたことを確認するには、Business Central のガイド付きルールを作成します。

    1. Business Central で MenuProjectsAdd AssetGuided Rule に移動します。
    2. Create new Guided Rule ページで必要な情報を入力します。
    3. OK をクリックします。

      Business Central は、リモートリポジトリーにすべての変更を自動的にプッシュします。

org.uberfire.nio.git.hooks システムプロパティーの値に対して、フックファイルのディレクトリーを指定できます。このディレクトリーは、新たに作成された Git リポジトリーにコピーされます。この設定の standalone.xml ファイルの一例として、以下を参照してください。

<system-properties>
  <property name="org.uberfire.nio.git.hooks" value="/opt/jboss-as/git-hooks">
  </property>
  ...
</system-properties>