ビルドトリガーとは?pipelineを開始するもの
ビルドトリガーとは、pipelineの実行を開始するようCIシステムに指示するイベントまたはルールです。
pipelineはひとりでには実行されません。何かがそれを始動させる必要があります。それがトリガーです。最も一般的なトリガーはコードのpushですが、pipelineはpull request、スケジュール、手動ボタン、API呼び出し、さらには別のpipelineの完了からも始まります。適切なトリガーを選ぶことで、作業がいつ起こるか、そしてどれだけのcomputeを消費するかを制御できます。
一般的なトリガーの種類
- Push: commitがbranchに到着する。
- Pull request: PRがオープン、更新、または再オープンされる。
- スケジュール: cron式が設定された時刻に発火する。
- 手動: 誰かが「run」をクリックするかworkflowをディスパッチする。
- 外部: API呼び出し、webhook、またはアップストリームのpipelineがトリガーする。
トリガーのフィルタリング
トリガーは通常フィルタを受け付けるため、pipelineは実行すべきときだけ実行できます。main branchだけ、src/配下のファイルが変更されたときだけ、あるいはtagだけ、というように。良いフィルタは、無関係な変更がbuild minutesを消費するのを防ぎます。
簡単な例
GitHub Actionsでは、on: push: branches: [main]はmainへのpushに対してのみworkflowを実行し、on: schedule: - cron: "0 6 * * *"は毎日午前6時の実行を追加します。1つのon:ブロックの下に複数のトリガーを列挙できます。
トリガーとコスト
発火するすべてのトリガーはrunnerの時間を消費します。pathフィルタ、branchフィルタ、並行性の制限は、トリガーが冗長な実行を起動するのを防ぎます。連続したpush時に置き換えられた実行をキャンセルすることは、一般的な節約です。
手動と自動の比較
自動トリガー(push、PR)はフィードバックを速く保ちます。手動トリガーは、いつ進めるかを人間が決めるべきdeployや一度きりのjobに適しています。多くのチームはこれらを組み合わせ、テストは自動的に実行し、リリースは手動クリックで実行します。
重要なポイント
- トリガーは、pipelineの実行を開始するイベントまたはルールです。
- push、pull request、スケジュール、手動、外部が一般的な種類です。
- branch、path、tagのフィルタは、不要な実行を止めて分を節約します。