パイプライントリガーを設定
トリガーはパイプラインを開始するものです。各トリガーはキャンバス上のノードで、 ノードライブラリの トリガー セクションからドラッグして配置します。そのノードを 選択すると、右側にインスペクターが開きます — 常時表示されるトリガー一覧も、 トリガータブも、トリガー画面もありません。
トリガーのインスペクターを開く
「トリガーのインスペクターを開く」というセクション- 設定 → ワークスペース → パイプラインテンプレートに移動します。
- テンプレートの行にある鉛筆アイコンを押してエディターを開きます。
- キャンバス上のトリガーノードを選択します。右パネルにそのトリガーの設定が 表示されます。何も選択していないときは、パネルは非表示です。
トリガーを追加する
「トリガーを追加する」というセクションノードライブラリの トリガー セクションには、開始の種類ごとに個別のノードが
並びます。手動、スケジュール、Webhook、そしてドメインイベントごとに 1 枚の
カードです。merged、ticket、または種別名(PrMerged)で検索し、カードを
キャンバスにドラッグします。新しいテンプレートでは、エントリアンカーに
トリガーを追加 のゴーストタイルも表示されます — 同じ検索可能なリストから
選びます。
トリガーは即座に挿入されます。新しい自動トリガーは無効な状態で作成されるため、 設定を終える前にドロップで実行が発火することはありません。有効にするには インスペクターの 有効 スイッチを使い、削除するにはゴミ箱アイコンを使います。
手動実行を許可する
「手動実行を許可する」というセクション手動実行 をドロップする(またはゴーストタイルから選ぶ)と、その
インスペクターで 有効 をオンにします。これがテンプレートを実行ページに
表示させる条件です。特別扱いではなく、このスイッチはイベント種別が manual の
普通のトリガー行を書き込むだけです。即座に永続化されるため、保存するものは
ありません。
エディターヘッダーの 手動実行 の背景にあるのも同じスイッチで、テンプレートで 宣言された入力と並んで表示されます。
イベントで開始する
「イベントで開始する」というセクション次のイベントが実行を開始します。
| ピッカーのラベル | イベント |
|---|---|
| 外部 PR がオープン | ExternalPrDetected |
| PR が公開 | PullRequestPublished |
| PR のステータス変更 | PullRequestStatusChanged |
| PR がマージ | PrMerged |
| メッセージ受信 | MessageReceived |
| チケットが作成 | TicketCreated |
| チケットの状態が変更 | TicketStatusChanged |
| チケット割り当て | TicketAssigned |
| チケット完了 | TicketCompleted |
| チケット失敗 | TicketFailed |
| チケットキャンセル | TicketCancelled |
| 予算のしきい値を超過 | BudgetThresholdCrossed |
| リポジトリが追加 | RepoAdded |
| 会議の録音が停止 | MeetingRecordingStopped |
| スキルが更新 | SkillUpdated |
| スペースが削除 | SpaceDeleted |
SpaceDeleted は組み込みのワークツリーのクリーンアップパイプラインが待ち受けて
いるイベントです。削除されたスペースの id を運ぶため、実行はワークスペース
全体を走査するのではなく、そのスペースのワークツリーだけを正確に回収します。
各イベントが運ぶペイロードキーについては、 ドメインイベントリファレンス を参照してください。
イベントトリガーを絞り込む
「イベントトリガーを絞り込む」というセクションPR のステータス変更 ノードを選択します。インスペクターのステータスチップは、
UI で作成できる唯一のフィルターです。merged、closed、approved、opened、
reopened のいずれかをタップすると、イベントの status がそれらのいずれかに
一致するときだけトリガーが発火します。すべてのチップを未選択のままにすると、
フィルターなしを意味します。
自由形式の JSON フィルターフィールドはありません。イベントのペイロードが 持たないフィルターキーは決して一致しないため、ドメインイベントリファレンスで 確認していないキーに対して手書きで作成しないでください。
スケジュールで開始する
「スケジュールで開始する」というセクションスケジュール ノードを選択して、発火するタイミングを編集します。 インスペクターのフィールドは、離れた時点の内容がそのまま永続化されます。
| フィールド | 説明 |
|---|---|
| スケジュール(cron または every:seconds) | 0 9 * * 1 のような 5 フィールドの cron 式、または every:86400 のような間隔。裸の数値は every:<n> に変換されます。 |
| タイムゾーン(任意) | Europe/Paris のような IANA ゾーン。デフォルトは UTC。 |
| 取りこぼした実行 | サーバーが停止している間に逃した発火をどう扱うか。1回実行 は逃したすべてのスロットを再起動時の 1 回の発火にまとめ(デフォルト)、スキップ は次に来る未来のスロットから再開します。 |
キャンバスタイルの概要行が間隔を明示するのは every:<seconds> 形式の場合だけ
です。cron 式は単に「スケジュール」とだけ表示されます。
Webhook で開始する
「Webhook で開始する」というセクションWebhook をドロップすると、ランダムなトークンが発行されます。ノードを選択
すると、インスペクターからパス POST /webhooks/<token> をコピーできます。
トークンは HMAC シークレットも兼ねます。リクエストは
X-Hub-Signature-256: sha256=<hex> を運ぶ必要があり、この hex は
HMAC-SHA256(body, token) です。検証に失敗した配信は拒否されてログに記録され、
再生できません。重複は dedupe キーによって無視されます。
各開始はそれ自体が 1 つのグラフノードです。スケジュール からワイヤを引くと スケジュールだけが接続されます。手動実行 は同じ作業に合流する前に別の経路 (たとえば条件ノード)を通ることができます。実行は自身のイベント種別に一致する 開始に入り、他の開始に属するサブグラフはスキップします。
トリガーが実行に至る仕組み
「トリガーが実行に至る仕組み」というセクションイベント種別とフィルターの両方が一致する有効なトリガーは、イベントのペイロードを
実行のトリガーペイロードとして実行を開始します — ステップのプロンプトや
スクリプト内の {{key}} が解決される対象がこれです。自然キーを運ぶイベントは
重複排除されるため、同じイベントが 2 回発火しても 2 つの実行が始まることは
ありません。
無効なテンプレートは、トリガーが一致していても拒否されます。13 個の組み込み テンプレートのうち 8 個は無効な状態で配布されるため、テンプレートをオンにする まで、シードされたトリガーは空しく発火します。
有用なパターン
「有用なパターン」というセクション- 手動パスだけをゲートする — 手動実行 を条件ノード経由で接続し、 スケジュール は作業へ直接つなぎます。各開始はそれぞれのワイヤを持ちます。
- 新しい PR をすべてレビューする —
pr_reviewテンプレートで PR が公開 イベントを使います。 - マージ後にクリーンアップする — PR のステータス変更 イベントを
merged/closed/approvedに絞り込みます。組み込みのpr_merged_cleanupテンプレートはすでにこの方法で待ち受けており、さらに チケットの完了/キャンセル、SpaceDeleted、そしてガベージコレクションで あるために再シードのたびに強制的に有効化される日次スケジュールも含みます。 - 毎晩の一括処理 — 最初のノードが bash スクリプトであるテンプレートで、
タイムゾーン付きのスケジュール
0 2 * * *を設定します。 - 外部システムに反応する — Webhook トリガーを使い、呼び出し側のシステムが 上記のようにリクエストボディに署名します。