メインコンテンツまでスキップ

パイプラインとファンクション

パイプライン

パイプラインはコンテナネイティブなワークフローを定義したものです。パイプラインはファンクションという単位で構成され、ファンクション間の実行順序、例外処理、入出力、エンティティへの接続を定義することでワークフローとしての挙動を決定します。

パイプラインの利用方法

  • キャンバスへの追加
    • Nameは必須です。(英数字、ハイフンのみ利用可)
    • 必ずトリガーと接続してください。
    • 必ず1つ以上のファンクションを追加してください。(パイプラインのボックスをクリックして出てくるメニューの「+」ボタンで追加)
  • パイプラインの実行
    • パイプラインはキャンバス上で接続されたトリガーからrunTriggerPipeline()関数により呼び出すことが出来ます

ファンクション

パイプラインの処理の単位を定義したものです。任意のDockerイメージを1つ持ち、パイプライン上の順序に従ってKubernetes上で実行されます。

エンティティとの接続はレイヤー化されているかによって異なります。レイヤーに関してはこちらを参照ください。

ファンクションの利用方法

  • Nameは必須です。(英数字、ハイフンのみ利用可)
  • ImageにはDockerイメージを入力してください。
    • コンテナイメージはENTRYPOINTもしくはCMDが設定されている必要があります。

Input

  • 「Input」にファンクションコンテナにボリュームマウントするファイルを追加できます。以下の種類から選択して追加します。
    • エンティティ
      • エンティティから値を読み出すことが出来ます。
      • Layered エンティティに対してはトリガーから引き継いだLayer IDでGETします。
    • Filesystem
      • 前のファンクションのFilesystem Outputから値を受け取るために使用します。受け渡したいOutputと同じNameに設定します。
    • Injection
      • ファンクションに対してBlueprintで挿入した値を渡すことができます。設定ファイルやスクリプト等の事前定義しておきたいファイルを渡すために使用します。

Output

  • 「Output」にファンクションコンテナから出力するファイルを追加できます。以下の種類から選択して追加します。
    • エンティティ
      • エンティティに値を書き出すことが出来ます。
      • Layered エンティティに対してはトリガーから引き継いだLayer IDでPOSTします。
    • Filesystem
      • 後続のファンクションのFilesystem Inputに値を渡すために使用します。

アーティファクトの受け渡し

at

  • 各ファンクションが処理をする中で生成されるデータやファイルを Artifact(アーティファクト) と呼んでいます。
  • この機能はパイプラインの中で動作する複数のファンクション間でArtifactを受け渡すことができます。
  • 前述のInput/Outputを利用し、outputを同一のパイプライン内のファンクションにinputとして利用します。

使い方

  • 上流にあるファンクションから引き継いで利用するアーティファクトのIDをInput/Outputで同一にする at

環境変数

  • 「Environment variables」にファンクションコンテナ内から参照できる環境変数を追加できます。
  • 以下の環境変数は自動的に設定されます。詳細は予約されている環境変数をご参照ください。
    • EBS_LAYERID: レイヤーID (トリガーから引き継がれる. トリガーがLayeredでなければ空文字列がセットされる)
    • EBS_WORKSPACEID: ワークスペースID
    • EBS_PIPELINEID: パイプライン実行時に付与されるID

ストレージ

  • データの永続化に使われるファイルシステムストレージです。詳細は ストレージ から確認できます。

留意事項

  • 接続されているトリガーがLayeredではない場合、Layer IDが取得できないためLayeredなエンティティへのInput/Outputの接続は行うことが出来ません。

FailureHandler

実行時の失敗ハンドラーFailureHandlerとして、パイプラインのファンクションに異常があった際の例外処理を定義できます。パイプラインと同様に1つ以上のファンクションから構成されます。

  • Canvasへの追加
    • パイプラインのメニューからボタンで追加してください。
    • FailureHandlerはパイプラインと同様にファンクションを追加できます。
  • FailureHandlerの実行タイミング
    • パイプラインのファンクションが異常終了した場合、FailureHandlerがあれば実行されます。
  • Input
    • "Entity", "Filesystem" Input
      • 通常のファンクションと同様。
    • "Exception" Input
      • "Filesystem"と同様にパイプラインのファンクションの"Filesystem" Outputから値を受け取ることができます。FailureHandler実行時にOutputが正常に出力されている場合のみマウントされます。
    • "Injection" Input
      • サポートされていません。
  • Output
    • 通常のファンクションと同様。
  • パイプラインのLayerについて
    • パイプライン実行時のLayer IDは起点となるトリガーから引き継がれます。トリガーはLayer IDごとにエンティティを監視し、リアクティブなイベントの中でLayer IDが一意に定まります。また、トリガーがLayeredなエンティティを監視しない場合はLayer IDは空になります。Layerは実行中パイプラインに以下に示す影響を与えます。
    • FailureHandlerを含むファンクションコンテナからはEBS_LAYERIDという環境変数でLayer IDを取得できます。
      • Input / OutputにLayeredなエンティティが接続されている場合はトリガーから引き継がれたLayer IDが適用されます。
      • LayeredでないトリガーからはLayeredな(エンティティと接続された)パイプラインは呼び出せません。