第9章 サンプルワークフロー: Webhook が自動アプリケーション更新について有効な状態での Red Hat JBoss BRMS アプリケーションの OpenShift でのデプロイ

このワークフローでは、設定変更が OpenShift に自動的にプッシュされるように Red Hat JBoss BRMS、GitHub、および OpenShift を設定する方法について詳しく説明しています。この例では、以下について説明します。

注記

Red Hat JBoss BRMS がローカルマシンで実行されていることを確認してください。

9.1. リポジトリーのフォーク

  1. GitHub にログインした状態で Decision Server サンプル ページにアクセスします。
  2. リポジトリーをフォーク します。

    新規のフォークにリダイレクトされます。

  3. フォークの HTTPS クローン URL をコピーします。

この Decision Server の例では、ユーザーの名前が受信され、名前がルールファイルの master として指定されるユーザー名に一致する場合、ユーザーはマスターユーザーとして認識され、受け入れられます。名前が一致しない場合にはユーザーは侵入者として認識されます。

9.2. リポジトリーのクローン作成

Red Hat JBoss BRMS ワークベンチ:

  1. File Explorer で AuthoringAdministration をクリックします。
  2. RepositoriesClone repository をクリックします。
  3. Repository Name decision-services を入力します。
  4. Organizational Unit を選択します。
  5. フォークされた Git リポジトリーの HTTPS クローン URL を入力します: https://github.com/<Your_Github_Username>/decisionserver.git
  6. Clone をクリックします。

    クローンが作成されると、リポジトリーはコミット履歴を表示します。

9.3. GitHub 更新を自動化するフックの作成

Red Hat JBoss BRMS が GitHub リポジトリーの自動更新を随時実行できるように、このプロジェクトのファイルは変更されます。

注記

以下の手順を実行する前に、SSH キーのアクセスを GitHub 用に設定しておく必要があります。

  1. コマンドラインから、先にフォークしたプロジェクトの /.niogit ディレクトリーに移動します。

    $ cd EAPHOME/bin/.niogit/decision-services.git

    上記のパスはデフォルトであり、これはデータの保存先として設定したワークベンチの場所によって異なる場合があります。この場所は、org.uberfire.nio.git.dir システムプロパティーを使用して設定されます。

  2. このプロジェクトにリモート URL を設定します。

    $ git remote set-url origin git@github.com:/decisionserver
  3. フックのディレクトリーに移動します。

    $ cd hooks
  4. 単純な post-commit ファイルを作成します。

    $ touch post-commit
  5. ファイルを編集し、以下を入力します。

    #!/bin/sh
    
    git push origin master
  6. 変更を保存し、ファイルを終了します。
  7. ファイルのパーミッションを変更し、Red Hat JBoss BRMS に必要なアクセスを付与します。

    $ chmod 777 post-commit

    フックの設定が行われました。この Red Hat JBoss BRMS プロジェクトのファイルへの変更により、フォークした decisionserver GitHub リポジトリーが自動的に更新されることになります。

9.4. Decision Server のサンプルルールの変更

Red Hat JBoss BRMS ワークベンチ:

  1. AuthoringProject authoring をクリックします。
  2. DRL の下で、クリックして HelloRules.drl ファイルを読み込みます。

    package org.openshift.quickstarts.decisionserver.hellorules
    
    query "get greeting"()
        greeting : Greeting()
    end
    
    rule "greet master"
        when
            person : Person( name == "john")
        then
            String salutation = "Hello " + person.getName() + "! What can I help you with today?";
            insert(new Greeting(salutation));
    end
    rule "greet strangers"
        when
            person : Person(name != "john")
        then
            String salutation = "Hey there " + person.getName() + ". I don't think I know you yet!";
            insert(new Greeting (salutation));
    end
  3. john を含む行を実際のユーザーに置き換えて変更します。
  4. Save をクリックし、コメントにチェックして Save を再度クリックします。

    先に作成したフックにより、フォークした GitHub リポジトリーが保存した変更で自動的に更新されます。

9.5. Decision Service の OpenShift での作成

OpenShift web コンソール:

  1. 管理者が推奨するユーザー名とパスワードを使用してログインします。
  2. 新規プロジェクトを作成するには、New Project をクリックします。
  3. 新規プロジェクトの一意の名前、表示名および説明を入力します。
  4. Create をクリックします。

    web コンソールの welcome 画面が読み込まれます。

  5. Add to Project をクリックします。
  6. Filter by keyword フィールドに、decision を入力し、Decision Server に関連する利用可能な xPaaS テンプレートを表示します。
  7. decisionserver63-basic-s2i テンプレートをクリックします。
  8. Parameters セクションで、KIE_SERVER_PASSWORD を、KIE Server REST または JMS インターフェースにアクセスするために使用するパスワードに変更します。
  9. SOURCE_REPOSITORY_URL を、フォークされたリポジトリーの Git ソース URI に変更します。以下が例になります。

    https://github.com/<your_github_username>/decisionserver.git
  10. SOURCE_REPOSITORY_REFmaster に変更します。
  11. CONTEXT_DIRgreeting に変更します。
  12. ページの下部にスクロールし、Create をクリックします。

アプリケーションのビルド時に、Overview ページから View Log をクリックしてビルドの進捗を確認することができます。

9.6. Maven の使用によるビルド時間の短縮

