Swarm用のHelix Coreサーバの構成
Swarmインスタンスの構成が完了したら、最後の作業として、関連イベントをHelixサーバに指示するようにSwarmを構成します。この作業は、一連のトリガを使用して行います。
Helixサーバのトリガの詳細については、『Helix Coreサーバ管理者ガイド』の「トリガを使用して動作のカスタマイズを行う」を参照してください。
Swarmでは、P4AUTHを使用するように設定されているHelixサーバはサポートされていません。詳しくは、『Helix Coreサーバ管理者ガイド』の「集中認証サーバ(P4AUTH)」を参照してください。
- 「Helix Coreサーバ」という擁護は、Helixサーバ マシン(P4D)、プロキシ、ブローカ、レプリカ、エッジサーバ、コミットサーバを指す場合があります。 説明を簡単にするため、「Helixサーバ 」という用語は、Helix Coreサーバマシンのすべての構成を表す目的で使用するものとします。
- Swarmは、Helixサーバ(P4D)とコミットサーバに接続することができます。
- Swarmを、Helixブローカ、Helixプロキシ、Helixエッジサーバ、転送レプリカ、読み取り専用レプリカサーバに接続しないでください。
複数のHelixサーバ (P4D)に接続できるようにSwarmを設定する方法については、「複数のHelixサーバインスタンス」を参照してください。
コミットエッジアーキテクチャ用に設定されているHelixサーバに接続するようにSwarmを設定する方法については、「コミットエッジの展開」を参照してください。
トリガを使用してイベントをSwarmにプッシュする
Helixサーバには、「トリガ」という機能が用意されています。トリガにより、サーバの動作をカスタマイズしたり、特定のバージョン管理操作に対して追加のプロセスを呼び出したりすることができます。Swarmには、Perlで作成されたトリガスクリプトが付属しています。このスクリプトにより、Helixサーバ内のアクティビティに関する情報がSwarmに通知されます。
Perlトリガの構成方法については、「トリガオプション」を参照してください。
WindowsまたはLinuxでホストされるHelixサーバを使用してSwarmトリガを設定する
以下に示す手順の多くは、WindowsでホストされるHelixサーバとLinuxでホストされるHelixサーバの両方に共通しています。WindowsオペレーティングシステムとLinuxオペレーティングシステムで違いがある場合は、手順内にその旨が記載されています。
- Helixサーバをホストするマシンに、必要なトリガの依存関係がインストールされていることを確認します。
- SwarmトリガをHelixサーバにコピーします。
- バージョン2014.1以降のHelixサーバを使用している場合は、
p4-bin/scripts/swarm-trigger.pl
トリガスクリプトをHelixサーバにサブミットし、このスクリプトをディポから実行することをお勧めします。ディポの場所としては、//.swarm/triggers/swarm-trigger.pl
を使用することをお勧めします(特に、コメントの添付ファイルが既に設定されている場合)。 - バージョン2014.1よりも前のHelixサーバを使用している場合や、ファイルシステム内のトリガを使用する場合は、Helixサーバをホストするサーバに
p4-bin/scripts/swarm-trigger.pl
スクリプトをコピーする必要があります。Helixサーバの展開環境でコミットエッジアーキテクチャを使用する場合は、このスクリプトをすべてのエッジサーバにコピーして、すべてのサーバ上の同じパス内にこのスクリプトが存在している状態にする必要があります。 -
トリガを設定します。
- 「パッケージを使用してSwarmのインストールと構成を行う」に記載されているSwarmトリガパッケージを使用する場合、構成ファイルは
/opt/perforce/etc/swarm-trigger.conf
に保管されています。 - 前の手順でトリガスクリプトをディポにサブミットした場合は、同じ方法で、構成ファイルをディポにサブミットする必要があります。ディポの場所としては、
//.swarm/triggers/swarm-trigger.conf
をお勧めします。 - 前の手順で、コミットサーバとすべてのエッジサーバにトリガスクリプトをコピーした場合は、コミットサーバとすべてのエッジサーバに構成ファイルをコピーして、すべてのサーバ上の同じパス内に構成ファイルが存在している状態にする必要があります。
- Swarmのトリガパッケージを使用していない場合は、
swarm-trigger.pl
ディレクトリ内にswarm-trigger.conf
を作成します。 - 前の手順でトリガスクリプトをディポにサブミットした場合は、同じ方法で、構成ファイルをディポにサブミットする必要があります。ディポの場所としては、
//.swarm/triggers/swarm-trigger.conf
をお勧めします。 - 前の手順で、コミットサーバとすべてのエッジサーバにトリガスクリプトをコピーした場合は、コミットサーバとすべてのエッジサーバに構成ファイルをコピーして、すべてのサーバ上の同じパス内に構成ファイルが存在している状態にする必要があります。
swarm-trigger.pl
スクリプト内で定義されている変数- /etc/perforce/swarm-trigger.conf
- /opt/perforce/etc/swarm-trigger.conf
swarm-trigger.pl
ディレクトリ内に保管されているswarm-trigger.conf
ファイル- -cコマンドライン引数を使用して
swarm-trigger.pl
スクリプトに渡されたファイル -
Linuxの場合のみ: スクリプトによって権限が正しく実行されるかどうかを確認します。
重要スクリプトがHelixサーバに対してすでにコミットされている場合は、この手順をスキップしてください。
$ chmod +x /path/to/swarm-trigger.pl
-
トリガスクリプトが正しく実行されるかどうかを確認します。
- Windowsの場合:
次のコマンドを実行します。
C:\> perl "C:\path\to\swarm-trigger.pl" -t ping -v 0
Perlをコマンドパス内で使用できない場合は、
perl
のフルパスを指定してください。このコマンドの出力は表示されません。無効なトリガトークンを使用するなど、トリガの構成が正しくない場合は、エラーが表示されます。
警告Curlを使用する場合のみ:
トリガをインストールして
curl.exe
を実行すると、以下のようなセキュリティ警告ダイアログが表示される場合があります。このダイアログが表示された場合は、トリガが中断され、Perlのゾンビプロセスが作成されます。警告ダイアログを表示しないようにHelixサーバによるトリガの呼び出し方法が設計されているため、通常は、Windowsが対話型操作を待機している場合であっても、この警告ダイアログが表示されることはありません。
この問題を解決するには、以下の手順を実行します。
- [このファイルを開く前に常に警告する]チェックボックスの選択を解除して[実行]をクリックします。
- [
curl.exe
]を右クリックし、[プロパティ]を選択して[ロックの解除]をクリックします。
- Linuxの場合:
-
Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。
警告-
「swarm.shelvedel shelve-delete」というトリガ行は、バージョン2018.1以降のSwarmで追加され、バージョン2020.1で更新された行です。
- Swarmを新しくインストールする場合、またはバージョン2017.4以前のSwarmをアップグレードする場合: 「
swarm.shelvedel shelve-delete
」というトリガ行をHelixサーバのトリガテーブルに追加します(まだ追加されていない場合)。 - バージョン2018.xまたはバージョン2019.xのSwarmをアップグレードする場合: Swarmのトリガテーブル内の「
swarm.shelvedel shelve-delete
」というトリガ行を、アップグレード先バージョンのHelixサーバで指定されているトリガ行に置き換えます。
- Swarmを新しくインストールする場合、またはバージョン2017.4以前のSwarmをアップグレードする場合: 「
- ワークフロー機能:
- ワークフロー機能を有効にする(これがデフォルト設定です):
- Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合): swarm.enforce.1、swarm.enforce.2、swarm.strict.1、swarm.strict.2
- 次のトリガ行をHelixサーバのトリガテーブルに追加します(これらのトリガ行がまだ追加されていない場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
- ワークフロー機能を無効にする:
- Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
- swarm.enforce.1、swarm.enforce.2、swarm.strict.1swarm.strict.2の各トリガ行はオプションであるため、コメント化されています。これらのトリガ行を使用する場合は、DEPOT_PATH1とDEPOT_PATH2の値を適切に設定する必要があります。ただし、これらのトリガは、今後のリリースでは使用できなくなります。
- 最初の2行では、適切なレビューに関連付けられていないサブミット済み変更を却下するためのenforce機能を設定します。
- 残りの2行では、チェンジリストのコンテンツが関連する承認済みレビューのコンテンツに一致しない場合に、サブミットされた変更をすべて却下するためのstrict機能を設定します。
- enforce機能またはstrict機能を他のディポパスにも適用する必要がある場合は、これらのトリガ行をコピーして、ディポパスの部分を必要に応じて変更してください。
- Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合):
バージョン2019.2以降のSwarmでは、ワークフロー機能がデフォルトで有効になっています。ワークフロー機能を有効にするためのトリガ行は、ワークフロー機能を無効にするためのトリガ行とは異なります。
ヒント以下のように
-o
オプションを使用してトリガを実行することにより、一連のトリガ行をほとんど(あるいはまったく)変更することなく、トリガスクリプトで指定することができます。Windows
C:\> perl "C:\path\to\swarm-trigger.pl" -o
Linux
$ /path/to/swarm-trigger.pl -o
ヒント%quote%c:\path\to\perl.exe%quote%
エントリが必要になるのは、Windowsでホストされるシステムの場合だけです。- 各トリガ行の先頭をタブでインデントする必要があります。
- コメント化されているトリガ行は保存されません。
-
Swarmのconfig.phpファイルでワークフロー機能を無効にした場合、ワークフローがSwarmで処理されなくなりますが、Helixサーバがワークフロートリガスクリプトを実行するたびに、わずかなオーバーヘッドが発生します。次のワークフロートリガ行をコメント化すると、このオーバーヘッドをなくすことができます: swarm.enforce change-submit、swarm.strict change-content、swarm.shelvesub shelve-submit
super 権限を持つHelixサーバユーザとして
p4 triggers
コマンドを実行し、Helixサーバトリガテーブルに以下の行を追加します(先頭のタブ文字も指定してください)。以下に示す各行で、perl.exe
トリガスクリプトのパスと構成ファイルのパスを、Helixサーバ上の実際のパスに変更します。- トリガスクリプトと構成ファイルの両方をHelixサーバにコミットした場合は、以下の行を追加します。
swarm.job form-commit job "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t job -v %formname%" swarm.user form-commit user "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t user -v %formname%" swarm.userdel form-delete user "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t userdel -v %formname%" swarm.group form-commit group "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t group -v %formname%" swarm.groupdel form-delete group "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t groupdel -v %formname%" swarm.changesave form-save change "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t changesave -v %formname%" swarm.shelve shelve-commit //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t shelve -v %change%" swarm.commit change-commit //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t commit -v %change%" swarm.shelvedel shelve-delete //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t shelvedel -v %change% -w %client% -u %user% -d %quote%%clientcwd%^^^%quote% -a %quote%%argsQuoted%%quote% -s %quote%%serverVersion%%quote%" # The following three triggers are used by workflow. If workflow is disabled in the Swarm # configuration then they should be disabled. swarm.enforce change-submit //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t checkenforced -v %change% -u %user%" swarm.strict change-content //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t checkstrict -v %change% -u %user%" swarm.shelvesub shelve-submit //... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t checkshelve -v %change% -u %user%" # The following triggers are only used to prevent a commit without an approved review. # They predate the workflow functionality and should only be used if workflow is disabled. # Support for these will be dropped in a later release. # swarm.enforce.1 change-submit //DEPOT_PATH1/... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t enforce -v %change% -p %serverport%" # swarm.enforce.2 change-submit //DEPOT_PATH2/... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t enforce -v %change% -p %serverport%" # swarm.strict.1 change-content //DEPOT_PATH1/... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t strict -v %change% -p %serverport%" # swarm.strict.2 change-content //DEPOT_PATH2/... "%quote%c:\path\to\perl.exe%quote% %//.swarm/triggers/swarm-trigger.pl% -c %//.swarm/triggers/swarm-trigger.conf% -t strict -v %change% -p %serverport%"
- トリガスクリプトと構成ファイルをすべてのサーバの共通パスにコピーした場合は、以下の行を追加します。
swarm.job form-commit job "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t job -v %formname%" swarm.user form-commit user "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t user -v %formname%" swarm.userdel form-delete user "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t userdel -v %formname%" swarm.group form-commit group "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t group -v %formname%" swarm.groupdel form-delete group "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t groupdel -v %formname%" swarm.changesave form-save change "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t changesave -v %formname%" swarm.shelve shelve-commit //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t shelve -v %change%" swarm.commit change-commit //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t commit -v %change%" swarm.shelvedel shelve-delete //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t shelvedel -v %change% -w %client% -u %user% -d %quote%%clientcwd%^^^%quote% -a %quote%%argsQuoted%%quote% -s %quote%%serverVersion%%quote%" # The following three triggers are used by workflow. If workflow is disabled in the Swarm # configuration then they should be disabled. swarm.enforce change-submit //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t checkenforced -v %change% -u %user%" swarm.strict change-content //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t checkstrict -v %change% -u %user%" swarm.shelvesub shelve-submit //... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t checkshelve -v %change% -u %user%" # The following triggers are only used to prevent a commit without an approved review. # They predate the workflow functionality and should only be used if workflow is disabled. # Support for these will be dropped in a later release. # swarm.enforce.1 change-submit //DEPOT_PATH1/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t enforce -v %change% -p %serverport%" # swarm.enforce.2 change-submit //DEPOT_PATH2/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t enforce -v %change% -p %serverport%" # swarm.strict.1 change-content //DEPOT_PATH1/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t strict -v %change% -p %serverport%" # swarm.strict.2 change-content //DEPOT_PATH2/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t strict -v %change% -p %serverport%"
警告WindowsとLinux:
バージョン2010.2のサーバで
%quote%
を使用することはできません(ただし、使用しても悪影響はありません)。このバージョンを使用する場合は、perl.exe
のパスやスクリプトのパスにスペースを含めないようにしてください。重要ワークフロー機能を無効にする:
2014.1リリースよりも古いHelixサーバでSSLが有効になっている場合は、必要なトランスポートインジケータが%serverport%トリガ変数に含まれていないため、enforceトリガとstrictトリガが失敗する可能性があります。
この問題を解決するには、トリガ行の「%serverport%」の直前に「ssl:」を追加します。以下に例を示します。
# The following triggers are only used to prevent a commit without an approved review. # They predate the workflow functionality and should only be used if workflow is disabled. # Support for these will be dropped in a later release. # swarm.enforce.1 change-submit //DEPOT_PATH1/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t enforce -v %change% -p ssl:%serverport%" # swarm.enforce.2 change-submit //DEPOT_PATH2/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t enforce -v %change% -p ssl:%serverport%" # swarm.strict.1 change-content //DEPOT_PATH1/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t strict -v %change% -p ssl:%serverport%" # swarm.strict.2 change-content //DEPOT_PATH2/... "%quote%C:\path\to\perl.exe%quote% %quote%/path/to/swarm-trigger.pl%quote% -c %quote%/path/to/swarm-trigger.conf%quote% -t strict -v %change% -p ssl:%serverport%"
-
-
すべての保留中の変更を昇格させるようにHelixサーバを構成します。
この構成を設定すると、Swarmが、すべての保留中のチェンジリストにアクセスできるようになります。これは、プリコミットレビューの要件です。この構成が設定されていない場合、エッジサーバに接続しているユーザは、プリコミットレビューを開始し、保留中のファイルをコミットサーバに昇格させるために別のファイルを保留する際に、
-p
オプションを使用する必要があります。p4 configure set dm.shelve.promote=1
-
必要に応じて、コミットサーバにログインを転送します。
P4VとそのSwarm統合を使用する必要がある場合は、コミットサーバにログインを転送することをお勧めします。詳細については、「P4Vの認証」を参照してください。
- 必要に応じて、Swarmに対して追加の機能を構成します。
- 任意指定: 通常のユーザに対して、Swarmストレージを非表示にします。詳細については、「通常のユーザに対してSwarmストレージを非表示にする」を参照してください。
- 任意指定: 排他的ロックの処理を行います。詳細については、「排他的ロックの処理」を参照してください。
- インストールのタイプに応じて、以下に示すいずれかの操作を実行します。
- Swarm パッケージを使用してインストールした場合: Swarmのインストール環境をカスタマイズするためのインストール後構成オプションを確認します。詳細については、「インストール後の構成オプション」を参照してください。
- Swarm OVOVAを使用してインストールした場合: Swarmのインストール環境をカスタマイズするためのインストール後構成オプションを確認します。詳細については、「インストール後の構成オプション」を参照してください。
- Swarm tarballを使用してインストールした場合:ワーカーを生成するための繰り返しタスクを設定します。詳しくは、「ワーカーを生成する繰り返しタスクをセットアップする」を参照してください。
Swarm OVAを使用している場合、OVAのファイルシステム内でのトリガスクリプトのフルパスは次のようになります: /opt/perforce/swarm/p4-bin/scripts/swarm-trigger.pl
「トリガトークンを確立する」で設定したAPIトークンを使用する必要があります。
swarm-trigger.pl
を直接設定することもできますが、swarm-trigger.conf
という構成ファイルを作成することをお勧めします。この構成ファイルを使用すると、アップグレードが大幅に簡素化されます。
swarm-trigger.conf
ファイルには、以下の例のようなコードが記述されています。
# SWARM_HOST (required)
# Hostname of your Swarm instance, with leading "http://" or "https://".
SWARM_HOST="http://my-swarm-host"
# SWARM_TOKEN (required)
# The token used when talking to Swarm to offer some security. To obtain the
# value, log in to Swarm as a super user and select 'About Swarm' to see the
# token value.
SWARM_TOKEN="MY-UUID-STYLE-TOKEN"
# ADMIN_USER (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています)
# For enforcing reviewed changes, optionally specify the normal Perforce user
# with admin privileges (to read keys); if not set, will use whatever Perforce
# user is set in environment.
ADMIN_USER=
# ADMIN_TICKET_FILE (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています)
# For enforcing reviewed changes, optionally specify the location of the
# p4tickets file if different from the default ($HOME/.p4tickets).
# Ensure this user is a member of a group with an 'unlimited' or very long
# timeout; then, manually login as this user from the Perforce server machine to
# set the ticket.
ADMIN_TICKET_FILE=
# VERIFY_SSL (optional)
# If HTTPS is being used on the Swarm web server, then this controls whether
# the SSL certificate is validated or not. By default this is set to 1, which
# means any SSL certificates must be valid. If the web server is using a self
# signed certificate, then this must be set to 0.
VERIFY_SSL=1
構成ファイルswarm-trigger.conf
のSWARM_HOST
変数とSWARM_TOKEN
変数に適切な値を設定してください。
Windowsの場合のみ:
HTTP::Tiny
モジュールがインストールされていない場合は、トリガスクリプトを編集してcurl.exe
のフルパスを指定しなければならないことがあります。
Linuxの場合のみ:
swarm-trigger.pl
は、以下のファイル内で構成情報を検索します。後から検索されたファイル内で定義されている変数により、最初に検索された同じ名前の変数が上書きされます。
WindowsとLinux:
ADMIN_USERの値を指定する場合は、%USERPROFILE%/p4tickets.txtファイル内のチケット(Windowsの場合)、$HOME/.p4ticketsファイル内のチケット(Linuxの場合)、またはADMIN_TICKET_FILEで指定されているオプションのチケットファイル内のチケットで、Helixサーバの起動用ポートを使用する必要があります。例えば、以下のコマンドでp4dを開始したとします。
C:\> p4d -p my-helix-core-server:1666 ...
この場合、以下のコマンドを使用して、ADMIN_USERで指定されているadminユーザのチケットを設定する必要があります。
C:\> p4 -p my-helix-core-server:1666 -u admin_userid login
正しくないポートを使用してチケットを設定すると、以下のようなエラーメッセージが表示されます。これは、トリガが正しくないポートを使用しようとしていることを示しています。
'swarm.strict.1' validation failed: Invalid login credentials to [port] within this trigger script; please contact your administrator.
スクリプトがHelixサーバに対してすでにコミットされている場合は、この手順をスキップしてください。
$ /path/to/swarm-trigger.pl -t ping -v 0
このコマンドの出力は表示されません。無効なトリガトークンを使用するなど、トリガの構成が正しくない場合は、エラーが表示されます。
引数を指定せずにトリガスクリプトを実行し、使用状況に関する追加情報を確認してください。
通常のユーザに対してSwarmストレージを非表示にする
Swarmの情報ストレージでは、Helixサーバのkeys
機能が使用されます。デフォルトでは、list レベルのアクセス権限が割り当てられているユーザは、キーの検索を行うことができます。その際、通常はアクセスできない情報を取得できる場合があります。review レベルのアクセス権限が割り当てられているユーザは、キーの書き込みや修正を行うことができます。その際、キーの書き込みや修正が原因で、データが破損する可能性があります。
admin レベルのアクセス権限が割り当てられているユーザ以外はキーの検索や修正を行うことができないように、構成可能変数dm.keys.hide
の値を2に設定することをお勧めします。バージョン2013.1以降のHelixサーバの場合、dm.keys.hide
を使用することができます。
dm.keys.hide
の値を2に設定した場合は、p4 keys
コマンドとp4 key
コマンドの両方で、Helixサーバにおけるadmin レベルのアクセス権限を指定する必要があります。dm.keys.hide
の値を1に設定した場合は、p4 keys
コマンドでのみ、Helixサーバにおけるadmin レベルのアクセス権限を指定する必要があります。dm.keys.hide
の値を1に設定した場合(または値を設定しなかった場合)、キーの名前を知っているユーザ(またはキーの名前を推測できるユーザ)は、p4 key
コマンドを使用してキーの値を読み込んだり(list レベルのアクセス権を持つユーザの場合)、キーの値を書き込んだり(review レベルのアクセス権を持つユーザの場合)することができます。
dm.keys.hide
を設定するには、以下のコマンドを実行します。
$ p4 configure set dm.keys.hide=2
dm.keys.hide
の現在の値を確認するには、以下のコマンドを実行します。
$ p4 configure show dm.keys.hide
dm.keys.hide
の設定を解除するには、以下のコマンドを実行します。
$ p4 configure unset dm.keys.hide
排他的ロックの処理
Swarmは、レビューの作成時にファイルのコピーを取得します。ファイルタイプ修飾子「+l」を設定することにより、Helixサーバが管理する一部のファイルを「排他的にオープンされるファイル」として制限することができます。このファイルレベルの設定を行うことにより、一度に1人のユーザのみが、ファイルを編集用として開くことができるようになります。
これらの「排他オープン」ファイルをSwarmで操作できるようにするには、Helixサーバの構成でfiletype.bypasslock
を有効にする必要があります。
filetype.bypasslock
を設定するには、以下のコマンドを実行します。
$ p4 configure set filetype.bypasslock=1
filetype.bypasslock
の現在の値を確認するには、以下のコマンドを実行します。
$ p4 configure show filetype.bypasslock
filetype.bypasslock
の設定を解除するには、以下のコマンドを実行します。
$ p4 configure unset filetype.bypasslock
この設定がHelixサーバで有効になっていない場合、排他オープンファイルを操作しようとすると、Swarmにより、「Cannot unshelve review (x).One or more files are exclusively open」などのような例外メッセージが表示されます。その場合は、filetype.bypasslock
構成可能変数を有効にしてください。