Serverless Application Center は、継続的インテグレーションと継続的デプロイメント (CI/CD) のパイプラインをモデル化するために、パイプライン、パイプラインテンプレート、タスク、タスクテンプレート、実行コンテキストという 5 つのコアコンセプトを使用します。このページでは、各用語を定義し、それらを組み合わせてパイプラインの実行を生成する仕組みを説明します。
このページの目次:
概念間の関係
パイプラインテンプレートは、CI/CD シナリオ (それに含まれるタスクとタスク間の依存関係) を定義します。パイプラインは、そのテンプレートの 1 回の実行です。同様に、タスクテンプレートはタスクの実行方法を定義し、タスクはパイプライン内でのそのテンプレートの 1 回の実行です。実行コンテキストは、各パイプラインとタスクの実行を制御する入力を保持します。

パイプライン
パイプラインは、パイプラインテンプレートの 1 回の実行です。トリガールールが発動すると (例えば、コードリポジトリへのプッシュイベントなど)、Serverless Application Center はパイプラインオブジェクトを作成し、実行結果を含む実行の詳細を記録します。
パイプラインテンプレート
パイプラインテンプレートは、タスクとタスク間の依存関係を指定することで CI/CD シナリオを定義します。テンプレートは再利用可能です。トリガー条件が満たされるたびに、同じテンプレートが実行されます。
例えば、ビルドとデプロイメントのテンプレートには、ビルド、承認、デプロイメントの 3 つのタスクが含まれ、以下の依存関係があります。

タスク
タスクは、パイプラインにおける 1 つの実行ステップです。タスクはパイプラインの実行時に自動的に生成され、独立して実行されることはありません。
例えば、ビルドとデプロイメントのパイプラインがトリガーされると、ビルド、承認、デプロイメントの 3 つのタスクが順に生成されます。ビルドタスクは、リポジトリ内のコードからプロダクトを独立してビルドします。
タスクの実行結果は、テキストまたは構造体として出力されます。生成されたファイルやイメージは、タスクの実行中に保存する必要があります。タスクは、テンプレートの仕様と実行コンテキストに応じて、Alibaba Cloud サンドボックス環境または現在のアカウントで実行されます。

タスクテンプレート
タスクテンプレートは、タスクの実行メソッドを定義し、オプションでコンテキストをプリセットしてタスクの実行方法を制御します。Serverless Application Center は、承認、デプロイメント、カスタム実行などの共通タスクテンプレートを提供しています。カスタムロジックを実装するには、新しいテンプレートを作成します。
タスクテンプレートは、実行ロジックをパイプライン定義から分離し、パイプラインの記述を簡潔に保ちます。
実行コンテキスト
実行コンテキストは、パイプラインまたはタスクの実行方法を制御する入力として機能する JSON オブジェクトです。
トリガーからタスクへのコンテキストの流れ
Git イベントがトリガールールの条件を満たすと、Serverless Application Center はパイプラインオブジェクトを作成します。トリガーコンテキストはパラメーター化され、パイプラインの実行コンテキストに渡されます。
パイプラインの実行中、実行エンジンは 2 つのステップでコンテキストをマージします。
パイプラインの実行コンテキスト (
ctx_pipeline) が、パイプラインテンプレートにプリセットされた実行コンテキスト (ctx_pipelinetemplate) とマージされ、タスクの実行コンテキスト (ctx_task) が生成されます:ctx_task = ctx_pipeline + ctx_pipelinetemplate次に、
ctx_taskが、タスクテンプレートにプリセットされた実行コンテキスト (ctx_tasktemplate) とマージされ、タスクの最終的な実行コンテキスト (ctx) が生成されます:ctx = ctx_task + ctx_tasktemplate
まとめると、完全なマージチェーンは次のようになります。
ctx = ctx_pipeline + ctx_pipelinetemplate + ctx_tasktemplate

マージの仕組み
コンテキストのマージは、JSON Merge Patch (RFC 7386) に従います。式 ctx_1 + ctx_2 では、ctx_1 の優先度が高くなります。その値は ctx_2 内の一致するキーを上書きし、結果として新しい JSON オブジェクトが生成されます。
マージは可換ではありません。ctx_1 + ctx_2 と ctx_2 + ctx_1 は、優先順位が逆になるため、異なる結果を生成します。

タスクが実行されると、ノードは最終的な実行コンテキストを含むリクエストを受け取り、それに基づいて対応するロジックを実行します。
