0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM EWMとGitを連携させるためのセットアップ

0
Last updated at Posted at 2026-03-25

EWMではGitに関する以下の統合ポイントが提供されます。

  • Git操作に対するプロセスガバナンス
  • EWMにおけるGitコミットとワークアイテムのリンク
EWMサーバーは機能を提供するために変更構成管理(CCM)アプリケーションを使います。この記事では、この統合に対する必要なセットアップについて説明します。

EWM = Engineering Workflow Management

セットアップ

前提

以下のソフトウェアをダウンロードしてインストールします。

注意:この例ではEWMサーバーは基本認証モードでセットアップされます。詳細な情報については https://jazz.net/library/article/75 からデプロイメント記述子とコンテナー認証方式セクションを参照してください。

Gitリポジトリーのセットアップ

パスを選択してGitリポジトリーを作成します。例えば、c:/gitreposなどです。
c:/gitreposに移動します。
MyDemoという名前のGitリポジトリーを作成します。
c:/gitreposの下にMyDemo.gitという名前でディレクトリーを作成します。
c:/gitrepos/MyDemo.gitに移動してgit init --bareコマンドを実行します。

C:\gitrepos>mkdir MyDemo.git
C:\gitrepos>cd MyDemo.git
C:\gitrepos\MyDemo.git>git init --bare
Initialized empty Git repository in C:/gitrepos/MyDemo.git/
C:\gitrepos\MyDemo.git>dir
HEAD  config  description  hooks  info  objects  refs
C:\gitrepos\MyDemo.git>

空のGitリポジトリーが生成されました。次に、Nodeサーバーを使ってGitリポジトリーをホストし、EWMサーバーを使ってそれを管理します。

EWM Git Integration Toolkitを展開したディレクトリーに移動します。例えば、c:/rtc_git_server_toolkitなどです。
c:/rtc_git_server_toolkitの下のserverフォルダーに移動します。
npm install --productionコマンドを実行して必須のNodeモジュールをインストールします。
この操作でexpress, passport, nodegitといった必須のNodeモジュールがインストールされます。

c:\rtc_git_server_toolkit\server>npm install --production

NodeGitモジュールは依存する他のモジュールが存在しない場合に失敗することがあります。依存関係の問題の解決には http://www.nodegit.org/guides/install/from-source/ を参照してください。または、config.jsonファイルにおいてGit-Use-NodeGitをfalseに設定します。

サーバーサイドの構成

Nodeサーバーの構成

Nodeサーバーの前提がセットアップされた後、Gitリポジトリーをホストするようにサーバーを構成します。サーバーパラメータはconfig.jsonファイルから読み込まれ、これはc:/rtc_git_server_toolkit/serverフォルダーにあります。config.jsonファイルをテキストエディターで開きます。このファイルはJSONフォーマットで記述されており、各プロパティー(例:"X")には対応する説明プロパティー("X-Description")があります。

以下のプロパティーを編集します。

Server-Port: Nodeサーバーを実行したいポート番号を設定します。この例ではポート8888を使います。

"Server-Port": 8888,

Git-Executable-Path: このプロパティーにはgit実行ファイルへの絶対パスを指定します。gitがPATH変数上にあれば、gitと指定すれば十分です。

"Git-Executable-Path":"git",

Git-Repositories-Root-Dir: このプロパティーにはGitリポジトリーを保持する親フォルダーのフルパスを指定します。この例では、そのパスはc:/gitreposです。

"Git-Repositories-Root-Dir": "C:/gitrepos/",

Auth-Profiles: このプロパティーにはNodeサーバーによって使われる認証プロファイルを定義します。この例では、EWMサーバーhttps://everest:9663/ccm が認証サーバーとして使用されます。

"Auth-Profiles": {
            "everest-9663": {
                "type": "BASIC",
                "url": "https://everest:9663/ccm/secure/authenticated/identity",
                "method": "GET"
            }

}

Git-URL-Prefixes: このプロパティーにはGit要求として考慮されるURLプレフィックスの一式が定義されます。
内向きの要求がこのリストの一部のプレフィックスを持つ場合、Nodeサーバーは要求に対応するプロファイル適用します。
この例では、gitというプレフィックスをもつ要求に対して認証プロファイルeverest-9663が適用されます。

