Helix Coreサーバ管理者ガイド: 基本 (2019.1)

トリガの定義

トリガを記述したら、p4 triggersコマンドを発行し、トリガフォーム内にトリガの情報を提供することにより、トリガ定義を作成します。(Helixサーバスーパーユーザでなければこのコマンドを使用できません。) p4 triggersフォームは以下のように表示されます。

Triggers:
  relnotecheck change-submit //depot/bld/...  "/usr/bin/rcheck.pl %user%"
  verify_jobs  change-submit //depot/...      "/usr/bin/job.py %change%"

フォームを使用するすべてのHelixサーバコマンドと同様に、フィールド名(Triggers:など)を左揃えとし、その末尾に":"を使用する必要があります。また、フィールド値(つまり追加する行の集合のこと。それぞれが各トリガに対応)は、フィールド名の下の行ではスペースまたはタブによってインデントされている必要があります。

p4 triggersコマンドの使用時に入力するトリガフォームの各行には、4つのフィールドがあります。これらのフィールドについて、以下の表で簡単に説明します。これらのうち3つのフィールドで使用する値はトリガタイプによって異なります。こうした値については、各トリガタイプの解説を行うセクションで、あらためて詳しく説明します。nameフィールドでは、すべてのトリガタイプに対して同じ形式が使用されます。

フィールド 意味

name

ユーザによって定義されるトリガ名です。

複数のファイルパターンに同じトリガスクリプトを使用するには、トリガテーブル中の隣接する複数の行に、同じトリガを複数回記入します。除外マッピングを使用して、ファイルにトリガスクリプトが実行されないようにします。トリガエントリーの順序は、まさしく除外マッピングがビューで使用される場合に重要です。この場合、一致するパスが使用されている最初のトリガ行のうちcommandのみが使用されます。

type

トリガは、サブミットトリガ、プッシュトリガ、コマンドトリガ、ジャーナルローテーショントリガ、保留トリガ、エッジサーバトリガ、修正トリガ、フォームトリガ、認証トリガ、アーカイブトリガの10のカテゴリに分類されます。これらのカテゴリごとに1つ以上のトリガタイプが定義されています。例えば、サブミットトリガには、change-submitchange-contentchange-commitchange-failedの各タイプが含まれます。

各タイプと各トリガの関連づけの判断については、関連のカテゴリについて説明しているセクションを参照してください。

path

このフィールドの用法は、トリガタイプによって異なります。例えば、サブミットトリガ、エッジサーバトリガ、保留トリガの場合、このフィールドはディポシンタックスのファイルパターンです。ユーザがこのパターンに一致するファイルを含むチェンジリストをサブミットすると、トリガスクリプトが実行されます。

そのトリガに適切なパスを選択するには、関連のトリガについて説明しているセクションを参照してください。

command

このHelixサーバ向けトリガは、トリガ定義によって暗黙的に指定された条件が満たされると実行されます。

たとえサーバがUnicodeモードで稼働しており、トリガスクリプトに変数をUTF8で渡す場合であっても、トリガスクリプト名または実行ファイル名はASCIIで指定する必要があります。

Helixサーバがコマンドの参照場所を特定して実行できるような形で、トリガを指定します。command(普通1回につき1つのスクリプトを呼び出します)は、引用符で囲まれる必要があります。また、commandによって構文上引数として解析できる範囲のあらゆる引数を扱うことができます(適用可能なHelixサーバトリガ変数を含む)。

オペレーティングシステムがトリガを実行ファイルとして認識しないようなプラットフォームでは、インタープリタをコマンドフィールドで指定する必要があります。例えば、Windowsは.plファイルを実行ファイルとして認識しません。

lo form-out label  "perl //myscripts/validate.pl"

トリガスクリプトがディポに保存されている場合、ディポシンタックス内でそのパスをパーセントで囲んで指定する必要があります。例えば、スクリプトがディポに//depot/scripts/myScript.plとして保存されている場合、これに対応してコマンドフィールドで使用される値は"/usr/bin/perl %//depot/scripts/myScript.pl%"となります。詳細については、「ディポ内にトリガを保存する」を参照してください。

トリガは、トリガテーブルに記載された順序で実行されます。あるトリガスクリプトが特定のタイプに関して正常に実行されなかった場合、そのタイプに関連づけられた後続のスクリプトも実行されません。

p4 triggersコマンドの構文はきわめて単純です。

p4 triggers [ -i | -o ]
  • フラグを指定しない場合、ユーザのエディタが起動し、トリガ定義の指定を要求されます。
  • -iフラグは、標準入力からトリガテーブルを読み取ります。
  • -oフラグは、トリガテーブルに保存されたトリガ定義を表示します。