ワークフローのマニフェスト
ワークフローは YAML フォーマットで記述された マニフェスト(Manifest) により定義されます:

このマニフェストを記述し、Shisho Cloud 上のワークフローを作成することで、監査・検査やその後の対応をコードとして定義できます。
大構造
ワークフローのマニフェストは、以下の 5 つから構成されます:
version: 定数 (0.1.0)id: ワークフローに対する一意な IDname: ワークフローのわかりやすい表示名triggers: ワークフローの実行タイミングの設定jobs: ワークフロー内で行う監査・監査やその後の対応の設定
つまり、ワークフローのマニフェストは、以下のようなフォーマットに従う YAML ファイルだということです:
version: 0.1.0
id: "example-workflow"
name: "Example"
triggers:
# ...
jobs:
# ....
トリガー
ワークフローは複数の トリガー を triggers ブロックとして定義します:
version: 0.1.0
id: "example-workflow"
# 複数のトリガーの定義
triggers:
# ...
1 つ 1 つのトリガーは、そのワークフローがいつ実行されるべきかを定義するものです。「一定時間おきにトリガーを実行する」といった時間に基づく定義や、「他サービスからの Webhook メッセージを受け取ったら実行する」というようなイベントに基づく定義が利用できます。
より具体的には、以下のようなトリガーを利用できます:
scheduleトリガーgithubトリガー
schedule トリガー
schedule トリガーは、cron フォーマットを用いてワークフローの実行タイミングを定義するためのトリガーです。
schedule トリガーには cron フォーマットでの実行タイミング設定を 1 つ以上含めることができ、少なくとも 1 つの cron 設定にマッチする時刻 にワークフローが実行されるようになります。
例えば、以下のようなトリガーを持つワークフローは 10 分おきに実行されます:
version: 0.1.0
id: "example-workflow"
triggers:
schedule:
# 10 分おきに実行
- cron: "*/10 * * * *"
# ...
以下は複数の cron 設定を含む schedule トリガーの例です:
version: 0.1.0
id: "example-workflow"
triggers:
schedule:
- cron: "*/10 * * * *"
- cron: "*/30 * * * *"
# ...
複数の cron 設定が、同一時刻でのワークフローの実行を指示する場合であっても、ワークフローの実行は 少なくとも 1 回 しか保証されません。
github トリガー
github トリガーは、GitHub から Shisho Cloud に対して届けられた Webhook メッセージを用いてワークフローの実行タイミングを定義するためのトリガーです。
github トリガーには、Webhook メッセージに基づくワークフローの実行条件を、1 つまたは複数個設定できます。
そのような設定のもと、GitHub から届いた Webhook メッセージが少なくとも 1 つの設定にマッチする場合 にワークフローが実行されるようになります。
例えば、以下のようなトリガーを持つワークフローは、各リポジトリのデフォルトブランチに対する push イベントが発生した際に実行されます:
version: 0.1.0
id: "example-workflow"
triggers:
github:
- push:
branches:
- :default_branch
以下は複数の条件を含む github トリガーの例です:
version: 0.1.0
id: "example-workflow"
triggers:
github:
- push:
branches:
- :default_branch
- push:
branches:
- staging
GitHub が Webhook メッセージを通して配信するイベント情報のうち、Shisho Cloud は現在、以下のようなイベントを処理できます:
pushイベント (GitHub によるドキュメント)pull_requestイベント (GitHub によるドキュメント)
push イベントの処理
push イベントに基づきワークフローの実行を制御する場合、以下のようなフィルタをご利用いただけます:
organization: push 先のリポジトリが所属する GitHub Organization 名が、指定した文字列と一致するname: push 先のリポジトリ名が、指定した文字列と一致するpush.branches: 指定された