EWMではGitに関する以下の統合ポイントが提供されます。
- Git操作に対するプロセスガバナンス
- EWMにおけるGitコミットとワークアイテムのリンク
EWM = Engineering Workflow Management
セットアップ
前提
以下のソフトウェアをダウンロードしてインストールします。
- Git (http://git-scm.com/download)
- Node.js (https://nodejs.org/en/download/current/)
- EWM Git Integration Toolkit zip (https://jazz.net/downloads/workflow-management/releases/7.2#ewm-anchor-link)
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サーバーの実行
-
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 といった具合です。
- NodeサーバーがGitリポジトリーをサーブしていることをチェックするためにテストを実施します。Webブラウザーを開き、http://ceres:8888/git/MyDemo.git にアクセスします。下に示すようにユーザー名とパスワードの入力を求められます。
EWMサーバーの構成
- Webブラウザーを使ってEWMサーバーhttps://everest:9663/ccm にログインします。この例では、管理者権限を持つ、Developerライセンスが割り当てられたclmユーザーでログインします。
- GitProjectsという名前のプロジェクトエリアを新規作成し、スクラムテンプレートを適用します。
- gituserという名前のユーザーを作成し、Contributorライセンスを割り当てます。そのユーザーをチームリーダーとしてプロジェクトエリアに追加します。
- プロジェクトエリアのアクセス権限ページに移動し、すべての利用者にGit関連の権限全てを付与します(シンプルにするため)。統合がセットアップされた後、要求に応じて権限を変更できます。
- 管理者ユーザーclmを使ってGit要求を認証します。EWMサーバーhttps://everest:9663/ccm にログインし、GitProjectsプロジェクトエリアを開きます。ソース管理メニューの下でGit要求をクリックします。
- 内向きのGit要求の認証ダイアログで、はいをクリックします。
EWMでのGitリポジトリーの登録
-
EWMサーバーが管理できるようにGitリポジトリーを登録します。管理者ユーザーclmを使って、EWMサーバーhttps://everest:9663/ccm にログインし、GitProjectsプロジェクトエリアを開きます。
-
ソースコード管理メニューの下で登録されたGitリポジトリーをクリックします。
-
登録されたGitリポジトリーページが開いた後、右上のGitリポジトリーの登録ボタンをクリックします。空白のエディターが開きます。

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

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

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がインストールされていることを確認します。
統合のスモークテスト:
-
クライアントマシンから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リポジトリーの複製です。
-
ローカルのGitリポジトリーに新しいファイルを作成します。そのファイルを新規コミットに追加し、EWMワークアイテムに紐付け、コミットをリモートのGitリポジトリーにプッシュします。コミットがリモートのGitリポジトリーにプッシュされました。コミットをEWMワークアイテム(ID54)に紐付けました。
-
同じリポジトリーを異なる場所に複製して、リモートのGitリポジトリーにプッシュされたことを確認します。複製されたリポジトリーはfoo.txtを含んでいます。
-
ワークアイテムリンクが動作していることを確認します。Webブラウザーを使ってコミットコメントの中で提供されているワークアイテムを開きます。リンクタブの中で、リモートの変更セットのタイプのリンクを確認することができます。

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


