ワークフローフォーマット - YAML

Prev Next

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 トリガーのみサポートします。今後、 PRSCHEDULE などの様々なトリガータイプを追加する予定です。
トリガー設定は以下のようなフォーマットに従います。

プロパティ名 説明 必須有無
Type イベントタイプ(例: PUSH、PR、SCHEDULEなど) O
Branches イベントを検知するブランチリスト(Typeが PUSHの場合) X

プッシュトリガー(Type: PUSH)

プッシュトリガーはリポジトリに Pushイベントは発生した際にワークフローを実行するよう設定します。

Triggers:
  - Type: PUSH
    Branches:
      - main
      - dev

上記の例では maindev ブランチへの 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)が発生しないようご注意ください。
  • 例: アクション ADependsOn 設定にアクション Bを指定し、アクション BDependsOn 設定にアクション 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