トリガスクリプトのテスト用Dockerイメージを作成するためのファイル群を管理するリポジトリです。
dockerまたはdocker-composeを使用して次のようにしてビルドしてください。
例: dockerを使用
docker build -t p4triggerdemo .
例: docker-composeを使用
docker-compose build
dockerまたはdocker-composeを使用して次のようにして実行してください。
例: dockerを使用
docker run -p 1666:1666 -itd p4triggerdemo
例: docker-composeを使用
docker-compose up -d
1666ポートでHelix Coreが起動しますので、P4VなどのHelix Coreクライアントでアクセスします。
Helix Coreにはサンプルディポが登録されています。
また、すべてではないものの数多くのトリガを登録して、トリガの発動タイミングを調査できるようにしています。
p4 -u bruno triggersを実行すると、登録されているトリガを確認することができます。
例えば、change-submitトリガは以下の内容で登録されています。
test_change_submit change-submit //... "/opt/perforce/triggers/change-submit/change_submit.sh %user%"
この他の登録済みトリガは以下でも確認ができます。
| 種類 | GitHub | マニュアル |
|---|---|---|
| サブミット用トリガ 保留用トリガ プッシュ用トリガ | p4triggers_submit.txt | サブミット用トリガのマニュアル 保留用トリガのマニュアル プッシュ用トリガのマニュアル |
| フォーム用トリガ | p4triggers_form.txt | フォーム用トリガのマニュアル |
| コマンド用トリガ | p4triggers_command.txt | コマンド用トリガのマニュアル |
| ジョブ用トリガ | p4triggers_fix.txt | ジョブ用トリガのマニュアル |
| ジャーナル用トリガ | p4triggers_journal.txt | ジャーナル用トリガのマニュアル |
※ 上記以外の種類のトリガもありますが、テスト用Dockerイメージには含めませんでした。
※ コマンド用トリガを網羅しようとすると、コマンド数の倍のトリガを登録することになるため、sync branch change add edit open undo merge copy integrateのみを対象にして事前登録しています。
それぞれのトリガは、それぞれ異なる名称のシェルスクリプトを呼び出すようになっています。
また、シェルスクリプト名に対応する名称のログに足跡を残すようになっています。
例えば、本調査用Dockerイメージではchange-submitトリガが以下のように処理されます。
Helix Coreがchange-submitイベントを発行する。
change-submitトリガが反応する。
test_change_submit change-submit //... "/opt/perforce/triggers/change-submit/change_submit.sh %user%"
トリガの中で指定されている以下のコマンドが実行される。
/opt/perforce/triggers/change-submit/change_submit.sh %user%
※ %user%はトリガスクリプト変数であり、トリガを実行したユーザアカウントに置き換えられます。
※ %user%のみを与えていますが、コマンドの処理に必要なその他のトリガスクリプト変数を渡すことができます。
実行されたコマンド(change_submit.sh)は、以下の処理で与えられたパラメータをファイルに出力する。
#!/bin/bash
echo $* >> "/opt/perforce/triggers/logs/change_submit.log"
※ コマンドの名称に対応する名称のログが出力されるようになっています(例: change_submit.sh → /opt/perforce/triggers/logs/change_submit.log)。
トリガごとに別々のログに情報が出力されるようになっているため、ログの更新状況を確認することでHelix Coreに対してどのような操作を行ったときに、どのトリガが反応するのかが分かるようになっています。
次の要領でトリガの調査を行います。
起動したDockerコンテナにログインします。
docker exec -it コンテナID /bin/bash
ログディレクトリに移動します。
cd /opt/perforce/triggers/logs
Helix Coreクライアントを使ってトリガに反応させたい操作を行い、操作後にログディレクトリの内容を確認します。
ls -al *.log
出力されているログから、実行した操作と反応するトリガの関係を把握します。 ※ コマンド用トリガについては、一部のコマンドしか登録していないため、不足がある場合は他のコマンドトリガを参考にしてトリガを追加してください。
ログの内容をtailコマンドで監視して、把握した関係どおりに動作しているのかを確認します。
tail -f *.log
トリガスクリプトに渡したい情報が%user%以外に存在する場合は、トリガスクリプト変数を参考にしてパラメータを追加してください。
追加する場合は、以下のコマンドを実行してトリガの設定を変更してください。
p4 -u bruno triggers
コマンド用トリガについては一部のコマンドしかトリガスクリプトを準備していません。
しかし、/opt/perforce/triggers/create_command_trigger.shを使ってコマンド用トリガのエントリを増やすことができます。
追加方法は以下のとおりです。
create_command_trigger.sh内の以下の行を変更して、トリガを追加したいコマンド名を列挙します。
TRIGGER_PATHS="sync branch change add edit open undo merge copy integrate"
例えば、p4 delete、p4 reconcile、p4 cleanに反応させる場合は以下のように列挙します。
TRIGGER_PATHS="delete reconcile clean"
変更後にcreate_command_trigger.shを実行すると列挙したコマンドに対応するトリガスクリプトが/opt/perforce/triggers/commandの中に作成されます。
cd /opt/perforce/triggers
./create_command_trigger.sh
同時にトリガに追記する設定も/opt/perforce/triggers/p4triggers_command.txtに出力されるので、p4 -u bruno triggersコマンドを実行して追記します。
Content type
Image
Digest
Size
83.6 MB
Last updated
over 6 years ago
docker pull p4misc/p4triggerdemo