このガイドでは、Plastic SCM でさまざまなコントロール追跡ツール(Bugzilla、Mantis、Trac、Jira、Axosoft、VersionOne、FogBugz、Rally、Polarion、codeBeamer)との統合を実現する方法を説明します。
また、独自の Plastic SCM カスタム拡張機能を記述する方法についても説明します。
イシュー追跡システムが設定されたら、ユーザーは拡張機能と Plastic SCM をシームレスに連携させることができます。つまり、ユーザーは関連するタスクの情報を Plastic GUI から確認できるようになります。
Plastic SCM 拡張機能では、2 つの異なる作業モードを使用できます。
このセクションでは、Plastic SCM で Bugzilla 統合を使用するための手順を説明します。
この章では、Bugzilla 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
Bugzilla 拡張機能を設定するには、スクリプトファイル plastic.cgi
(plasticscm_install_path/client/extensions/bugzilla
)を Bugzilla インストールフォルダーにコピーします。
次のようにサーバーのオペレーティングシステムに応じて、場合によってはスクリプトファイルの最初の行を変更する必要があります。
#!/usr/bin/perl -wT
#!c:\perl\bin\perl.exe -wT
Windows、Linux、または macOS システムで、Bugzilla 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Bugzilla 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Bugzilla 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
bugzilla.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
bugzilla.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/bugzilla/bugzillaextension.dll" /> </Extensions>
Bugzilla Base URL
(Bugzilla ベース URL):Bugzilla サーバーがインストールされて実行している URL を指定します。User name
(ユーザー名):必要な場合は、ユーザー名を入力します。Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを Bugzilla のタスクにバインドするために使用されます。この作業モードを使用すると、すべての Bugzilla タスクが Plastic ブランチ(ブランチを新規作成するとき)に関連付けられます。新規ブランチのブランチ名は、Bugzilla での設定済みの拡張機能プレフィックス(設定されている場合)および数値識別子と一致する必要があります。
ブランチビューの「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が Plastic GUI の右側のパネルに表示されます。ブランチを選択すると、Bugzilla タスクの情報(数字すなわち識別子、タスク所有者、ステータス、タイトル、説明)が Plastic SCM に表示されます。
タスクペインをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいブラウザーウィンドウが開き、Bugzilla でのタスクの完全な情報が表示されます。
タスクに関連付けられた番号付きブランチを Bugzilla に対してチェックするように Plastic SCM リポジトリを設定することができます。Bugzilla で定義されたバグ番号がある場合のみ、作業中のブランチが許可されます。このチェックが実行されるのは、子ブランチのブランチ作成操作時のみです。
リポジトリでブランチ作成チェックを設定するには、plastic-enforce-task-branch という名前の属性を対象のリポジトリに作成します。この属性は、次のいずれかの方法を使用して作成する必要があります。
この属性を作成しておくと、それが定義されたリポジトリ上で子ブランチが作成されるたびに、拡張機能によって新規ブランチの名前がチェックされます。タスクのプレフィックスから始まっている場合は、それに含まれる数字を取得し、一致するバグ番号があるかどうかを Bugzilla に確認します。それ以外の場合は、エラーが出力され、操作がキャンセルされます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Bugzilla 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Bugzilla のタスクにリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネルが表示されているとき()、変更セットをクリックすると、関連する Bugzilla タスクが Plastic によって表示されます。
ユーザーは、新規タスクの追加や以前のタスクの削除も「Bugzilla Extension(Bugzilla 拡張機能)」ペインで行うことができます。さらに、特定の変更セットに関連付けられた各タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開き、選択した Bugzilla タスクが表示されます。ユーザーが Bugzilla でタスクを変更した場合は常に、「Bugzilla Extension(Bugzilla 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
このセクションでは、Plastic SCM で Mantis 統合を使用するための手順を説明します。また、その利点についても説明します。
この拡張機能は Mantis バージョン 0.19.4、1.0.0、1.0.8 以降と互換性があります。
Mantis 統合をサーバー側とクライアント側の両方で設定する方法を確認してください。
Mantis 拡張機能を設定するには、スクリプトファイル plastic.php
(plasticscm_install_path/client/extensions/mantis
)を Mantis インストールフォルダーにコピーします。
Windows、Linux、または macOS システムで、Mantis 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Mantis 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Mantis 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
mantis.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
mantis.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/mantis/mantisextension.dll" /> </Extensions>
Mantis Base URL
(Mantis ベース URL):Mantis サーバーがインストールされて実行している URL を指定します。
User name
(ユーザー名):このフィールドには有効な Mantis ユーザーを入力する必要があります。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを Mantis のタスクにバインドするために使用されます。Encoding
(エンコーディング):UTF-8 がデフォルトです。ほとんどの言語に対応します。エンコーディングを変更する必要がある場合のみ、この値を編集します。
ブランチ対象タスクは、「タスクごとのブランチ」パターンに適した、デフォルトで設定されている作業モードです。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
通常どおり、最初のステップは、Mantis でのイシューの作成です。これは、通常はプロジェクトマネージャーが「Report Issue」オプションをクリックして行います。完了すべき新規イシューの情報を設定するダイアログが開きます。設定する情報は、タイトル、説明、重大度などです。
イシューが作成されると Mantis によって番号が割り当てられます。このケースでは、次の図のように Mantis によって番号 4 がタスクに割り当てられました。ユーザーが、イシューのリスト(ステータスに応じて色分けされている)からイシューを選択すると、ステータスが変わります。つまり、イシュー 4 が new から assigned になります。
次のステップでは、タスクに割り当てられた開発者が新規ブランチを作成する必要があります。これは、次の図のように、親ブランチを右クリックして、「子ブランチを作成」オプションを選択するだけです。
新規ブランチを Mantis のイシューにリンクするために、開発者が、同じ Mantis 番号(このケースでは 4)をブランチのプレフィックスの後に付ける必要があります。
ここで、ブランチビューの拡張情報パネル()で特定のブランチにリンクされたイシューの情報を確認できます。
ユーザーが「イシューをブラウザーで開く」ボタン()をクリックするか、Mantis タスクをダブルクリックすると、関連するブランチのイシューを含むブラウザーウィンドウが開きます。ユーザーがイシューのステータスまたは他のいずれかのフィールドを変更したとき、Mantis 拡張機能を最新情報に更新すると、新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Mantis 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Mantis のイシューすなわちタスクにリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネルが表示されているとき()、変更セットをクリックすると、関連する Mantis タスクが Plastic によって表示されます。
ユーザーは、新規タスクの追加や以前のタスクの削除も「Mantis Extension(Mantis 拡張機能)」ペインで行うことができます。さらに、特定の変更セットに関連付けられた各タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開き、選択した Mantis タスクが表示されます。ユーザーが Mantis でタスクを変更した場合は常に、「Mantis Extension(Mantis 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
このセクションでは、Plastic SCM で Trac 統合を使用するための手順を説明します。また、その利点についても説明します。
この拡張機能は Trac バージョン 0.10 以降と互換性があります。
この章では、Trac 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
Trac 拡張機能を設定するには、XMLRPC プラグインを Trac サーバーにインストールする必要があります。このダウンロードおよびインストールの方法や、適切に設定されたかどうかを確認する方法については、こちらのリンクを参照してください。
Trac 管理ツールを使用して、この拡張機能を使用するユーザーの XML_RPC 権限を有効にします。この権限をユーザー「anonymous」に割り当てると、すべてのユーザーにとって使用可能になります。
Trac 拡張機能を使用するときは、いくつかのサーバー設定機能を考慮する必要があります。
Windows、Linux、または macOS システムで、Trac 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Trac 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Trac 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
trac.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
trac.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/trac/tracextension.dll" /> </Extensions>
Base Trac URL
(ベース Trac URL):Trac サーバーがインストールされて実行している URL を指定します。
This server requires authentication
(このサーバーは認証が必要です)」、「User name
(ユーザー名)」、および「Password
(パスワード)」:Trac サーバーで Basic 認証のユーザー/パスワードモードが設定されている場合は、「This server requires authentication
(このサーバーは認証が必要です)」チェックボックスをオンにして、Trac サーバーに対して認証される資格情報を入力します。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを Trac のタスクにバインドするために使用されます。デフォルトで設定されている作業モードはブランチ対象タスクモードで、「タスクごとのブランチ」パターンに適しています。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
通常どおり、最初のステップは、Trac でのイシューの作成です。これは、通常はプロジェクトマネージャーが行います。「New Ticket」オプションをクリックすると、完了すべき新規イシューの情報を設定するダイアログが開きます。設定する情報は、タイトル、説明、サマリーなどです。
タスクすなわちチケットが作成されると、Trac によって番号が割り当てられます(下の例の図では番号 4)。
次に、開発者が、割り当てられたタスクの作業を行う必要があります。つまり、次の図のように新規ブランチを作成します(親ブランチを右クリックして、「子ブランチを作成」オプションを選択するだけです)。新規ブランチを Trac のイシューにリンクするためには、名前が、Trac 拡張機能の設定済みブランチプレフィックスと Trac イシュー番号(このケースではイシュー番号 4)と一致する必要があります。つまり、ブランチのプレフィックスが「scm」に設定されている場合、ブランチ名 scm004 は Trac チケット #4 にリンクされます。
ブランチの拡張情報は、「拡張情報を表示」ボタン()をクリックすると表示されます。ブランチがブランチビューで選択されているとき、右側のペインに関連するタスク/不具合の情報(番号、タスクが割り当てられている所有者または開発者、ステータス、タイトル、コメント)が表示されます。
Trac 情報タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチタスクを表示する新しいブラウザーウィンドウが開き、Trac タスクに関する完全な情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Trac 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Trac のチケットすなわちタスクにリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネルが表示されているとき()、変更セットをクリックすると、関連する Trac タスクが Plastic によって表示されます。
ユーザーは、新規タスクの追加や以前のタスクの削除も「Trac Extension(Trac 拡張機能)」ペインで行うことができます。さらに、特定の変更セットに関連付けられた各タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開き、選択した Trac タスクが表示されます。ユーザーが Trac でタスクを変更した場合は常に、「Trac Extension(Trac 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
このセクションでは、Jira と Plastic SCM を連携させるように設定する手順を説明します。
この章では、Jira 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
新規フィールドはデフォルトでは空です。フィールドに内容が含まれるまで、設定した画面に表示されません。
Jira Cloud では「Accept remote API calls」オプションはデフォルトで有効です。このため、Jira Cloud ユーザーはこのステップを省略できます。
これらのステップが完了すると、Jira サーバーが Plastic SCM 統合を受け入れることができます。
Windows、Linux、または macOS システムで、Jira 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Jira 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Jira 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
jira.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
jira.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/jira/jiraextension.dll" /> </Extensions>
Host
(ホスト):Jira サーバーがある URL を指定します。この URL は Jira サーバーが実行しているポートを含む必要があることに注意してください。
User name
(ユーザー名)」および「Password
(パスワード)」:Jira へのログインと変更の記録に使用される Jira の資格情報を指定します。
Jira Cloud を使用している場合、「User name
(ユーザー名)」はアカウントのメールアドレス、「Password
(パスワード)」は API トークンにする必要があります。Atlassian Cloud アカウントの API トークンを生成する方法については、公式ドキュメントを参照してください。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを Jira のタスクにバインドするために使用されます。Project Key
(プロジェクトキー):Plastic ブランチに関連付けるイシューの Jira プロジェクトのキーを指定します。
Custom Field ID
(カスタムフィールド ID):このパラメーターは、Jira タスクに関する Plastic チェックイン情報を記録するために使用されるカスタムフィールドの識別子です。このフィールドは、フィールドを作成したときに Jira によって割り当てられるカスタムフィールド ID を追加して構築されます。
Next-gen プロジェクトではこのフィールドはサポートされません。
「Custom Field ID
(カスタムフィールド ID)」を空にして、チェックイン情報をコメントとして追加します。
Use LDAP credentials if available
(使用可能な場合に LDAP 資格情報を使用します):このパラメーターをオンにすることで、Plastic SCM クライアントの認証モードが LDAP の場合は、それらの資格情報を再利用して Jira にログインするように Jira 拡張機能を設定できます。この機能が作動するためには、Plastic SCM サーバーと Jira の両方が同じ LDAP ユーザーディレクトリを共有する必要があることを覚えておいてください。
Use default proxy credentials
(デフォルトプロキシ資格情報を使用します):すべての Jira 拡張機能接続に対してデフォルトの資格情報を使用して自動的にプロキシ資格情報を設定します。
Issue query limit
(イシューのクエリ制限):このパラメーターを使用して、「ブランチを作成」ダイアログに返される結果の最大数を手動で調整します。Resolved issue states
(解決済みのイシュー状態):「解決済み」とみなされるステータス名のコンマ区切りリストを指定します。Issue types
(イシューの種類):Jira 拡張機能が取得するイシューを種類でフィルター処理します。イシューの種類をコンマ区切りリストとして入力するだけです。これが役立つのは、たとえば、Plastic SCM で Bug または Task イシューのみを表示するためにそれ以外をフィルターで除外する場合です。jira.conf
ファイルに貼り付けます。
Name=Issue types;Value=Bug,Task;Type=Text;IsGlobal=False
Fields mapping
(フィールドマッピング):ブランチビューや変更セットビューのタスク情報パネルに表示される Jira イシューのフィールドをマッピングできます。Status transition
(ステータス遷移):関連するイシューのステータスを変更セットのコメントに基づいて変更できます。この機能は、イシューをブランチと変更セットの両方にバインドして作動します。デフォルトで設定されている作業モードはブランチ対象タスクモードで、「タスクごとのブランチ」パターンに適しています。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
Plastic SCM と Jira 拡張機能の作業を開始するには、イシュー追跡システム上で、「Create issue」オプションをクリックし、新規イシューに関連するデータ(名前、関連するプロジェクト、サマリーなど)を入力して、タスクを作成する必要があります。
Jira によって、新たに作成されたイシューに番号が割り当てられます。これは、タスクの作業を行うときに Plastic のブランチに与えられる番号と同じです。このケースでは、イシュー番号 1 を作成します。
次に、そのイシューに割り当てられた開発者が、それに対して作業を開始します。Plastic SCM GUI クライアントを使用して新規ブランチを作成します。Jira にリンクする新規ブランチを作成するオプションは 2 つあります。
ブランチビューの「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が Plastic GUI の右側のパネルに表示されます。Plastic のブランチを選択すると、Jira のイシューの情報が表示されます。
これをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチイシューを表示する新しいブラウザーウィンドウが開き、Jira タスクに関する完全な情報が表示されます。ユーザーがイシューのいずれかのフィールドを変更したとき、「Jira Extension(Jira 拡張機能)」パネルの「最新情報に更新」ボタンをクリックすると新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Jira 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Jira のイシューすなわちタスクにリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネルが表示されているとき()、変更セットをクリックすると、関連する Jira イシューが表示されます。
ユーザーは、Jira 拡張機能情報で、新規タスクの追加や以前のタスクの削除も行うことができます。さらに、特定の変更セットに関連付けられた各イシューをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいブラウザーウィンドウが開き、選択した Jira タスクが表示されます。ユーザーがタスク追跡ツールでイシューを変更した場合は常に、「Jira Extension(Jira 拡張機能)」ペインの「最新情報に更新」ボタンを押すと、Plastic GUI で新しいデータに更新されます。
ブランチまたは変更セットにバインドされた Jira データを Plastic SCM 内で表示できるだけでなく、統合によって、変更された項目の記録を Jira に保存することができます。変更がチェックインされたときに統合がアクティブな場合、Jira によって、ブランチ対象タスクまたは変更セット対象タスク作業モードのいずれかを使用して、影響を受ける項目が「Plastic SCM」カスタム フィールドに表示されます。
Plastic SCM では、Jira のマルチプロジェクト設定も使用できます。これは、すべてのブランチに対してグローバルなプロジェクトキーを 1 つ定義する代わりに、各ブランチにその関連タスクのプロジェクトキーを明示的に格納できるようにするという考え方です。
Jira サーバーを設定した後で、マルチプロジェクト設定を使用するように Plastic SCM クライアントを設定します。
Plastic SCM クライアントで Jira 拡張機能を設定するには、Plastic SCM GUI のメインウィンドウの「環境設定」タブをクリックします。新しいダイアログウィンドウが開きます。「Issue tracking(イシュー追跡)」タブをクリックし、「このイシュー追跡システムにバインドする」ラジオボタンをオンにして「Atlassian Jira」を選択します。
jira.conf
ファイル内の必要な値を更新することを忘れないでください。
Jira 上でプロジェクトとタスクが作成されている必要があります。
次に、Plastic SCM ブランチを作成します。Jira タスクに関連するブランチを識別するために「JIRA_」プレフィックスを選択することを忘れないでください。
マルチプロジェクト設定を使用するときは、どのブランチが各プロジェクトに関連しているかを区別することが重要です。下の図に示すように、ここでは「branchPrefix_projectShortName-taskID」というスキームを使用して Plastic SCM ブランチに名前を付けます。
たとえば、Jira タスク「RI-1」のブランチは「JIRA_RI-1」、Jira プロジェクト「FG」(フォームジェネレーター)のブランチは「JIRA_FG-1」となります。
Jira 拡張機能を使用すると、Plastic SCM のブランチビューや変更セットビューのタスク情報パネルに表示される Jira イシューからのフィールドをマッピングできます。
Jira フィールドのマッピング機能を定義するには、「Fields mapping(フィールドマッピング)」パラメーターを設定する必要があります。これを行うには、Plastic SCM GUI のメインウィンドウの「環境設定」タブをクリックして、Jira 拡張機能の設定を開きます。次に、「Issue tracking(イシュー追跡)」タブをクリックします。「Fields mapping(フィールドマッピング)」設定パラメーターが表示されるまで、パラメーターのリストを下にスクロールします。
ここには、'|'(縦棒)文字で区切られたフィールド名のペア(from->to)が格納されます。パラメーターの構文は次のとおりです。
[ jira_field_name -> plastic_property_name [ | jira_field_name -> plastic_property_name [ | ... ] ] ]
jira.conf
ファイル内の必要なフィールドを更新することを忘れないでください。
有効な Jira フィールドのマッピングの設定の例を次に示します。
issue.Fields.Project.Name->Description|issue.Fields.Reporter.Name->Owner|issue.Fields.Description->Title
この場合、「Atlassian Jira extension(Atlassian Jira 拡張機能)」拡張情報パネルに表示される値は以下のようになります。表示される「説明」にはプロジェクトキーが含まれ、表示される「所有者」はイシューを作成した Jira ユーザー、表示される「タイトル」は Jira イシューの説明になります。
ペア "from->to" の to
属性は、plastic_property_name
が参照する Plastic SCM のフィールドを表します。拡張情報パネルで使用できる Plastic SCM フィールドのリストを以下に示します。
from
属性は、上で説明したフィールド to
にその値が読み込まれる、Jira イシュー内のフィールド(jira_field_name
)を表します。Jira 拡張機能で from
属性に使用できるフィールドのリストを次の表に示します。
from フィールドの値 |
フィールドのデータ型 |
---|---|
issue.Fields.Assignee.Name | String |
issue.Fields.AttachmentNames | String[] |
issue.Fields.ComponentNames | String[] |
issue.Fields.Created | DateTime |
issue.Fields.Description | String |
issue.Fields.DueDate | DateTime |
issue.Fields.Environment | String |
issue.Key | String |
issue.Fields.Priority.Name | String |
issue.Fields.Project.Name | String |
issue.Fields.Reporter.Name | String |
issue.Fields.Resolution | String |
issue.Fields.Status.Name | String |
issue.Fields.Summary | String |
issue.Fields.Issuetype.Name | String |
issue.Fields.Updated | DateTime |
issue.Fields.Votes.Number | Long |
次のサンプルのマッピングのように、customFieldValues
修飾子を使用するとカスタム Jira フィールドの値にアクセスできます。
customFieldValues[10000]->Description
[ ]
間のインデックスは、前のセクションで説明したように Jira から取得できるカスタムフィールドの ID です。カスタムフィールド ID の数値(サンプルでは 10000)のみを指定する必要があります。
Jira イシュートラッカー拡張機能を使用すると、変更セットのコメントに基づいて、関連するイシューのステータスをブランチ/変更セットに変えることができます。
これを行うには、キーワードとステータスのマッピングを独自に定義します。変更セットのコメントにそのキーワードが存在する場合は、イシューのステータスが定義済みのステータスに変更されます。
マッピングの形式は次のようになります。
KEY-VALUE|KEY-VALUE
例:
[FIXED]-Ready for QA|[WONTFIX]-Done
上の例では、変更セットのコメントにキーワード [FIXED](角括弧付き)が含まれている場合に、イシューのステータスが Ready for QA に変わると指定されています。
この機能は、イシューをブランチと変更セットの両方にバインドして作動します。
ステータス間の遷移が Jira ワークフローによって許可される必要があることを覚えておいてください。
Plastic SCM のカスタムフィールド ID をこの操作用に設定する必要はありません。
Windows、Linux、または macOS システムで、ステータス遷移機能を設定する方法を確認してください。
jira.conf
ファイルを開きます。
Value
パラメーターのテキストを必要な KEY-VALUE 値に置き換えます。
Name=Status transitions;Value=[FIXED]-Ready for QA|[WONTFIX]-Done;Type=Text;IsGlobal=True
Plastic SCM で Axosoft 統合を使用する場合は、このセクションの手順に従います。
この拡張機能は Axosoft v14 以降と互換性があります。
この章では、Axosoft 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
Axosoft 拡張機能を設定するには、Axosoft サーバーのベース URL を Plastic SCM に指定する必要があります。
Plastic SCM クライアントが Axosoft 統合を設定するために必要となる他の 2 つの設定パラメーターは、client-id
パラメーターおよび client-secret
パラメーターです。これらの値を取得するには、「Tools」メニューの「System Options」オプションに移動します。
「System Settings」ウィンドウで「Axosoft API Settings」タブをクリックします。このビューの下で、「Enable API」チェックボックスをオンにして、「Manage API Keys」ボタンをクリックします。
新規ウィンドウで、「Add」ボタンをクリックして、Axosoft との Plastic SCM 統合の識別と認証に使用される 2 つの値を取得します。「Application Name」を入力し、「Client ID」と「Client Secret」の値をコピーして、「Save」ボタンをクリックします。
API キーが保存されたら、次はカスタムフィールドを作成します。Plastic SCM はこれを使用して、Axosoft イシューに関連するすべてのチェックイン操作で行われたすべての変更を記録できるようになります。
この操作を行えるようにするには、Axosoft で新規カスタムフィールドを作成する必要があります。このためには、「Tools」メニューに移動し、「Fields」サブメニューの下の「Custom Fields」オプションを選択します。
新規ウィンドウの「Bugs」タブの下で「Add」ボタンをクリックしてから、新規カスタムフィールドとして Plastic SCM を入力し、「Large text」タイプを選択します。
次の項の Plastic SCM クライアント設定で使用される新規カスタムフィールドを保存します。
Axosoft サーバー設定の詳細については、Axosoft インストールに含まれているマニュアルまたは Axosoft ウェブサイトを参照してください。
Windows、Linux、または macOS システムで、Axosoft 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Axosoft 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Axosoft 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
ontime.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
ontime.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
の値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/ontime/ontimeextension.dll" /> </Extensions>
Axosoft Root URL
(Axosoft ルート URL):サーバーのトピックで説明したように、Plastic SCM Axosoft 拡張機能が作動するためにはこの値が必要です。
User
(ユーザー)および「Password
(パスワード)」:各 Plastic SCM ユーザーは Axosoft アカウントを持つ必要があり、Axosoft 資格情報を使用して Plastic が Axosoft サーバーに接続できるようにする必要があります。
Branch prefix
(ブランチプレフィックス):Plastic SCM がブランチ対象タスクモードで作動するように設定されている場合、ユーザーはいくつかのブランチプレフィックスを設定して、それらをいくつかの Axosoft オブジェクトにバインドすることができます。たとえば、ユーザーが Axosoft の不具合と Axosoft のタスクのマッピングを有効にした場合、名前がプレフィックス def で始まるブランチは Axosoft の不具合にリンクされ、名前がプレフィックス task で始まるブランチは Axosoft のタスクにリンクされます。Client ID
(クライアント ID)」および「Client Secret
(クライアントシークレット)」:これらのフィールドには、Axosoft 管理パネルで生成されるトークンを入力する必要があります。詳細については、サーバーのトピックを参照してください。
Plastic SCM custom field
(Plastic SCM カスタムフィールド):このパラメーターは、Axosoft で作成されたカスタムフィールドです。Plastic SCM のチェックイン情報を記録するために使用されます。
Pending status list
(保留中ステータスリスト):このフィールドを使用し、コンマ区切り値の文字列を入力して、「保留中」とみなされるステータスのリストを編集できます(「ブランチを作成」ダイアログに表示されるタスクのリストに影響します)。
デフォルトで設定されている作業モードはブランチ対象タスクモードで、「タスクごとのブランチ」パターンに適しています。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
Plastic SCM および Axosoft 拡張機能の作業を開始するには、イシュー追跡システム上で不具合を作成する必要があります。このためには、次の図のように、「Add」メニューをクリックして「Full Add」オプションを選択します。
「Add Bug」ウィンドウで、新規タスク名、優先度、ステータス、割り当てエンジニアなどの情報を入力する必要があります。新しい不具合が保存されると、Axosoft によって識別番号が与えられます。これは、割り当てられた開発者が、そのタスクの作業を行うために Plastic SCM ブランチを作成するときに使用します。
次に、そのイシューに割り当てられた開発者が、Plastic SCM GUI クライアントで新規ブランチを作成することで作業を開始します。新規ブランチをリンクするには、その名前が、Plastic SCM Axosoft 拡張機能の設定済みブランチプレフィックス(定義されている場合)の後に Axosoft 割り当てのイシュー番号が続くものと一致する必要があることに注意してください。
ブランチビューの「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が GUI の右側に次のスクリーンショットのように表示されます。ブランチを選択すると、Axosoft 不具合の詳細情報(名前、所有者、ステータス、タイトル、説明)が表示されます。
これをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチタスクを含む新しいウェブブラウザーウィンドウが開き、Axosoft タスクに関する完全な情報が表示されます。ユーザーがイシューのステータスまたは他のいずれかのフィールドを変更したとき、「Axosoft Extension(Axosoft 拡張機能)」パネルの「最新情報に更新」ボタンをクリックすると新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Axosoft 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Axosoft の不具合すなわちタスクにリンクされると、拡張機能情報()が変更セットビューに表示されます。ユーザーは、新規タスクの追加や以前のタスクの削除も「Axosoft extension(Axosoft 拡張機能)」ペインで行うことができます。各イシューをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連する Axosoft イシューを含むウェブブラウザーウィンドウが開きます。ユーザーがタスク追跡ツールでイシューを変更した場合は常に、「Axosoft Extension(Axosoft 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
この拡張機能は、Plastic SCM と統合されたブランチや変更セットに関連付けられたイシューの情報を表示するだけでなく、関連するイシューで行われたすべてのチェックインを Axosoft に記録します。
このため、ユーザーは、すべてのチェックイン操作が Axosoft タスクにどのように登録されているかを確認できます。
このセクションでは、Plastic SCM で VersionOne 統合を使用するための手順を説明します。
この拡張機能は VersionOne バージョン 7.2 以降と互換性があります。
この章では、VersionOne 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
Plastic SCM VersionOne 拡張機能設定ではサーバー側で変更を行う必要はありません。
Windows、Linux、または macOS システムで、VersionOne 統合を設定する方法を確認してください。
Windows マシン上の Plastic SCM クライアントで VersionOne 拡張機能を設定するには、次のステップに従います。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで VersionOne 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
versionone.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
versionone.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/versionone/versiononeextension.dll" /> </Extensions>
Base URL
(ベース URL):VersionOne サーバーがインストールされて実行している URL を指定します。
User
(ユーザー)」および「Password
(パスワード)」:「Use integrated authentication
(統合認証を使用します)」オプションがオンになっていない場合、これらのフィールドに有効な VersionOne ユーザーを入力する必要があります。
Defect prefix
(不具合プレフィックス)」、「Task prefix
(タスクプレフィックス)」、「Test prefix
(テストプレフィックス)」、「Story prefix
(ストーリープレフィックス)」:リンクできる VersionOne オブジェクトは、不具合、タスク、テスト、ストーリーです。Use integrated authentication
(統合認証を使用します):このオプションでは、Windows ドメインユーザーを使用して認証を解決するかどうかを Plastic SCM に指定します。
デフォルトの作業モードはブランチ対象タスクで、タスクごとに新規ブランチが作成される「タスクごとのブランチ」パターンで使用されます。
Plastic SCM および VersionOne 拡張機能の作業を開始するには、最初のステップとして VersionOne でタスクを作成します。これは、通常はプロジェクトマネージャーが、VersionOne ウェブインターフェース上で、「Add Defect」、「Add Issue」、「Add backlog Item」および「Add Request」ショートカットをクリックして行います。新規タスクのデータを入力するための新規ダイアログウィンドウが開きます。VersionOne によって、1000 から始まる番号がタスクに割り当てられます。これに注意することが非常に重要です。ブランチ名は、タスクのタイプに合う設定済みプレフィックスと VersionOne の割り当て番号を含む必要があるためです。
イシューが作成されると VersionOne によって番号が割り当てられます。次の図では、作成された項目のリストを確認できます。
次に、タスクに割り当てられた開発者が、それに対して作業を開始します。次の図に示すように、新規ブランチを作成する必要があります(親ブランチを右クリックして、「子ブランチを作成」オプションを選択するだけで簡単です)。これを VersionOne のタスクにリンクするためには、ブランチに同じ番号を付ける必要があります(この番号は常に 1000 よりも大きいことに注意してください)。
ここで、ブランチビューの拡張情報に移動()してブランチを選択するだけで、イシューの情報を確認できます。次に、ビューの右側に新しいペインが表示され、そこに VersionOne 拡張機能情報(タスク番号、所有者、ステータスなど)が表示されます。
ブランチに関連付けられたタスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開きます。ユーザーがイシューのステータスまたは他のいずれかのフィールドを変更したとき、VersionOne 拡張機能を最新情報に更新すると、新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは VersionOne 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが VersionOne タスクにリンクされると、拡張機能情報()が変更セットビューに表示されます。ユーザーは、VersionOne 拡張機能情報で、新規タスクの追加や以前のタスクの削除も行うことができます。また、特定の変更セットに関連付けられた各イシューをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、VersionOne を含むブラウザーが開きます。ユーザーが VersionOne でイシューを変更した場合は常に、VersionOne 拡張機能情報を最新情報に更新することで Plastic SCM に表示されます。
このセクションでは、Plastic SCM で FogBugz 統合を使用するための手順を説明します。
この拡張機能は FogBugz バージョン 7.2 以降と互換性があります。
FogBugz 統合をサーバー側とクライアント側の両方で設定する方法を確認してください。
Plastic SCM FogBugz 拡張機能ではサーバー側で変更を行う必要はありません。
Windows、Linux、または macOS システムで、FogBugz 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで FogBugz 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで FogBugz 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
fogbugz.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
fogbugz.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/fogbugz/fogbugzextension.dll" /> </Extensions>
FogBugz URL
:FogBugz サーバーがインストールされて実行している URL を指定します。
User name
(ユーザー名)」および「Password
(パスワード)」:これらのフィールドには有効な FogBugz ユーザーを入力する必要があります。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、「Branch prefix
(ブランチプレフィックス)」の指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを FogBugz のタスクにバインドするために使用されます。Enable checkin log
(チェックインの記録を有効にします):このオプションを使用すると、FogBugz が Plastic SCM で実行されたすべてのチェックイン操作を記録できるようになります。
デフォルトで設定される作業モードはブランチ対象タスクで、タスクごとに新規ブランチが作成される「タスクごとのブランチ」パターンで使用されます。
Plastic SCM および FogBugz 拡張機能の作業を開始するには、FogBugz でプロジェクトに対してタスクを作成する必要があります。これは、通常はプロジェクトマネージャーが「New Case」オプションをクリックして行います。新規タスクのデータを入力するための新規ダイアログウィンドウが開きます。
イシューが作成されると FogBugz によって番号が割り当てられます。次に、そのタスクに割り当てられた開発者が、それに対して作業を開始します。次の図のように新規ブランチを作成します(親ブランチを右クリックして、「子ブランチを作成」オプションを選択するだけです)。新規ブランチを FogBugz のタスクにリンクするためには、ブランチ名が、設定済みブランチプレフィックス(定義されている場合)および同一タスク番号に一致する必要があります。
ここで、ブランチビューの拡張情報に移動()してブランチを選択するだけで、イシューの情報を確認できます。ビューの右側に新しいペインが表示され、そこに FogBugz 拡張機能情報(タスク番号、所有者など)が表示されます。
これをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開きます。FogBugz タスクの完全な情報が表示されます。ユーザーがイシューのステータスまたは他のいずれかのフィールドを変更したとき、「FogBugz Extension(FogBugz 拡張機能)」パネルの「最新情報に更新」ボタンをクリックすると新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは FogBugz 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが FogBugz のイシューすなわちタスクにリンクされると、拡張機能情報()が変更セットビューに表示されます。ユーザーは、FogBugz 拡張機能情報で、新規タスクの追加や以前のタスクの削除も行うことができます。また、特定の変更セットに関連付けられた各イシューをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、FogBugz を含むブラウザーが開きます。ユーザーが FogBugz でイシューを変更した場合は常に、FogBugz 拡張機能情報を最新情報に更新することで Plastic に表示されます。
この拡張機能は、Plastic SCM と統合されたブランチや変更セットに関連付けられたイシューの情報を表示するだけでなく、クライアントのセクションで「Enable checkin log(チェックインログを有効化)」チェックボックスが選択された場合のみ、関連するイシューで行われたすべてのチェックインを FogBugz に記録します。
このため、ユーザーは、「Checkins - Click to list」リンクをクリックして、すべてのチェックイン操作が FogBugz タスクにどのように登録されているかを確認できます。
このセクションでは、Plastic SCM で Rally Software Development 統合を使用するための手順を説明します。
この章では、Rally 統合をサーバー側とクライアント側の両方で設定する方法について説明します。
Rally 拡張機能を設定するには、有効な Rally アカウントが必要です。また、Rally はウェブベースのサービスであるためサーバー側やローカルで行う設定はありません。すべての操作はインターネットを介して Rally に対して行います。
Windows、Linux、または macOS システムで、Rally 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Rally 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Rally 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
rally.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
rally.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/rally/rally.dll" /> </Extensions>
Rally URL
:Rally サーバーが実行している URL を指定します。
User name
(ユーザー名)」および「Password
(パスワード)」:これらのフィールドには、設定された Rally サーバーの有効な Rally ユーザーを入力する必要があります。
Task prefix
(タスクプレフィックス)」、「Defect prefix
(不具合プレフィックス)」、「Test case prefix
(テストケースプレフィックス)」、および「User story prefix
(ユーザーストーリープレフィックス)」:これらは Plastic SCM にリンクできる Rally オブジェクトです。この作業モードを使用するために、最初のステップでは Plastic SCM Rally 拡張機能を設定します。前の項の説明に従うか、このモードに対応するデフォルトの設定のままにしておきます。
Plastic SCM および Rally 拡張機能の作業を開始するには、Rally でオブジェクトを作成する必要があります。
不具合は、「New defect」アクションをクリックして専用のタブで作成できます。その他の Rally オブジェクト(「Tasks」、「Test Cases」、「User Stories」など)も同様です。
「Create Defect」ウィンドウで、新規タスク名、優先度、状態などの情報を含める必要があります。新しい不具合が保存されると、Rally によって識別文字列が与えられます。これは、割り当てられた開発者が、そのタスクの作業を行うために Plastic SCM ブランチを作成するときに後で使用します。プレフィックス ID はオブジェクトのタイプによって異なります。たとえば、ユーザーが新規タスクを作成する場合、ID は TA4 になります。不具合のケースでは DE4 です。
「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が GUI の右側に次のスクリーンショットのように表示されます。ブランチを選択すると、Rally オブジェクトの詳細情報が表示されます。
これをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチタスクを含むウェブブラウザーウィンドウが開きます。ユーザーがタスクを完了してステータスまたは他のフィールドを変更した場合は常に、ユーザーは、新しい値を表示するために Plastic ブランチの拡張情報を最新情報に更新する必要があります。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Rally 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが Rally オブジェクトにリンクされると、その情報が変更セットビューに表示されます。ユーザーは、Rally オブジェクトへの新規リンクを追加することも、以前のリンクを削除することもできます。また、各イシューをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、Rally の関連するオブジェクトを含むウェブブラウザーウィンドウが開きます。ユーザーが、不具合、テストケースまたはユーザーストーリーをイシュー追跡ツールで変更した場合は常に、Rally 拡張機能の「最新情報に更新」ボタンをクリックすることで変更がロードされます。
このセクションでは、Plastic SCM で Polarion Software Development 統合を使用するための手順を説明します。
Polarion 統合をサーバー側とクライアント側の両方で設定する方法を確認してください。
Polarion 拡張機能を設定するために、いくつかのタスクが実行されています。
client/polarion
フォルダーのディレクトリ com.codicesoftware.platform.repository.external.plasticscm
を、Polarion 拡張機能フォルダー [Polarion installation]/polarion/extensions
をコピーします。
client
フォルダーをコピーしてください。この場合、有効な client.conf
が、cm 実行可能ファイルがあるこの client
フォルダーに存在する必要があります。
Windows、Linux、または macOS システムで、Polarion 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで Polarion 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで Polarion 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
polarion.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
polarion.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/polarion/polarionextension.dll" /> </Extensions>
Polarion Base URL
(Polarion ベース URL):Polarion サーバーがインストールされて実行している URL を指定します。
User name
(ユーザー名)」および「Password
(パスワード)」:これらのフィールドには有効な Polarion ユーザーを入力する必要があります。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを Polarion のタスクにバインドするために使用されます。Work Item Statuses
(作業項目ステータス):これらは、新規ブランチが「タスクから」モードで作成されるときに、「保留中のタスク」リストに表示される作業項目の種類です。変更セット対象タスクモードを使用して新しいリビジョンをリンクするときもこれらの値がチェックされます。Open Work Item Status
(未処理作業項目ステータス):これは、ユーザーが「タスクから」モードで新規ブランチを作成する際に、「Mark as open in issue tracker
(イシュートラッカーでオープンとしてマーク)」オプションをオンにした場合に、Polarion タスクに設定される新しいステータスです。
Repository ID
(リポジトリ ID):このパラメーターは、Polarion サーバー側で設定された「ID」フィールドと同じです。
Default Repository
(デフォルトのリポジトリ):このフィールドは、選択したリポジトリがデフォルトリポジトリかどうかを指定します。選択しない場合、複数リポジトリをサポートすることになります。
デフォルトで設定されている作業モードはブランチ対象タスクモードで、「タスクごとのブランチ」パターンに適しています。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
Plastic SCM と Polarion 拡張機能の作業を開始するには、Polarion プロジェクトに関連する新規作業項目を作成することで、イシュー追跡システム上でタスクを作成する必要があります。
新規タスクに関連するデータ(名前、説明、優先度など)を入力し、「Create」ボタンをクリックします。
Polarion によって、新たに作成されたタスクに番号が割り当てられます。これは、タスクの作業を行うときに Plastic のブランチに与えられる番号と同じです。
次に、そのイシューに割り当てられた開発者が、それに対して作業を開始します。Plastic SCM GUI クライアントを使用して新規ブランチを作成します。Polarion にリンクする新規ブランチを作成するオプションは 2 つあります。
このモジュールではユーザーが次の操作を行います。
クライアント設定に関する項を参照してください。
ブランチビューの「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が Plastic GUI の右側のパネルに表示されます。Plastic のブランチを選択すると、Polarion のイシューの情報が Plastic SCM に表示されます。
これをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチイシューを表示する新しいブラウザーウィンドウが開き、Polarion タスクに関する完全な情報が表示されます。
ユーザーが Polarion で作業項目のいずれかの値を変更したとき、「Polarion Extension(Polarion 拡張機能)」パネルの「最新情報に更新」ボタンをクリックすると Plastic に新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、ユーザーは Polarion 拡張機能を設定して、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアント設定に関する項の説明を参照してください。
ワークフローは次のようになります。
次の例では、2 つの Polarion 作業項目が変更にリンクされ、変更がその後チェックインされます。
Polarion 拡張機能が、リンクされる作業項目のステータスをチェックします。リンクが許可されるのは、クライアント設定の「Work item statuses(作業項目ステータス)」フィールドにステータスが定義されている Polarion 作業項目のみです。前に説明したとおり、設定される作業項目ステータスは draft と open です。つまり、他のすべてのステータスは許可されません。
変更セットが Polarion の作業項目にリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネル()が表示されているとき、変更セットをクリックすると、関連する Polarion 作業項目が表示されます。
ユーザーは、Polarion 拡張機能情報で、新規タスクの追加や以前のタスクの削除も行うことができます。さらに、特定の変更セットに関連付けられた各イシューをダブルクリックすると、新しいブラウザーウィンドウが開き、選択した Polarion 作業項目が表示されます。ユーザーがタスク追跡ツールでイシューを変更した場合は常に、「Polarion Extension(Polarion 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
Plastic SCM Polarion 統合では、分散型シナリオがサポートされます。つまり、リンクリビジョンは、変更セット ID(整数)の代わりに変更セット GUID を使用します。
ただし、変更セットの情報(変更セットのコメントなど)は、Polarion に設定された Plastic SCM サーバーに変更セットがレプリケートされるまでは使用できなくなります。
説明してきたように、すべての Polarion 作業項目の情報を、関連するブランチまたは変更セットを介して Plastic に取得することができます。また、Plastic で作成されたリビジョンに関連するすべての情報を、Polarion 側で取得することもできます。このように、Polarion 統合によって、変更された項目の記録が保持されます。変更が Plastic でチェックインされたときに統合がアクティブな場合、Polarion によって、影響を受ける項目が「Linked revisions」セクションに表示されます。ブランチ対象タスクモードを使用する場合は次のとおりです。
または、変更セット対象タスク作業モードでは次のとおりです。
Plastic のリビジョンが Polarion に正しくリンクされると、リビジョンのアイコンに緑色の丸が表示されます
Plastic SCM で codeBeamer 統合を使用する場合は、このセクションの手順に従います。
codeBeamer 統合をサーバー側とクライアント側の両方で設定する方法を確認してください。
Plastic SCM codeBeamer 拡張機能設定ではサーバー側で変更を行う必要はありません。
ただし、ウェブフックのシークレットトークンを codeBeamer 設定に追加する場合は、次のステップに従います。
"scc"
ノードが json(json ルートレベル)にない場合は追加します。
"plasticscm"
ノードが json の "scc"
ノードにない場合は追加します。
"secretToken" : "<secret_token_of_the_webhook>"
を "plasticscm"
ノードに追加します。
Windows、Linux、または macOS システムで、codeBeamer 統合を設定する方法を確認してください。
次のステップに従って、Windows マシン上の Plastic SCM クライアントで codeBeamer 拡張機能を設定します。
plastic-global-config
リポジトリを選択します。
Repositories
(リポジトリ)」を選択します。
次の方法のうち 1 つを使用して、Linux または macOS マシン上の Plastic SCM クライアントで codeBeamer 拡張機能を設定できます。
$HOME/.plastic4
に issuetrackers/server_port/repository
という構造を作成します。repository
は次のいずれかの値です。
allrepos
(すべてのリポジトリがイシュートラッカーにリンクされます)。
codebeamer.conf
を新規作成したパスにコピーします。 plasticscm_install_path/client/extensions/config_samples
/Applications/PlasticSCM.app/Contents/IssueTrackerConfigSamples
たとえば、次のようになります。
codebeamer.conf
ファイルを編集します。
WorkingMode
パラメーターを編集し、TaskOnBranch
または TaskOnChangeset
のいずれかの値を割り当てます。
client.conf
ファイルを編集して、次のキーを追加します。
<Extensions> <Extension AssemblyFile="plasticscm_install_path/client/extensions/codebeamer/codebeamerextension.dll" /> </Extensions>
codeBeamer URL
:codeBeamer サーバーがインストールされて実行している URL を指定します。
User name
(ユーザー名)」および「Password
(パスワード)」:これらのフィールドには有効な codeBeamer ユーザーを入力する必要があります。
Branch prefix
(ブランチプレフィックス):ブランチ対象タスクモードで操作する場合は、このパラメーターの指定をお勧めします(必須ではありません)。このブランチプレフィックスは、Plastic のブランチを codeBeamer のタスクにバインドするために使用されます。Enable SCM log
(SCM 記録を有効にします):codeBeamer バージョンによって外部 SCM 統合がサポートされる場合は、このチェックボックスをオンにします。
Secret token
(シークレットトークン):シークレットトークンが codeBeamer サーバーで設定される場合は、シークレットトークン値を入力します。
デフォルトで設定されている作業モードはブランチ対象タスクモードで、「タスクごとのブランチ」パターンに適しています。この作業モードでは、完了すべきタスクごとに新規ブランチが作成されます。
Plastic SCM および codeBeamer 拡張機能の作業を開始するには、codeBeamer でプロジェクトに対してタスクを作成する必要があります。
新規タスクが保存されると、codeBeamer によってそのタスクに識別番号が与えられます。これは、割り当てられた開発者が、そのタスクの作業を行うために Plastic SCM ブランチを作成するときに使用します。
次に、そのタスクに割り当てられた開発者が、それに対して作業を開始します。Plastic SCM GUI クライアントを使用して新規ブランチを作成します。codeBeamer にリンクする新規ブランチを作成するオプションは 2 つあります。
ブランチビューの「拡張情報を表示」ボタン()をクリックすると、そのブランチに関連する情報が Plastic GUI の右側のパネルに表示されます。Plastic のブランチを選択すると、codeBeamer のタスクの情報が表示されます。
タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、関連するブランチイシューを表示する新しいウェブブラウザーウィンドウが開き、関連する codeBeamer タスクの完全な情報が表示されます。ユーザーがタスクのいずれかのフィールドを変更したとき、「codeBeamer Extension(codeBeamer 拡張機能)」パネルの「最新情報に更新」ボタンをクリックすると新しい情報が表示されます。
変更セット対象タスク作業モードで機能するように Plastic SCM を設定するには、codeBeamer 拡張機能を設定するときに、「Plastic 変更セットにイシューをバインド」オプションを選択する必要があります。前のクライアントに関する項の説明を参照してください。
ワークフローは次のようになります。
変更セットが codeBeamer のタスクにリンクされると、この情報が Plastic SCM の変更セットビューに表示されます。「Extended information(拡張情報)」パネルが表示されているとき()、変更セットをクリックすると、関連する codeBeamer タスクが Plastic によって表示されます。
ユーザーは、新規タスクの追加や以前のタスクの削除も「codeBeamer Extension(codeBeamer 拡張機能)」ペインで行うことができます。さらに、特定の変更セットに関連付けられた各タスクをダブルクリックするか、「イシューをブラウザーで開く」ボタン()をクリックすると、新しいウェブブラウザーウィンドウが開き、選択した codeBeamer タスクが表示されます。ユーザーが codeBeamer でタスクを変更した場合は常に、「codeBeamer Extension(codeBeamer 拡張機能)」ペインの「最新情報に更新」ボタンを押すことで、Plastic GUI で新しいデータに更新されます。
この拡張機能は、Plastic SCM と統合されたブランチや変更セットに関連付けられたイシューの情報を表示するだけでなく、イシューにリンクされたすべてのチェックインを codeBeamer に記録します。
Enable SCM log
パラメーターを FALSE
に設定します。
こうすると、ユーザーは、各チェックイン操作が codeBeamer にどのように登録されているかを確認できます。
サーバーでグローバルファイル設定をセットアップして、すべてのクライアントにデフォルトで同じ設定が適用されるようにできます。これは接続文字列などのデフォルトのグローバルパラメーターを設定するのに役立ち、ユーザーが特定の資格情報を指定できるようになります。
グローバル設定がサーバー側で作成されると、Plastic GUI の起動時にクライアント側でサーバー設定がダウンロードされます。
サーバーにグローバル設定をセットアップするには、plastic-global-config という名前のリポジトリを作成します。このリポジトリは明確に定義された構造を持ち、リポジトリに適用され、Plastic のユーザーによって使用される、イシュートラッカー拡張機能用の設定ファイルが備わっています。
plastic-global-config リポジトリは次のような構造となっています。
/repname/issuetrackers/extension_configuration_file.conf
。/allrepos/issuetrackers/extension_configuration_file.conf
。/myrepo-mysubrepo/issuetrackers/extension_configuration_file.conf
plastic-global-config リポジトリは、1 つ以上のイシュートラッキングシステムに対して設定することができます。Plastic クライアントは最初に、ユーザーが作業している特定の設定をロードします。特定の設定が存在しない場合は、allrepos
設定がロードされます。
グローバル拡張機能設定をセットアップするには、最初のステップとして、サーバーに plastic-global-config リポジトリを作成します(グローバルファイル設定をセットアップする際に作成されたものであるため、まだサーバーに存在しない場合)。
その後、このリポジトリは、先に示した必要とされる構造になっている必要があります。次の例では、vb44 リポジトリが Bugzilla にリンクされ、その他のリポジトリは Jira にリンクされます。
plasticscm_install_path/client/extensions/config_samples
フォルダーにあります。必要なパラメーターを追加して更新する必要があります。
クライアント GUI が起動すると、ユーザーのローカルディレクトリで自動的に作成される非表示のワークスペース(plastic4
ディレクトリ(Linux/Mac システムの $HOME/.plastic4
か、Windows の C:\Users\user\AppData\Local\plastic4
))に、各サーバー設定がダウンロードされます。例: C:\Users\user\AppData\Local\plastic4\globalconfig\server_port
必要な場合は、イシュートラッカーの設定を全クライアントが使用する資格情報から構成することができます。こうすることで、ユーザーが Plastic SCM クライアントの「環境設定」ダイアログの「Issue tracking(イシュー追跡)」タブを開けば、リンクされたイシュートラッカー用にそれら共通の値とグローバルな値が自動的にロードされるようになり、ユーザーは資格情報を入力するだけでそのイシュー追跡システムに正しくログインできうようになります。
こういったユーザー資格情報は、ユーザーのローカルディレクトリ(plastic4
ディレクトリ(Linux/Mac システムの場合は $HOME/.plastic4
、Windows の場合は C:\Users\ユーザー\AppData\Local\plastic4
の下))へ保存されます。例:C:\Users\user\AppData\Local\plastic4\issuetrackers\server_port\repname\extension_configuration_file.conf
Plastic SCM にはいくつかの「すぐに使える」イシュートラッカー統合拡張機能が含まれており、それを使用してほとんどの一般的なイシュー追跡システムやプロジェクト管理システムに接続できます。
これらの「すぐに使える」拡張機能により、ブランチ(推奨)または変更セットにリンクされたタスクに関する情報を、Plastic SCM のブランチエクスプローラー、変更セットビュー、またはブランチビューで表示できるようになります。これにより、「タスクごとのブランチ」パターンを実装するか個別の変更セットをタスクにリンクすると、イシュートラッカーからの関連情報をいつでも即座に利用できるようになります。
カスタムの「拡張機能」を開発するための方法を作成した理由は、市場に存在するすべての ALM、イシュートラッカー、およびビルドシステムとの統合を提供することは不可能だろうと考えたためです。共通のイシュートラッカー接続インターフェースが設計されたので、ユーザーは独自の Plastic SCM 用カスタム拡張機能を記述できます。
Plastic SCM に対する独自のカスタム拡張機能を記述するには、Visual Studio と Plastic SCM をマシンにインストールする必要があります。イシュートラッカー拡張機能を構築するために必要なライブラリは 1 つだけあります。issuetrackerinterface.dll
です。ロギング機能を追加したい場合は、log4net.dll
を利用できます(Plastic SCM によって使用されます)
新規拡張機能を作成するには、まず Visual Studio に Class Library
プロジェクトを作成し、issuetrackerinterface.dll
リファレンス(必要に応じて log4net.dll
)を追加する必要があります。
Visual Studio に Class Library
プロジェクトを作成するのに加えて、次の 2 つの異なるインターフェースを実装する必要があります。
IPlasticIssueTrackerExtension
:Plastic SCM 用のすべてのイシュートラッカー接続機能の定義。IPlasticIssueTrackerExtensionFactory
:イシュートラッカー拡張機能の設定と作成を管理します。
Class Library
とファイルのセットアップが完了したら、Plastic SCM の使用を開始する準備が整います。まず、SampleExtension
という新しいクラスを追加します。さらに、次のようにクラスを配置する名前空間を Codice.Client.IssueTracker.SampleExtension
に変更します。
namespace Codice.Client.IssueTracker.SampleExtension { public class SampleExtension : IPlasticIssueTrackerExtension { } }
まず、拡張機能設定を保存する必要があります。これはクラスコンストラクターを使用して行います。可視性は internal
に設定します。この種のオブジェクトを作成する方法を把握する必要があるのはファクトリーのみであるためです。
public class SampleExtension : IPlasticIssueTrackerExtension { IssueTrackerConfiguration mConfig; // If you want logging, this is the way to declare it // Don't forget to set log4net.dll as a reference! static readonly ILog mLog = LogManager.GetLogger("sampleextension"); Internal SampleExtension(IssueTrackerConfiguration config) { mConfig = config; mLog.Info("Sample issue tracker is initialized"); } }
これで、イシュートラッカー拡張機能のクラスを作成する方法が定義されました。次はファクトリーを構築します。そのためには、IPlasticIssueTrackerExtension
インターフェースを実装する新しい SampleExtensionFactory
クラスを追加します。必要とされるすべてのメソッドを追加するには、Visual Studio のリファクターオプションを使用することをお勧めします。インターフェースのリファレンスを右クリックして、「リファクター」 > 「インターフェイスの実装」を選択するだけです。これにより、各インターフェースメソッドにスタブが追加されます。次のように始まります。
namespace Codice.Client.IssueTracker.SampleExtension { public class SampleExtensionFactory : IPlasticIssueTrackerExtensionFactory { public IssueTrackerConfiguration GetConfiguration( IssueTrackerConfiguration storedConfiguration) { throw new NotImplementedException(); } public IPlasticIssueTrackerExtension GetIssueTrackerExtension( IssueTrackerConfiguration configuration) { throw new NotImplementedException(); } public string GetIssueTrackerName() { throw new NotImplementedException(); } } }
次のように、最後の 2 つのメソッドは実装がとても簡単です。
public IPlasticIssueTrackerExtension GetIssueTrackerExtension( IssueTrackerConfiguration configuration) { return new SampleExtension(configuration); } public string GetIssueTrackerName() { return "Sample Issue Tracker"; }
メソッドはそれぞれ、有効な設定から動作中のイシュートラッカー拡張機能と、そのイシュートラッカーの名前を返します。ただし、最初のメソッドは少し複雑です。イシュートラッカー設定を取得し、有効な拡張機能を返します。その後、必須のパラメーターとそれらのデフォルト値を定義する必要があります。
IssueTrackerConfiguration
クラスは非常にシンプルです。列挙する ExtensionWorkingMode
フィールドと IssueTrackerConfigurationParameter
のリストを格納します。
動作モードは次の 2 つの値を受け取ります。
設定パラメーターの一覧は、Plastic SCM の「環境設定」ダイアログの「イシュートラッカー」タブに表示されます。詳細については、以下の「拡張機能の設定」セクションを参照してください。
現在のユーザー ID と Plastic SCM のブランチプレフィックスの 2 つのみ定義します。前者は現在保留中のタスクの結果に影響を及ぼす一方で、後者はブランチがイシュートラッカーのタスクにリンクされているかどうかを推測しているときに、どのブランチ名プレフィックスが予期されるかを Plastic に伝えます。
基本的に、各パラメーターには name
、value
、type
、IsGlobal
の 4 つの属性があります。最初の 2 つはその名前のとおり、単に 2 つの文字列のクラス属性です。パラメーターの型は、列挙型 IssueTrackerConfigurationParameterType
によって定義されます。次にパラメーターの構成要素について説明します。
Host、User、Password を除き、同じ型に設定されたパラメーターはいくつでも定義できます。拡張機能モードが TaskOnChangeset に切り替えられると、設定パネルで BranchPrefix のすべてのエントリが無効になります。
最終的に、GetConfiguration
メソッドは次のようになります。
public IssueTrackerConfiguration GetConfiguration( IssueTrackerConfiguration storedConfiguration) { List<IssueTrackerConfigurationParameter> parameters = new List<IssueTrackerConfigurationParameter>(); ExtensionWorkingMode workingMode = GetWorkingMode(storedConfiguration); string user = GetValidParameterValue( storedConfiguration, SampleExtension.USER_KEY, "1"); string prefix = GetValidParameterValue( storedConfiguration, SampleExtension.BRANCH_PREFIX_KEY, "sample"); IssueTrackerConfigurationParameter userIdParam = new IssueTrackerConfigurationParameter() { Name = SampleExtension.USER_KEY, Value = GetValidParameterValue( storedConfiguration, SampleExtension.USER_KEY, "1"), Type = IssueTrackerConfigurationParameterType.User, IsGlobal = false }; IssueTrackerConfigurationParameter branchPrefixParam = new IssueTrackerConfigurationParameter() { Name = SampleExtension.BRANCH_PREFIX_KEY, Value = GetValidParameterValue( storedConfiguration, SampleExtension.BRANCH_PREFIX_KEY, "scm"), Type = IssueTrackerConfigurationParameterType.BranchPrefix, IsGlobal = true }; parameters.Add(userIdParam); parameters.Add(branchPrefixParam); return new IssueTrackerConfiguration(workingMode, parameters); } ExtensionWorkingMode GetWorkingMode(IssueTrackerConfiguration config) { if (config == null) return ExtensionWorkingMode.TaskOnBranch; if (config.WorkingMode == ExtensionWorkingMode.None) return ExtensionWorkingMode.TaskOnBranch; return config.WorkingMode; } string GetValidParameterValue( IssueTrackerConfiguration config, string paramName, string defaultValue) { string configValue = (config != null) ? config.GetValue(paramName) : null; if (string.IsNullOrEmpty(configValue)) return defaultValue; return configValue; }
これでファクトリーは完成です!Extension
クラスに戻りましょう。
次のステップでは、すべてのインターフェースメソッドを実装します。Visual Studio のリファクターを使用してすべてのインターフェースメソッドを追加します。
public class SampleExtension : IPlasticIssueTrackerExtension { public void Connect() { throw new NotImplementedException(); } public void Disconnect() { throw new NotImplementedException(); } public string GetExtensionName() { throw new NotImplementedException(); } public List<PlasticTask> GetPendingTasks(string assignee) { throw new NotImplementedException(); } public List<PlasticTask> GetPendingTasks() { throw new NotImplementedException(); } public PlasticTask GetTaskForBranch(string fullBranchName) { throw new NotImplementedException(); } public Dictionary<string, PlasticTask> GetTasksForBranches(List<string> fullBranchNames) { throw new NotImplementedException(); } public List<PlasticTask> LoadTasks(List<string> taskIds) { throw new NotImplementedException(); } public void LogCheckinResult(PlasticChangeset changeset, List<PlasticTask> tasks) { throw new NotImplementedException(); } public void MarkTaskAsOpen(string taskId, string assignee) { throw new NotImplementedException(); } public void OpenTaskExternally(string taskId) { throw new NotImplementedException(); } public bool TestConnection(IssueTrackerConfiguration configuration) { throw new NotImplementedException(); } public void UpdateLinkedTasksToChangeset(PlasticChangeset changeset, List<string> tasks) { throw new NotImplementedException(); } }
もちろん、すべてのメソッドを実装する必要はありません。不要な機能や提供しない機能がある場合は、メソッド本体を空のままにするか、デフォルト値を返すようにしてください。戻り値がコレクション型の場合は、null オブジェクトではなく空のコレクションを返すことをお勧めします。
各メソッドの簡単な説明を以下に示します。
Connect
Disconnect
Connect
とは逆のメソッドであり、ターゲットのイシュートラッカーに接続するために必要なリソース(セッションなど)を解放するコードが含まれます。GetExtensionName
GetPendingTasks
GetTaskForBranch
GetTasksForBranches
LoadTasks
LogCheckinResult
MarkTaskAsOpen
OpenTaskExternally
TestConnection
UpdateLinkedTasksToChangeset
これらのメソッドの一部について、実装例を以下に示します。タスクのコンテンツは、サンプルの lorem ipsum ウェブサービス(https://jsonplaceholder.typicode.com)から取得します。
これは非常に単純な実装例です。Plastic のビューに表示される名前を返すだけで済みます。
public string GetExtensionName() { return "My awesome extension"; }
TaskOnBranch モードで動作するようにイシュートラッカーの拡張機能が設定されている場合、このメソッドは、描画されたブランチを関連付けられたタスクにマップするためにブランチエクスプローラーで使用されます。また、コードを簡潔にするために、この機能を複数のメソッドに分割して読みやすくしています。
public Dictionary<string, PlasticTask> GetTasksForBranches( List<string> fullBranchNames) { Dictionary<string, PlasticTask> result = new Dictionary<string, PlasticTask>(); foreach(string fullBranchName in fullBranchNames) { string taskId = GetTaskIdFromBranchName( GetBranchName(fullBranchName)); result.Add(fullBranchName, LoadSingleTask(taskId)); } return result; } string GetBranchName(string fullBranchName) { int lastSeparatorIndex = fullBranchName.LastIndexOf('/'); if (lastSeparatorIndex < 0 ) return fullBranchName; if (lastSeparatorIndex == fullBranchName.Length - 1) return string.Empty; return fullBranchName.Substring(lastSeparatorIndex + 1); } string GetTaskIdFromBranchName(string branchName) { string prefix = mConfig.GetValue(BRANCH_PREFIX_KEY); if (string.IsNullOrEmpty(prefix)) return branchName; if (!branchName.StartsWith(branchName) || branchName == prefix) return string.Empty; return branchName.Substring(prefix.Length); } const string POST_URL = "https://jsonplaceholder.typicode.com/posts/{0}"; PlasticTask LoadSingleTask(string taskId) { if (string.IsNullOrEmpty(taskId)) return null; string uri = string.Format(POST_URL, taskId); string resultJson = PerformJsonRequest(uri); return BuildTaskFromJson( JsonConvert.DeserializeObject<MyServiceData>(resultJson)); } string PerformJsonRequest(string targetUri) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(targetUri); try { using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) using (StreamReader reader = new StreamReader(resp.GetResponseStream())) { return reader.ReadToEnd(); } } catch(Exception e) { mLog.ErrorFormat( "Unable to perform request on URI {0}: {1}", targetUri, e.Message); mLog.DebugFormat( "Stack trace:{0}{1}", Environment.NewLine, e.StackTrace); return string.Empty; } } PlasticTask BuildTaskFromJson(MyServiceData jsonData) { if (jsonData == null) return null; return new PlasticTask() { Id = jsonData.Id.ToString(), Owner = jsonData.UserId.ToString(), Title = jsonData.Title, Description = jsonData.Body, Status = "working" }; }
このメソッドがフルブランチ名(階層全体を含む名前など)のリストを受け取ることがわかります。それぞれの名前について、このメソッドはタスク ID を抽出し、jsonplaceholder
サービスに対するクエリを実行します。
JsonPlaceholder
は、REST
サービスに相当する「lorem ipsum」ジェネレーターです。数値を渡すと、いくつかのサンプルフィールドを含む JSON オブジェクトが返されます。数値を指定せずに URL のクエリを実行すると、オブジェクトのリストが返されます。詳細については、https://jsonplaceholder.typicode.com を参照してください。
JSON 応答を受け取ったら、お好みの JSON パーサーを使用して有効なオブジェクトインスタンスに逆シリアライズできます。前の例では、Newtonsoft.Json
を使用しました。
最後のステップでは、PlasticTask
インスタンスを構築し、REST
サービスから返された値を使用してそのフィールドを設定します。すべてのブランチ名が処理されると、このメソッドはマッピングを Dictionary<string, PlasticTask>
クラスとして返します。
OpenTask
メソッドは、元の情報ソースへのアクセスが必要な場合に使用されます。たとえば、ウェブサイトやサードパーティのアプリケーションに必要な情報が含まれている場合があります。このような状況において、Plastic イシュートラッカーの拡張機能では、OpenTask
メソッドを使用してこのデータを表示することができます。
public void OpenTaskExternally(string taskId) { Process.Start(string.Format( "https://www.google.es/search?q={0}", taskId)); }
実装例は非常にシンプルです。Google でタスク番号を検索するための URI を構築し、System.Diagnostics.Process
クラスを使用してデフォルトのブラウザーで開きます。
OpenTask
メソッドは、Plastic SCM とイシュートラッカーを緊密に統合する必要がある場合に便利です。
前の GetTasksForBranches コードサンプルについて言えば、sample というプレフィックスで始まるブランチを Plastic SCM のブランチビューで選択すると、右側のパネルに詳細情報が表示されます。
このように、右側のパネルには GetTasksForBranches
メソッドによって取得された PlasticTask
プロパティの情報が表示されます。
TaskOnChangeset 動作モードを使用するように拡張機能を設定した場合は、右側のパネルに 3 つのボタンが表示されます。
このダイアログの「イシューを開く」ボタンは、前に説明したものと同様のものです。任意の数のイシューを特定の変更セットにリンクできます。
「TaskOnBranch」モードは自動化されたメカニズムなので、ブランチ名とプレフィックスを使用してイシューがブランチに自動的にリンクされますが、TaskOnChangeset モードでは、イシュー情報を個別の変更セットに手動で関連付けることができます。ここで紹介した変更セットビューのアクションボタン以外に、「チェックイン情報」ダイアログを使用して、この種のリンクをチェックイン時に追加することもできます。
イシュートラッカーに関する最新の主要機能は、特定のイシューから新規ブランチを作成できる機能です。イシュートラッカー拡張機能が適切に設定されたいれば、「ブランチを作成」ダイアログに新規のコントロールセットが自動的に表示されます(「タスクから」モード)。
メインコントロールはタスクリストによって決定され、GetPendingTasks
メソッドによって返された結果が表示されます。デフォルトでは、現在のユーザーに割り当てられたタスク(設定パネルで設定されたもの)のみが表示されます。「保留中のタスクをすべてのユーザーから表示」コントロールをオンにすると、チェックボックスのタイトルが示すように、この制約がオーバーライドされます。「ブランチ名」と「コメント」は自動的に設定されますが、後者は変更することもできます。
最後に、「イシュートラッカーでオープンとしてマーク」をオンにすると、ブランチが正常に作成された後に、MarkTaskAsOpen
メソッドが実行されます。これにより、選択されたイシューの状態が、Open、In Progress、または現在のイシュートラッカーに対応する同等の状態に設定されます。
クラスライブラリを作成するたびに、コードを簡単にデバッグするベストな方法は何なのかという疑問が起こります。Plastic SCM 拡張機能に関しては、その解決策は明らかです。ビルドセクションでクラスライブラリの特性に変更を加え、.dll
出力ファイルと .pdb
出力ファイルを次のように Plastic SCM クライアントディレクトリに直接展開するだけです。
出力パスを設定した後は、Plastic SCM クライアントを起動し、デバッガーを結果の plastic.exe プロセスに自動的にアタッチするように、Visual Studio を設定することもできます。こうすることで、Plastic がカスタム拡張機能のコードと対話するときに、設定したブレークポイントが自動的にトリガーされます。
Program Files
の下に配置されます。
Plastic でカスタム拡張機能を認識できるようにするには、Plastic SCM クライアントフォルダー内の customextensions.conf
ファイルを編集する必要があります。
# Each line defines a Plastic SCM extension with a name and a relative dll # path from client installation directory # i.e: # My Custom Extension=extensions/mycustomextension/mycustomextension.dll Sample Extension=SampleExtension.dll
この設定ステップの後で、「環境設定」ダイアログを開き、「Issue tracking(イシュー追跡)」タブを開く場合があります。拡張機能がドロップダウンリストにリスト表示されます。選択すると、拡張機能を設定するために必要なコントロールがメインパネルに表示されます。
「適用」または「OK」ボタンをクリックすると、Plastic が新しい拡張機能と連携できるようになります。
カスタムイシュートラッカー拡張機能を使用すると、任意のイシュートラッカーを Plastic SCM に統合できます。企業のイントラネット、自社開発のイシュー追跡システムなど、可能性は無限大です。
独自のコードを開発して自社のシステムに接続する機能と、Plastic SCM クライアントに簡単に統合する機能が備わっており、そのすべてが Plastic SCM での SCM 体験をカスタマイズする素晴らしい機会をもたらします。
こちらのサンプル拡張機能に興味がある場合は、Plastic の GitHub リポジトリでソース全文を確認できます。
Use LDAP credentials if available
、Use default proxy credentials
、および Issue types
を設定できるようになりました。Pending status list
- 「保留中」とみなされる Axosoft のステータスのリストを設定できるようになりました。Default Repository
パラメーターを設定します。Custom Field ID
パラメーターがオプションになりました。Issue query limit
- 「ブランチを作成」ダイアログで返される結果の最大数を設定できるようになりました。Resolved issue states
- 「解決済み」とみなされるステータス名のリストを定義できるようになりました。