Helix Swarm管理者ガイド (2020.1)

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)とコミットサーバに接続することができます。
  • 複数のHelixサーバ (P4D)に接続できるようにSwarmを設定する方法については、複数のHelixサーバインスタンスを参照してください。

    コミットエッジアーキテクチャ用に設定されているHelixサーバに接続するようにSwarmを設定する方法については、コミットエッジの展開を参照してください。

  • Swarmを、Helixブローカ、Helixプロキシ、Helixエッジサーバ、転送レプリカ、読み取り専用レプリカサーバに接続しないでください。

トリガを使用してイベントをSwarmにプッシュする

Helixサーバには、「トリガ」という機能が用意されています。トリガにより、サーバの動作をカスタマイズしたり、特定のバージョン管理操作に対して追加のプロセスを呼び出したりすることができます。 Swarmには、Perlで作成されたトリガスクリプトが付属しています。このスクリプトにより、Helixサーバ内のアクティビティに関する情報がSwarmに通知されます。

Perlトリガの構成方法については、「トリガオプション」を参照してください。

CentOS/RHEL 6でホストされるHelixサーバを使用してSwarmのトリガを設定する

トリガスクリプトの最新の更新版を使用するには、バージョン6のCentOS/RHELプラットフォームでは使用できない依存関係が必要になります。 CentOS 6で実行されるトリガには、CentOS 6の最小インストールの実行時にデフォルトではインストールされないcurlに対する依存関係が存在します。

WindowsまたはLinuxでホストされるHelixサーバを使用してSwarmを設定する

ヒント

