43.5. リモート Git リポジトリーの統合

以下の例では、post-commit の Git フックと Java コードを使用して、Business Central と リモートの Git リポジトリーを統合します。Java コードの例は、Business Central post-commit Git Hooks Integration を参照してください。この例では、以下の機能を提供します。

  • テンプレート .gitremote 設定ファイルを自動生成
  • 必須のパラメーターに対する .gitremote 設定ファイルを検証
  • .gitremote ファイルの ignore パラメーターで定義するパターンを Git で無視
  • ユーザーにメッセージおよび通知を出力
  • GitLab および GitHub トークン認証をサポート
  • GitLab グループおよびサブグループプロジェクト作成をサポート
  • GitHub 組織リポジトリー作成をサポート

前提条件

  • Red Hat JBoss EAP 7.3 サーバーインスタンスに Red Hat Process Automation Manager がインストールされている。
  • Java Development Kit (JDK) 8 がインストールされている。
  • Maven がインストールされている。

手順

  1. 端末ウィンドウで、GitHub リポジトリーをシステムにクローンします。

    $ git clone https://github.com/kiegroup/bc-git-integration-push.git
  2. クローンしたリポジトリーに移動します。

    $ cd bc-git-integration-push
  3. Maven の新規インストールを実行します。

    $ mvn clean install
  4. EAP_HOME ディレクトリーに /hooks ディレクトリーを作成します。

    $ mkdir -p _EAP_HOME_/hooks/
  5. git-push-2.1-SNAPSHOT.jarEAP_HOME/hooks/ ディレクトリーにコピーします。

    $ cp bc-git-integration-push/target/git-push-2.1-SNAPSHOT.jar _EAP_HOME_/hooks/
  6. 必要に応じて、テンプレートの .gitremote 設定ファイルを作成するには git-push-2.1-SNAPSHOT.jar を実行します。

    $ java -jar git-push-2.1-SNAPSHOT.jar

    テンプレート .gitremote 設定ファイルの例

    #This is an auto generated template empty property file
    provider=GIT_HUB
    login=
    password=
    token=
    remoteGitUrl=https://api.github.com/
    useSSH=false
    ignore=.*demo.*, test.*
    githubOrg=OrgName
    gitlabGroup=Group/subgroup

  7. .gitremote 設定ファイルパラメーターを変更します。

    表43.1 .gitremote パラメーターの例

    パラメーター説明

    provider

    Git プロバイダー。許容値は GIT_HUB と GIT_LAB の 2 つのみ。必須。

    login

    Git プロバイダーのユーザー名。必須。

    password

    プレーンテキストのパスワードです。token が指定されている場合は必要ありません。

    token

    username および password ベースの、安全対策がされていない接続の代わりとなる生成トークン。注記: これが設定されていない場合は、セキュアでない接続を使用している旨の警告が表示されます。password が指定されている場合は必須ではありません。注記: GitLab はトークン認証のみをサポートします。

    remoteGitUrl

    パブリックのプロバイダー URL またはプロバイダー用にローカルでホストされたエンタープライズ URL。必須。注記: 公開 GitHub URL は API URL である必要があります。たとえば、api.github.com です。

    useSSH

    SSH プロトコルがリモートリポジトリーに変更をプッシュできるようにするブール型。任意。デフォルト値 = false。注記: このパラメーターはローカルの ~/.ssh/ ディレクトリーを使用して SSH 設定を取得します。

    ignore

    これらの式のいずれかに一致するプロジェクト名を無視するために、コンマ区切りの正規表現。任意。

    githubOrg

    プロバイダーとして GitHub を使用する場合にリポジトリー組織を定義します。任意。

    gitlabGroup

    プロバイダーとして GitLab を使用する場合にリポジトリーグループおよびサブグループを定義します。任意。

  8. EAP_HOME/hooks に、post-commit Git フックファイルを作成します。

    $ touch post-commit
  9. post-commit ファイルのパーミッションを 755 に設定します。

    $ chmod 755 post-commit
  10. #!/bin/bashgit-push-2.1-SNAPSHOT.jar を実行するコードを post-commit ファイルに追加します。

    $ echo "#\!/bin/bash\njava -jar $APP_SERVER_HOME/hooks/git-push-2.1-SNAPSHOT.jar" > hooks/post-commit
  11. -Dorg.uberfire.nio.git.hooks 環境変数を設定して、Business Central を起動します。以下に例を示します。

    $ ./standalone.sh -c standalone-full.xml -Dorg.uberfire.nio.git.hooks=_EAP_HOME_/hooks
注記

post-commit の Git フックを使用して Java コードを実行するには、以下の Java ライブラリーを使用する必要があります。

  • JGit: 内部の Business Central Git リポジトリーと対話するのに使用します。
  • GitHub API for Java: GitHub との通信に使用します。

post-commit の Git フックと Java コードの例に関する情報は、Business Central post-commit Git Hooks Integration を参照してください。