VPC環境で利用できます。
ワークフローファイルは定められたフォーマットに合わせて作成した場合のみ有効なワークフローとして認識され、実行できます。
このドキュメントでは、ワークフローの定義に必要な YAMLフォーマットと各プロパティの意味について説明します。
ワークフローの基本構造
Name: <workflow-name>
Version: v1
Triggers:
- Type: PUSH
Branches:
- main
Actions:
<action-name>:
# Identifies the action. Do not modify this value.
Identifier: ncp/sourcebuild@v1.0.0
# Defines the action's properties.
Config:
....
| プロパティ名 | 説明 | 必須有無 |
|---|---|---|
| Name | ワークフロー名 | O |
| Version | ワークフロースキーマバージョン | O |
| Triggers | ワークフロートリガー設定 | X |
| Actions | ワークフローアクション定義 | O |
ワークフロー名
ワークフロー名を指定します。
名前は次の条件を満たす必要があります
- 最小1字以上を入力します。
- 最大100字以下を入力します。
- 英大小文字(A-Z、a-z)、数字(0-9)、ハイフン(-)、アンダースコア(_)のみ使用できます。
- ワークフロー名はコンソール内のワークフローリストで確認できる項目であり、保存されるファイル名とは関係ありません。
ワークフロースキーマバージョン
ワークフロースキーマに関するバージョン情報を明示的に指定します。
- 現在サポートするワークフロースキーマバージョンは
v1です。
ワークフロートリガー設定
ワークフロートリガーは、特定のイベントが発生した際にワークフローを自動的に実行するよう設定する領域です。
トリガーはリスト形式で定義され、複数のトリガーを並列設定できます。
現在は PUSH トリガーのみサポートします。今後、 PR、SCHEDULE などの様々なトリガータイプを追加する予定です。
トリガー設定は以下のようなフォーマットに従います。
| プロパティ名 | 説明 | 必須有無 |
|---|---|---|
| Type | イベントタイプ(例: PUSH、PR、SCHEDULEなど) | O |
| Branches | イベントを検知するブランチリスト(Typeが PUSHの場合) | X |
プッシュトリガー(Type: PUSH)
プッシュトリガーはリポジトリに Pushイベントは発生した際にワークフローを実行するよう設定します。
Triggers:
- Type: PUSH
Branches:
- main
- dev
上記の例では main、dev ブランチへの Pushイベントが発生する場合にワークフローが実行されます。
Branchesプロパティに示されたブランチにワークフローファイルが存在する場合のみ、当該ブランチで Pushイベントが発生するとワークプロ―が実行されます。- 例えば、上記のような設定のワークフローファイルが
mainブランチにのみ存在してdevブランチには存在しない場合、devブランチで Pushが発生してもワークフローは実行されません。
ブランチを制限せずすべてのブランチで Pushイベントを検知するには、Branches プロパティを省略できます。
Triggers:
- Type: PUSH
ワークフローアクション基本構造
ワークフローで実際に実行されるタスク単位を「アクション」と呼び、 Actionsは1つ以上のアクションを定義する必須項目です。
アクションは指定した手順または条件に従って実行され、リソースのビルドやリリースなどの定義されたアクションによって様々なタスクを行います。
Actions:
<action-name>:
# Identifies the action. Do not modify this value.
Identifier: ncp/sourcebuild@v1.0.0
# Defines the action's properties.
Config:
# Specifies the resource you want to use
Resource:
...
DependsOn:
- <previous-action>
アクション名は Actions サブオブジェクトのキー(Key)として使用され、固有である必要があります。各アクションは次のようなプロパティを持ちます:
| プロパティ名 | 説明 | 必須有無 |
|---|---|---|
| Identifier | 実行するアクションの固有 IDです。「アクション名@バージョン」フォーマットに指定します。 | O |
| Config | 当該アクションの詳細設定項目です。アクションタイプによって構成項目が異なります。 | O |
| DependsOn | 他のアクション実行が先行される必要がある場合、依存関係を示します。 | X |
Identifier
Identifierは実行するアクションを指定する固有 IDです。
無効なフォーマットの識別子は有効性検証でエラーが発生することがあります。
例: ncp/sourcebuild@v1.0.0
Config
Configは各アクションを実行するための設定値を指定する領域です。
当該プロパティのフォーマットは使用するアクションの Identifierによって異なるため、そのアクションに合ったフォーマットを確認する必要があります。
詳細な Configフォーマットは、ワークフローアクションリストドキュメントをご参照ください。
DependsOn
DependsOnは、当該アクションを実行する前に、必ず完了すべき先行アクションを指定できるプロパティです。
アクション名またはアクショングループ名を表示し定義でき、順次実行が必要な場合は有効に使用できます。
DependsOn設定時にワークフロー内で循環依存(Cycle)が発生しないようご注意ください。- 例: アクション
AのDependsOn設定にアクションBを指定し、アクションBのDependsOn設定にアクションAを指定した場合、循環依存(Cycle)が発生するため、無効なワークフローに該当します。
アクショングループ機能
複数のアクションを1つのグループにまとめて論理的単位を構成できます。
Actions:
<action-group-name>:
Actions:
<action-name-1>:
....
DependsOn:
- <action-name-2>
<action-name-2>:
....
DependsOn:
- <other-action-name>
アクション名の下位に Actionsプロパティを追加すると、当該領域はアクショングループに使用されます。
アクショングループ下位プロパティの説明は次の通りです。
| プロパティ名 | 説明 | 必須有無 |
|---|---|---|
| Actions | アクショングループに含まれるアクション表現する領域 |
O |
| DependsOn | アクション間の依存関係を設定する領域 | X |
- アクショングループも一般アクションのように外部アクショングループまたはアクションについて
DependsOnを設定できます。 - アクショングループ内のアクションはグループ内部のアクションについてのみ
DependsOnを設定できます。 - アクショングループ外部のアクションはグループ内部アクションに
DependsOnを指定できません。
- アクショングループ内に複数のアクショングループを定義できません。
- ビジュアルエディタ(Visual Editor)ではアクショングループ構成をサポートせず、YAMLを介してのみ構成できます。
ワークフロー有効性検証
ワークフローファイルは次の条件を満たす場合のみ、有効なワークフローとして判定されます。
- YAML記法エラーは不要
- 必須プロパティの漏れなくスキーマを遵守
- アクション名、グループ名の重複は不要
DependsOnで定義されない名前を参照しない
これを満たさない場合 invalid ステータスに分類され、実行不可になります。
- 外部サービスに存在するリソース関連設定は、有効性検証で確認されません。
- 例:
ncp/sourcebuild@v1.0.0アクションのConfig > Resource > ProjectName設定値が実際存在するかは有効性検証時に確認されません。ワークフローの実行中に当該アクションの失敗によりリソースの存在有無を間接的に確認できます。
全体例
Name: example-workflow
Version: v1
Triggers:
- Type: PUSH
Branches:
- main
Actions:
build:
Identifier: ncp/sourcebuild@v1.0.0
Config:
Resource:
ProjectName: example
deploy:
Identifier: ncp/sourcedeploy-server@v1.0.0
Config:
Resource:
ProjectName: example
StageName: example-stage
ScenarioName: example-scenario
DependsOn:
- build