"Git-URL-Prefixes": {
            "/git": {
                "authProfile": "everest-9663"
            }
}

最終的なconfig.jsonファイルは以下のようになります。

{
   "Version": 1,
   "Server-Use-HTTPS": false,
   "Server-Key-File-Path": "",
   "Server-Certificate-File-Path": "",
   "Server-Setup-HTTP-Redirector": true,
   "Server-Port": 8888,
   "Server-Socket-Timeout": 180000,
   "Git-Executable-Path": "git",
   "Git-Repositories-Root-Dir": "C:/gitrepos/",
   "Git-Use-NodeGit": false,
   "Auth-Profiles": {
      "everest-9663": {
          "type": "BASIC",
          "url": "https://everest:9663/ccm/secure/authenticated/identity",
          "method": "GET"
      }
    },
    "Git-URL-Prefixes":
    "/git": {
        "authProfile": "everest-9663"
    }
}

Nodeサーバーの実行

  1. GitリポジトリーをホストするためにNodeサーバーを実行します。c:\rtc_git_server_toolkit\serverに移動して、node main.jsコマンドを実行します。

     c:\rtc_git_server_toolkit\server>dir
       README.txt  config.json  git-lib  hooks  main.js  node_modules  package.json  rtc  services  utils
     c:\rtc_git_server_toolkit\server>node main.js
       Server started. Listening at port 8888.
    

注意:この例ではNodeサーバーはDNS名"ceres"でアクセスされます。例えばhttp://ceres:8888 といった具合です。

  1. NodeサーバーがGitリポジトリーをサーブしていることをチェックするためにテストを実施します。Webブラウザーを開き、http://ceres:8888/git/MyDemo.git にアクセスします。下に示すようにユーザー名とパスワードの入力を求められます。
    image.png

EWMサーバーの構成

  1. Webブラウザーを使ってEWMサーバーhttps://everest:9663/ccm にログインします。この例では、管理者権限を持つ、Developerライセンスが割り当てられたclmユーザーでログインします。
  2. GitProjectsという名前のプロジェクトエリアを新規作成し、スクラムテンプレートを適用します。
  3. gituserという名前のユーザーを作成し、Contributorライセンスを割り当てます。そのユーザーをチームリーダーとしてプロジェクトエリアに追加します。
  4. プロジェクトエリアのアクセス権限ページに移動し、すべての利用者にGit関連の権限全てを付与します(シンプルにするため)。統合がセットアップされた後、要求に応じて権限を変更できます。

Git権限ページ:
image.png

  1. 管理者ユーザーclmを使ってGit要求を認証します。EWMサーバーhttps://everest:9663/ccm にログインし、GitProjectsプロジェクトエリアを開きます。ソース管理メニューの下でGit要求をクリックします。
  2. 内向きのGit要求の認証ダイアログで、はいをクリックします。
    image.png

EWMでのGitリポジトリーの登録

  1. EWMサーバーが管理できるようにGitリポジトリーを登録します。管理者ユーザーclmを使って、EWMサーバーhttps://everest:9663/ccm にログインし、GitProjectsプロジェクトエリアを開きます。

  2. ソースコード管理メニューの下で登録されたGitリポジトリーをクリックします。

  3. 登録されたGitリポジトリーページが開いた後、右上のGitリポジトリーの登録ボタンをクリックします。空白のエディターが開きます。
    image.png

  4. このページ上で、GitリポジトリーURLとプロセスエリアに対する詳細を追加します。値が下に表示されます。
    image.png

  5. 保存をクリックすると、登録された情報が保存され、ユニークなキーが生成されます。キーの値を覚えておきます。統合のGit側の設定に必要となります。
    image.png

  6. Gitコミットの詳細を表示するために、EWMはGitリポジトリーへのアクセスを必要とします。これはNodeサーバーを経由して行われます。GitリポジトリーページでGitサーバー認証詳細のページに移動し、ユーザー認証情報を提供します。
    image.png

Gitリポジトリーの構成

GitリポジトリーMyDemo.gitを構成し、EWMサーバーhttps://everest:9663/ccm にリンクします。

