タイプグラフのディポのトリガ
トリガを//graphDepot1/repo8
と呼ばれる単一リポジトリに関連付けるには、//graphDepot1/repo8/…
のように/…
をパスの最後に足して指定します。
トリガを//graphDepot1/repoA
および//graphDepot2/repoB
などの複数のリポジトリに関連付けるには、アスタリスク(*)を使用し、パスとして//graphDepot*/repo*/…
を指定します。
タイプgraph
のディポの詳細については、Helix4Git管理者ガイドおよびHelix Core P4コマンドリファレンスを参照してください。
4つの変数を適用できます。
- %depotName% - リポジトリが格納されているディポ
- %repoName% - リポジトリの名前
- %repo% - 拡張子が
.git
であるリポジトリ。または%repoName%と同一 - %pusher% - プッシュでクレジットを付与されたユーザ
以下に示すグラフタイプのトリガについて、通常の実行順に説明します: graph-push-start、graph-push-reference、graph-push-reference-completegraph-push-complete
「コミットの確認例」も参照してください。
graph-push-start
- コネクタによる
git push
操作の一部としてデータが転送される前に実行されます - ワークフロールールを強制的に実行できます
graph-push-reference
- 作成または更新されている各リファレンスに対して実行されます
- ワークフロールールに従って更新をブロックするロジックを設定できます
- いずれかのリファレンスでトリガが失敗すると、プッシュ全体がキャンセルされます
graph-push-referenceトリガは元のリファレンス値を%oldValue%
変数、新しい値を%newValue%
変数、リファレンス名を%reference%
に渡します。
このようなトリガがプッシュからGit Connectorに実行された場合:
- リファレンスタイプが
%refType%
変数に渡されます。 - リファレンスに適用された操作の一覧が
%refFlags%
変数に取り込まれます。
graph-push-reference-complete
- コネクタによる
git push
操作の一部としてリファレンスが作成または更新された後に実行されます - 変数はgraph-push-referenceと同じです
- トリガの失敗は無視されます
graph-push-complete
- 指定したリポジトリのgit
push
が正常に完了すると実行されます - このトリガを使用して、ビルド、テスト、診断ツールに使用できる状態のファイルがすべて存在していること示すことができます。
コミットの確認例
ここでは、トリガを使用してビジネスルールを適用する場合について考えてみます。
問題追跡番号、P4-17870などのBugIdNumber、またはjob097329などのPerforceジョブ番号を使用して、すべてのコミットに「Description」というテキストを含める必要があるとします。
この場合、トリガコードは以下のようになります。
#!/bin/bash
reference=$1
oldValue=$2
newValue=$3
refType=$4
pusher=$5
refFlags=$6
logFile='/home/perforce/triggers/helix4git/checkCommit.log'
time=`date`
echo "$time " >> $logFile
echo "Depot: $depotName" >> $logFile
echo "Repo: $repoName" >> $logFile
echo "Reference: $reference" >> $logFile
echo "oldValue: $oldValue" >> $logFile
echo "newValue: $newValue" >> $logFile
echo "refType: $refType" >> $logFile
echo "Pusher: $pusher" >> $logFile
echo "refFlags: $refFlags" >> $logFile
echo "" >> $logFile
requiredText="JIRA"
p4 graph cat-file commit $newValue >> $logFile
p4 graph cat-file commit $newValue | grep $requiredText >> $logFile
res=`p4 graph cat-file commit $newValue | sed -n "/$requiredText/p"`
if [ -n "$res" ] ; then
echo "contains the $requiredText job number" >> $logFile
exit 0
else
echo "NOT contains the $requiredText job number" >> $logFile
exit 1
fi
このトリガを呼び出すには、以下のように指定します。
checkCommit graph-push-reference //repo/rtest/... "/home/perforce/triggers/helix4git/checkCommit.sh %reference% %oldValue% %newValue% %refType% %pusher% %refFlags%"