以下に示す手順の多くは、WindowsでホストされるHelixサーバとLinuxでホストされるHelixサーバの両方に共通しています。 WindowsオペレーティングシステムとLinuxオペレーティングシステムで違いがある場合は、手順内にその旨が記載されています。

  1. Helixサーバをホストするマシンに、必要なトリガの依存関係がインストールされていることを確認します。
  2. 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 OVAを使用している場合、OVAのファイルシステム内でのトリガスクリプトのフルパスは次のようになります: /opt/perforce/swarm/p4-bin/scripts/swarm-trigger.pl

  3. トリガを設定します。

  4. トリガトークンを確立するで設定したAPIトークンを使用する必要があります。

    swarm-trigger.pl を直接設定することもできますが、swarm-trigger.confという構成ファイルを作成することをお勧めします。 この構成ファイルを使用すると、アップグレードが大幅に簡素化されます。

    • パッケージを使用して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.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.confSWARM_HOST変数とSWARM_TOKEN変数に適切な値を設定してください。

    注意

    Windowsのみ:

    HTTP::Tinyモジュールがインストールされていない場合は、トリガスクリプトを編集してcurl.exeのフルパスを指定しなければならないことがあります。

    注意

    Linuxのみ:

    swarm-trigger.pl は、以下に示す各ファイル内で構成情報を検索します。 後から検索されたファイル内で定義されている変数により、最初に検索された同じ名前の変数が上書きされます。

    • swarm-trigger.plスクリプト内で定義されている変数
    • /etc/perforce/swarm-trigger.conf
    • /opt/perforce/etc/swarm-trigger.conf
    • swarm-trigger.plディレクトリナインい保管されているswarm-trigger.confファイル
    • -cコマンドライン引数を使用して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.

  5. Linuxのみ: スクリプトによって権限が正しく実行されるかどうかを確認します。

    重要

    スクリプトがHelixサーバに対してすでにコミットされている場合は、この手順をスキップしてください。

    $ chmod +x /path/to/swarm-trigger.pl
  6. トリガスクリプトが正しく実行されるかどうかを確認します。

    • Windowsの場合:
    • 次のコマンドを実行します。

      C:\>  perl "C:\path\to\swarm-trigger.pl" -t ping -v 0

      Perlをコマンドパス内で使用できない場合は、perlのフルパスを指定してください。

      このコマンドの出力は表示されません。 無効なトリガトークンを使用するなど、トリガの構成が正しくない場合は、エラーが表示されます。

      警告

      Curlを使用する場合のみ:

      トリガをインストールしてcurl.exeを実行すると、以下のようなセキュリティ警告ダイアログが表示される場合があります。

      Windowsのセキュリティ警告ダイアログの画像

      このダイアログが表示された場合は、トリガが中断され、Perlのゾンビプロセスが作成されます。 警告ダイアログを表示しないようにHelixサーバによるトリガの呼び出し方法が設計されているため、通常は、Windowsが対話型操作を待機している場合であっても、この警告ダイアログが表示されることはありません。

      この問題を解決するには、以下の手順を実行します。

      1. [このファイルを開く前に常に警告する]チェックボックスの選択を解除して[実行]をクリックします。
      2. [curl.exe]を右クリックし、[プロパティ]を選択して[ロックの解除]をクリックします。

    • Linuxの場合:
    • 重要

      スクリプトがHelixサーバに対してすでにコミットされている場合は、この手順をスキップしてください。

      $ /path/to/swarm-trigger.pl -t ping -v 0

      このコマンドの出力は表示されません。 無効なトリガトークンを使用するなど、トリガの構成が正しくない場合は、エラーが表示されます。

      注意

      引数を指定せずにトリガスクリプトを実行し、使用状況に関する追加情報を確認してください。

  7. Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。

    警告
    • swarm.shelvedel shelve-delete」というトリガ行は、バージョン2018.1以降のSwarmで追加され、バージョン2020.1で更新された行です。

      • Swarmを新しくインストールする場合、またはバージョン2017.4以前の Swarm をアップグレードする場合:swarm.shelvedel shelve-delete」というトリガ行をHelixサーバのトリガテーブルに追加します(まだ追加されていない場合)。
      • バージョン2018.xまたはバージョン2019.xの Swarm をアップグレードする場合: Helixサーバのトリガテーブル内の「swarm.shelvedel shelve-delete」というトリガ行を、アップグレード先バージョンのSwarmで指定されているトリガ行に置き換えます。
    • ワークフロー機能:
    • バージョン2019.2以降のSwarmでは、ワークフロー機能がデフォルトで有効になっています。 ワークフロー機能を有効にするためのトリガ行は、ワークフロー機能を無効にするためのトリガ行とは異なります。

      • ワークフロー機能を有効にする(これがデフォルト設定です):
        • Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合): swarm.enforce.1swarm.enforce.2swarm.strict.1swarm.strict.2
        • 次のトリガ行をHelixサーバのトリガテーブルに追加します(これらのトリガ行がまだ追加されていない場合): swarm.enforce change-submitswarm.strict change-contentswarm.shelvesub shelve-submit
      • ワークフロー機能を無効にする:
        • Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合): swarm.enforce change-submitswarm.strict change-contentswarm.shelvesub shelve-submit
        • swarm.enforce.1swarm.enforce.2swarm.strict.1swarm.strict.2の各トリガ行はオプションであるため、コメント化されています。 これらのトリガ行を使用する場合は、DEPOT_PATH1DEPOT_PATH2の値を適切に設定する必要があります。 これらのトリガ行は、今後のリリースでは使用できなくなります。
          • 最初の2行では、適切なレビューに関連付けられていないサブミット済み変更を却下するためのenforce機能を設定します。
          • 残りの2行では、チェンジリストのコンテンツが関連する承認済みレビューのコンテンツに一致しない場合に、サブミットされた変更をすべて却下するためのstrict機能を設定します。
        • enforce機能またはstrict機能を他のディポパスにも適用する必要がある場合は、これらのトリガ行をコピーして、ディポパスの部分を必要に応じて変更してください。

    ヒント

    以下のように-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でホストされるシステムの場合のみです。
    • 各トリガ行の先頭をタブでインデントする必要があります。
    • コメント化されているトリガ行は保存されません。
    • Swarmconfig.phpファイルでワークフロー機能を無効にした場合、ワークフローがSwarmで処理されなくなりますが、Helixサーバがワークフロートリガスクリプトを実行するたびに、わずかなオーバーヘッドが発生します。 次のワークフロートリガ行をコメント化すると、このオーバーヘッドをなくすことができます: swarm.enforce change-submitswarm.strict change-contentswarm.shelvesub shelve-submit

    super権限を持つHelixサーバユーザとしてp4 triggersコマンドを実行し、Helixサーバトリガテーブルに以下の行を追加します(先頭のタブ文字も指定してください)。 以下に示す各行で、perl.exeトリガスクリプトのパスと構成ファイルのパスを、Helixサーバ上の実際のパスに変更します。

    1. トリガスクリプトと構成ファイルの両方を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%"
      
    2. トリガスクリプトと構成ファイルをすべてのサーバの共通パスにコピーした場合は、以下の行を追加します。
    3. 	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%"

  8. すべての保留中の変更を昇格させるようにHelixサーバを構成します。

    この構成を設定すると、Swarmが、すべての保留中のチェンジリストにアクセスできるようになります。これは、プリコミットレビューの要件です。 この構成が設定されていない場合、エッジサーバに接続しているユーザは、プリコミットレビューを開始し、保留中のファイルをコミットサーバに昇格させるために別のファイルを保留する際に、-pオプションを使用する必要があります。

    p4 configure set dm.shelve.promote=1
  9. 必要に応じて、コミットサーバにログインを転送します。

    P4VとそのSwarm統合を使用する必要がある場合は、コミットサーバにログインを転送することをお勧めします。 詳細については、「 P4Vの認証」を参照してください。

  10. 必要に応じて、Swarmに対して追加の機能を構成します。
  11. インストールのタイプに応じて、以下に示すいずれかの操作を実行します。
    • Swarm パッケージを使用してインストールした場合: Swarmのインストール環境をカスタマイズするためのインストール後構成オプションを確認します。詳しくは、「インストール後の構成オプション」を参照してください。
    • Swarm OVAを使用してインストールした場合: Swarmのインストール環境をカスタマイズするためのインストール後構成オプションを確認します。詳しくは、「インストール後の構成オプション」を参照してください。
    • Swarm tarballを使用してインストールした場合: ワーカーを生成するための繰り返しタスクを設定します。詳しくは、ワーカーを生成する繰り返しタスクをセットアップするを参照してください。

通常のユーザに対して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構成可能変数を有効にしてください。