Gitリポジトリーフォルダーに移動します。この例ではパスはc:\gitrepos\MyDemo.gitです。

    c:\gitrepos\MyDemo.git>ls
    HEAD  config  description  hooks  info  objects  refs

設定ファイルの中で、EWM特有のパラメーターを追加します。これらのパラメーターは、以前に作成したEWMサーバーとGitリポジトリーアイテムに関する詳細を提供します。これら2つの構成パラメーターは下に示すようにrtcセクションの下に追加されます。

    [rtc]
         repourl = https://everest:9663/ccm
         repokey = 9f35952a70224411859a29f10cead2e3

注意:repokeyの値はGitリポジトリーマッピングが作成されたときにEWMによって生成されたものを使用します。

最終的な構成ファイルの中身は下のようになります:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[rtc]
    repourl = https://everest:9663/ccm
    repokey = 9f35952a70224411859a29f10cead2e3   

フックの構成

セットアップの最後のステップはMyDemo.git Gitリポジトリーのフックを構成することです。この例では、pre-receiveとpost-receiveのフックの両方を構成します。ワークアイテムとのリンクにのみこの統合を利用する計画であれば、post-receiveフックのみ構成します。

EWM Git server toolkitのzipファイルは、直接使うことができるテンプレートのフックファイルを含んでいます。これらのフックファイルは\server\hooks\examplesの下にあります。

c:\rtc_git_server_toolkit\server\hooks\examples>dir
ReadMe.txt  gitlab  post-receive  pre-receive

pre-receiveとpost-receiveのファイルをGitリポジトリーMyDemo.gitの下のhooksフォルダーにコピーします。Unixシステムでは、コピーされたファイルが実行権限を持つことを確認してください。ファイルがコピーされた後、各ファイルにおいてRTC_GIT_SERVER_TOOLKIT_PATH変数値を設定します。この例では、その値はc:/rtc_git_server_toolkitになります。

これでGitリポジトリーのセットアップが完了しました。次のセクションでは、統合をテストして使ってみます。

統合のテスト

統合をテストして使うために、クライアントマシンを使ってGitリポジトリーに接続してGit操作を実行します。このマシンはEWMサーバーとNodeサーバーが稼動しているマシンである必要があります。

初期チェックリスト:

テスト目的でユーザーgituserを使います。このユーザーはEWMにおいてワークアイテムを作成し保存し、Gitリポジトリーに対して読み書きできる権限を持ちます。
サンプルワークアイテム54:Git統合が使用されるのをテストします。EWMにログインしてGitProjectsプロジェクトエリアの中にワークアイテムを作成します。
クライアントマシン上でGitがインストールされていることを確認します。

統合のスモークテスト:

  1. クライアントマシンからGitコマンド git clone http://ceres:8888/git/MyDemo.git を実行することでGitリポジトリーを複製します。ここで、ceresはNodeサーバーが稼動するマシン名です。

         workspace:git kk$ git clone http://ceres:8888/git/MyDemo.git
         Cloning into 'MyDemo'...
         Username for 'http://ceres:8888': gituser
         Password for 'http://gituser@ceres:8888':
         warning: You appear to have cloned an empty repository.
         Checking connectivity... done.
    

注意:このコマンドが成功すれば、マシン上にMyDemoフォルダーが作成されます。このフォルダーは先に作成したGitリポジトリーの複製です。

  1. ローカルのGitリポジトリーに新しいファイルを作成します。そのファイルを新規コミットに追加し、EWMワークアイテムに紐付け、コミットをリモートのGitリポジトリーにプッシュします。コミットがリモートのGitリポジトリーにプッシュされました。コミットをEWMワークアイテム(ID54)に紐付けました。

  2. 同じリポジトリーを異なる場所に複製して、リモートのGitリポジトリーにプッシュされたことを確認します。複製されたリポジトリーはfoo.txtを含んでいます。

  3. ワークアイテムリンクが動作していることを確認します。Webブラウザーを使ってコミットコメントの中で提供されているワークアイテムを開きます。リンクタブの中で、リモートの変更セットのタイプのリンクを確認することができます。
    image.png

  4. リンク上にマウスカーソルを乗せると表示されるホバーにはGitコミットの情報が表示されます。リンクをクリックすると、コミットの詳細のページが表示されます。
    image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?