OpenShift ブログ掲載 の詳細を参照して Maven プロキシーを設定してください。これにより、OpenShift での java ビルドのビルド時間が短縮されます。

9.7. Maven プロキシーの統合

ビルド設定を変更し、Maven プロキシーを使用するように設定するには、OpenShift web コンソールで以下を実行します。

  1. BrowseBuilds<your_application> をクリックします。
  2. Start Build の横にある 3 つの縦方向のドットをクリックしてから Edit (Raw) をクリックします。
  3. MAVEN_MIRROR_URL 環境変数を、KIE_CONTAINER_DEPLOYMENT 変数の下に追加します。

    strategy
     sourceStrategy:
      env:
       -
        name: KIE_CONTAINER_DEPLOYMENT
        value: 'HelloRulesContainer=org.openshift.quickstarts:decisionserver-hellorules:1.2.0.Final'
       -
        name: MAVEN_MIRROR_URL
        value: 'http://nexus-ci.cloudapps.bos.openshift3roadshow.com/content/groups/public/'

    MAVEN_MIRROR_URL の値は、リポジトリーを表示し、公開リポジトリーグループのパスをコピーして Maven で確認できます。

  4. Save をクリックします。
  5. ビルドの Configuration タブをクリックして、MAVEN_MIRROR_URL が環境変数の下にアクティブに一覧表示されていることを確認します。

これで、Maven がこの OpenShift プロジェクトに対して設定され、ビルドプロセスは今後のビルドで短縮されます。以降のビルドでは更新されたファイルのみのダウンロードが必要となり、それらは以前に読み込まれたファイルに組み込まれるために短縮が可能となります。

9.8. サービスのテスト

Maven プロキシーの統合後に、サービスが機能していることをテストし、ビルドプロセスの時間が以前のビルドと比較してどの程度短縮されるかを確認することができます。OpenShift web コンソールで以下を実行できます。

  1. BrowseBuilds<your_application> をクリックします。
  2. Start Build をクリックします。
  3. 画面下部にある一覧で、開始したばかりの新規ビルドをクリックします。
  4. Logs タブをクリックしてから Follow をクリックします。
  5. 新規ビルドがローカルへのダウンロードに新規の Maven プロキシーを使用していることを確認します。これは、Downloading を参照するログの行を見つけて確認できます。たとえば、以下のようになります。

    I0130 12:32:25.664594     1 sti.go:492] Downloading: http://nexus-ci.cloudapps.openshift.com/content/groups/public/org/kie/kie-maven-plugin/6.3.0.Final-redhat-5/kie-maven-plugin-6.3.0.Final-redhat-5.pom
  6. ビルドが完了したら、BrowseBuilds<your_application> をクリックし、概要を表示して、新規のビルド時間を以前のビルドと比較することができます。最新ビルドの時間は、Maven プロキシーの使用によって大幅に短縮します。
  7. Overview をクリックして Pod のステータスを確認します。ここでは、readiness probe チェックが付けられており、Not Ready ステータスが表示されています。
  8. BrowsePods をクリックしてその進捗を確認します。Containers Ready 列のステータスは、Pod が readiness probe にパスすると 1/1 に変更されます。

9.9. OpenShift Webhook の設定

OpenShift web コンソール:

  1. Browse タブをクリックしてから Builds をクリックします。
  2. ビルド名をクリックしてから、Configuration タブをクリックします。
  3. GitHub webhook URL の横にあるコピーアイコンをクリックして webhook ペイロード URL をコピーします。
  4. GitHub のフォークされたリポジトリーに移動してから Settings をクリックします。
  5. Webhooks & Services をクリックします。
  6. Add webhook をクリックします。
  7. webhook URL を Payload URL フィールドにコピーします。
  8. Disable SSL verification をクリックしてから、これをポップアップ画面で確定します。
  9. Add webhook をクリックして保存します。

Github は OpenShift サーバーに対して ping し、通信が正常に実行されることを確認できます。webhook URL の横にある緑のチェックマークは、設定が正常に行われていることを示します。カーソルをチェックマークの上に置いて最後の ping のステータスを確認します。

フォークされたリポジトリーにコード変更をプッシュする次回のタイミングで、アプリケーションが自動的に再ビルドされます。

9.10. 設定されたフックのテスト

Red Hat JBoss BRMS ワークベンチ:

  1. HelloRules.drl ファイルを読み込みます。

    package org.openshift.quickstarts.decisionserver.hellorules
    
    query "get greeting"()
        greeting : Greeting()
    end
    
    rule "greet master"
        when
            person : Person( name == "john")
        then
            String salutation = "Hello " + person.getName() + "! What can I help you with today?";
            insert(new Greeting(salutation));
    end
    rule "greet strangers"
        when
            person : Person(name != "john")
        then
            String salutation = "Hey there " + person.getName() + ". I don't think I know you yet!";
            insert(new Greeting (salutation));
    end
  2. At your service my master を他の内容に変更して文字列の挨拶文の行を変更します。
  3. Save をクリックし、チェックインコマンドを入力して Save を再度クリックします。

先に作成したフックによりフォークされた GitHub リポジトリーが更新され、GitHub webhook は OpenShift で新規ビルドをトリガーします。

この設定では、Red Hat JBoss BRMS ワークベンチでの設定変更の保存だけが必要となり、残りのプロセスは完全に自動化されます。