Serverless Application Center は、カスタマイズ可能なパイプライン実行機能を提供します。パイプラインを構成し、タスクフローをオーケストレーションすることで、コードを Function Compute に発行できます。このトピックでは、パイプラインの構成、パイプラインの詳細設定、パイプライン実行履歴の表示など、コンソールでパイプラインを管理する方法について説明します。
背景情報
アプリケーションを作成すると、プラットフォームはデフォルトの環境を作成します。この環境では、パイプラインの Git イベントトリガーメソッドを指定し、それに応じてパイプラインを構成できます。自動構成とカスタム構成のいずれかを選択できます。自動構成を選択した場合、プラットフォームは各設定項目にデフォルト値を使用してパイプラインを作成します。カスタム構成を選択した場合、環境のパイプラインの Git イベントトリガーメソッドを指定し、パイプラインの実行環境を選択できます。Git やアプリケーションの詳細などの情報は、実行コンテキストとしてパイプラインに渡されます。
パイプラインの設定項目を編集する際に、トリガーメソッドと実行環境を構成できます。また、DingTalk 通知とリソース記述 YAML も構成できます。
アプリケーションまたは環境の作成時にパイプラインを構成
アプリケーションまたは環境を作成する際に、パイプラインの Git トリガーメソッドと実行環境を指定できます。

環境内のパイプラインを編集
既存の環境の場合、[パイプライン管理] タブに移動して、パイプラインの Git イベントトリガーメソッド、実行環境、DingTalk 通知、およびリソース記述 YAML を編集します。

パイプラインの構成
パイプラインの構成には、パイプラインのトリガーメソッド、パイプラインの実行環境、リソース記述 YAML、DingTalk ロボット通知の 4 つの主要項目が含まれます。アプリケーションまたは環境の作成時に、パイプラインのトリガーメソッドと実行環境を構成できます。作成後、編集ボタンをクリックして 4 つすべての項目を構成できます。

パイプラインのトリガーメソッド
Serverless Application Center では、パイプラインをトリガーする Git イベントをカスタマイズできます。Serverless Application Center は Webhook を使用して Git イベントを受信します。トリガールールに一致するイベントを受信すると、パイプラインの YAML 構成に従ってパイプラインを作成し、実行します。次のトリガーメソッドがサポートされています:
ブランチトリガー:環境は特定のブランチに関連付けられている必要があります。これは、指定されたブランチ内のすべての Push イベントに一致します。
タグトリガー:指定されたタグ式に対するすべてのタグ作成イベントに一致します。
ブランチマージトリガー:指定されたソースブランチから環境に関連付けられたターゲットブランチへのマージ/プルリクエストイベントに一致します。
パイプラインの実行環境
パイプライン実行環境には、デフォルトの実行環境と専用の実行環境の 2 つのモードがあります。
デフォルトの実行環境
デフォルトの実行環境では、プラットフォームがパイプラインリソースを完全に管理します。パイプラインの実行中に発生するコストは Alibaba Cloud Function Compute が負担するため、料金を支払う必要はありません。各パイプラインタスクは独立したサンドボックスコンテナで実行され、プラットフォームはパイプライン実行環境のセキュリティと隔離を保証します。デフォルトの実行環境の制限は次のとおりです:
インスタンス仕様:4 vCPU、8 GB メモリ。
一時ディスク領域:10 GB。
タスク実行タイムアウト:15 分。
リージョンの制限:テンプレートからの直接デプロイメント、または GitHub ソースからのデプロイメントには、シンガポールリージョンを使用します。Gitee、パブリック GitLab、または Codeup ソースの場合は、中国 (杭州) リージョンを使用します。
ネットワークの制限:固定 IP アドレスと CIDR ブロックはサポートされていません。IP アドレスホワイトリストを使用した特定のウェブサイトへのアクセスはサポートされていません。ご利用の VPC 内のリソースへのアクセスはサポートされていません。
専用の実行環境
専用の実行環境は、ご利用のアカウントでパイプラインタスクを実行し、より多くのカスタマイズオプションを提供します。権限付与に基づき、Serverless Application Center は専用の実行環境のタスクを完全に管理し、Function Compute インスタンスをリアルタイムでスケジュールして、ご利用のアカウントでパイプラインを実行します。デフォルトの実行環境と同様に、専用の実行環境は完全にサーバーレスであり、基盤となるインフラストラクチャを管理する必要はありません。
専用の実行環境では、次のカスタマイズオプションが提供されます:
リージョンとネットワーク:実行環境のリージョンと VPC を指定できます。これにより、プライベートコードリポジトリ、アーティファクトリポジトリ、イメージリポジトリ、プライベート Maven サーバーなどのリソースにアクセスできます。サポートされているリージョンの詳細については、「サービスエンドポイント」をご参照ください。
インスタンス仕様:実行環境の CPU とメモリの仕様を指定できます。たとえば、より高い仕様のインスタンスを指定してビルドを高速化できます。
説明vCPU コア数とメモリ (GB) の比率は 1:1 から 1:4 の間でなければなりません。
永続ストレージ:NAS および OSS のマウント設定を構成できます。たとえば、NAS マウントを使用してファイルをキャッシュし、ビルドを高速化できます。
ログ:SLS プロジェクトと Logstore を指定して、パイプライン実行ログの永続化を有効にできます。
タイムアウト:パイプラインタスクの実行タイムアウトをカスタマイズできます。デフォルトは 600 秒で、最大は 86,400 秒です。
専用の実行環境では、ご利用のアカウントで Function Compute を使用してパイプラインタスクが実行されるため、料金が発生します。詳細については、「課金概要」をご参照ください。
リソース記述 YAML
Serverless Application Center は、Serverless Devs 開発者ツールと深く統合されています。Serverless Devs のリソース記述ファイルを使用して、サービスのリソース構成を宣言できます。YAML 仕様の詳細については、「Serverless Devs YAML specification」をご参照ください。デフォルトのリソース記述ファイル名は s.yaml ですが、別のファイル名を指定することもできます。リソース記述ファイルを指定した後、パイプラインで 2 つの方法で使用できます:
@serverless-cd/s-deployデプロイメントプラグインを使用する場合、プラグインは指定されたリソース記述ファイルを自動的にデプロイメントに使用します。これは、Serverless Devs の操作に-t/--templateコマンドを追加することで機能します。たとえば、次のコードでは、指定されたリソース記述 YAML ファイルはdemo.yamlです。プラグインによって実行されるコマンドはs deploy -t demo.yamlです。
- name: deploy
context:
data:
deployFile: demo.yaml
steps:
- plugin: '@serverless-cd/s-setup'
- plugin: '@serverless-cd/checkout'
- plugin: '@serverless-cd/s-deploy'
taskTemplate: serverless-runner-taskスクリプトを実行に使用する場合、
${{ ctx.data.deployFile }}を使用して特定のリソース記述ファイル名を参照できます。たとえば、次のコードは、ファイルが指定されている場合は指定されたファイルを使用して s plan コマンドを実行します。それ以外の場合は、デフォルトの s.yaml ファイルを使用して s plan コマンドを実行します。
- name: pre-check
context:
data:
steps:
- run: s plan -t ${{ ctx.data.deployFile || s.yaml }}
- run: echo "s plan finished."
taskTemplate: serverless-runner-taskDingTalk ロボット通知
この構成を有効にした後、DingTalk ロボットの Webhook アドレス、署名キー、通知ルール、および カスタムメッセージを構成する必要があります。通知が必要なすべてのタスクをここで管理することも、パイプライン YAML で各タスクの通知を個別に有効にすることもできます。ここでの全体的な通知構成を完了した後、パイプライン詳細セクションで各タスクの通知設定をさらに詳細に設定できます。
パイプラインの詳細
パイプラインの詳細セクションでは、パイプラインフローを構成し、タスクとその関係の詳細を指定できます。プラットフォームはデフォルトのパイプラインフローを自動的に生成し、これを編集できます。
パイプラインは YAML を使用して管理されます。利用可能な構成方法は、プラットフォームホストとリポジトリから読み取りの 2 つです:
プラットフォームホスト:事前定義された YAML 変数はサポートされていません。詳細については、「YAML ファイルを使用したパイプラインの記述」をご参照ください。
リポジトリホストは、YAML ファイル内の事前定義変数をサポートしています。
プラットフォームホスト
デフォルトでは、パイプライン YAML はプラットフォームによってホストされます。これは、構成がプラットフォーム上で一元管理され、更新後の次のデプロイメントで有効になることを意味します。
リポジトリから読み取り
パイプラインの YAML 記述ファイルは、リモートの Git リポジトリに保存されます。コンソールで編集して保存すると、プラットフォームは変更をリアルタイムで Git リポジトリにコミットします。このコミットはパイプラインの実行をトリガーしません。コードリポジトリ内のイベントがパイプラインをトリガーすると、プラットフォームは指定した Git リポジトリの YAML ファイルを使用してパイプラインを作成し、実行します。
パイプラインの詳細セクションの上部で、リポジトリから読み取りを指定し、次の図に示すように YAML ファイル名を入力できます。

パイプラインの詳細セクションの本体は、左側の補助ツールエリアと右側の YAML 編集エリアで構成されています:
YAML 編集エリア:パイプライン YAML を直接編集して、パイプラインフローを変更できます。詳細については、「YAML ファイルを使用したパイプラインの記述」をご参照ください。
補助ツールエリア:YAML の編集に役立つツールを提供します。これには以下が含まれます:
セクションの右上隅には、保存、全画面表示、リセットの 3 つのボタンがあります:
保存ボタンは、ページ上の YAML に加えられた変更を保存し、パイプライン YAML に同期します。
全画面表示ボタンは、メインの編集エリアを全画面に拡大します。
リセットボタンは、YAML が最後に保存されてから加えられたすべての変更をキャンセルし、初期状態に戻します。
リセットを選択した場合、最後の保存以降に行われたすべての変更が失われます。バックアップがあることを確認し、注意して使用してください。
フロープレビュー
フロープレビューエリアは、パイプラインフローの視覚的なプレビューを提供します。また、基本的なタスク内容とタスク関係の簡単な編集もサポートしており、テンプレートからタスクをすばやく作成して追加できます。フローチャートには、開始コードソースとトリガーメソッドノード、終了ノード、タスクノードの 3 つの主要なノードタイプがあります。ノードは依存関係を表す線で接続されています。タスクノードにマウスを合わせると、タスクの作成ボタンとタスクの削除ボタンが表示され、タスク管理が容易になります。

コードソースとトリガーメソッドノード (開始ノード)
現在のパイプラインの コードソースとトリガーメソッド情報を表示します。これは表示専用であり、編集はできません。パイプラインのトリガーメソッドを変更するには、パイプライン構成セクションに移動します。
重要コードリポジトリを変更するには、アプリケーションの詳細ページに移動します。詳細については、「アプリケーションの管理」をご参照ください。コードリポジトリを変更すると、すべてのパイプラインが無効になるため、注意して進めてください。
終了ノード
パイプラインフローの終わりを示し、パイプライン内のすべてのタスクが完了したことを意味します。このノードは読み取り専用で、機能的な意味はありません。
タスクノード
特定のタスクの基本情報を表示および維持します。デフォルトでは、タスクノードにはタスク名が表示されます。ノードをクリックするとポップアップが開き、タスク名、先行タスク、タスクを有効にするかどうかなどの基本情報を表示および編集できます。タスクを有効にしない場合、実行中に自動的にスキップされ、グレー表示されます。
依存関係
タスク間の関係を反映する一方向の矢印です。矢印がタスク A からタスク B を指している場合、A は B の先行タスクであり、B は A に依存し、A は B の依存関係であることを意味します。各タスクは複数のタスクに依存でき、複数のタスクの依存関係になることができます。
依存タスクの 先行タスクを編集することで、依存関係を変更できます。たとえば、B の A への依存関係を削除するには、B のタスクノードをクリックし、先行タスクのリストから A を削除します。
タスクの作成
このボタンは「+」アイコンで表され、タスクノードの上、下、右側に表示されます。タスク A の上のボタンをクリックすると、先行タスク B が作成され、A は B に依存します。タスク A の下のボタンをクリックすると、後続タスク C が作成され、C は A に依存します。タスク A の右側のボタンをクリックすると、兄弟タスク D が作成され、D は A と同じ依存関係を持ちます。つまり、D は A と同じ先行タスクを持ち、A に依存するすべてのタスクは D にも依存します。
タスクの削除
このボタンは、タスクノードの右上隅にある「×」アイコンで表され、選択したタスクを削除するために使用されます。プラットフォームは、誤った削除を防ぐために確認を求めます。

タスクテンプレート
タスクテンプレートは、コードチェック、ビルド、デプロイ、一般タスクなど、一般的なパイプラインタスクのための一連の YAML テンプレートを提供します。また、内部の高度な設定およびタスクプラグインの YAML テンプレートも含まれています。
リストからテンプレートを選択し、クリックして詳細な説明と YAML コンテンツを表示し、YAML コンテンツをパイプライン YAML の対応する場所にコピーして貼り付けることができます。

デフォルトのパイプラインフロー
デフォルトのパイプラインフローには、オンライン構成の比較、手動レビュー、ビルドとデプロイの 3 つのタスクが順次実行されます。手動レビュータスクはデフォルトで無効になっており、手動で有効にする必要があります。
オンライン構成の比較
パイプラインで使用されるリソース記述ファイルがオンライン構成と一致しているかどうかを確認します。これにより、予期しない構成の変更を事前に検出できます。
手動レビュー
安全なアプリケーションのリリースとリリース後の安定性を確保するために、この段階で手動レビューメカニズムを有効にすることができます。パイプラインがこの時点に達すると、ブロックされ、手動での確認を待ちます。パイプラインは承認後にのみ次のステップに進みます。それ以外の場合、現在のパイプラインは終了します。このタスクはデフォルトで無効になっており、手動で有効にする必要があります。
ビルドとデプロイ
アプリケーションをビルドし、クラウドにデプロイします。デフォルトでは、完全なデプロイメントが実行されます。

パイプライン実行履歴の表示
指定した環境の詳細ページで、パイプライン管理タブを選択します。下のパイプライン実行履歴セクションで、指定したパイプラインの過去の実行レコードを表示できます。
特定のパイプライン実行バージョンをクリックして、その詳細を表示できます。この情報により、実行ログとステータスをすばやく確認でき、パイプラインの実行状況を理解したり、問題をトラブルシューティングしたりするのに役立ちます。
パイプラインビルド環境ランタイムのアップグレード
次の表に、デフォルトのパイプラインビルド環境でサポートされているランタイムを示します。組み込みのパッケージ管理ツールには、Maven、PIP、NPM が含まれます。現在、ランタイム環境としてサポートされているのは Debian 10 オペレーティングシステムのみです。
ランタイム | サポートされているバージョン |
Node.js |
|
Java |
|
Python |
|
Golang |
|
PHP |
|
.NET |
|
パイプラインのランタイムバージョンは、runtime-setup パイプラインプラグインを使用するか、リソース記述ファイル内の環境変数を変更することで設定できます。
runtime-setup パイプラインプラグイン (推奨)
Function Compute コンソールで、ご利用のアプリケーションを見つけます。パイプライン管理タブのパイプラインの詳細セクションで、ランタイムタスクプラグインテンプレートを選択して、右側のパイプライン YAML を更新します。手順は次のとおりです:タスクテンプレート (図の ①) -> タスクプラグイン (図の ②) -> ランタイムの設定 (図の ③) -> 右側の YAML を更新 (図の ④) -> 保存 (図の ⑤)。
runtime-setup プラグインを最初の位置に配置して、後続のすべてのステップで有効になるようにしてください。

runtime-setup プラグインのパラメーターの詳細については、「runtime-setup プラグインを使用したランタイム環境の初期化」をご参照ください。
リソース記述ファイル内の環境変数
リソース記述ファイルのアクションフックを使用して、Node.js または Python のバージョンを切り替えることもできます。詳細は次のとおりです。
Node.js
export PATH=/usr/local/versions/node/v14.19.2/bin:$PATH
export PATH=/usr/local/versions/node/v16.15.0/bin:$PATH
export PATH=/usr/local/versions/node/v18.14.2/bin:$PATH
export PATH=/usr/local/versions/node/v20.8.1/bin:$PATH
以下に例を示します。
services: upgrade_runtime: component: 'fc' actions: pre-deploy: - run: export PATH=/usr/local/versions/node/v18.14.2/bin:$PATH && npm run build props: ...Python
export PATH=/usr/local/envs/py27/bin:$PATH
export PATH=/usr/local/envs/py36/bin:$PATH
export PATH=/usr/local/envs/py37/bin:$PATH
export PATH=/usr/local/envs/py39/bin:$PATH
export PATH=/usr/local/envs/py310/bin:$PATH
以下に例を示します。
services: upgrade_runtime: component: 'fc' actions: pre-deploy: - run: export PATH=/usr/local/envs/py310/bin:$PATH && pip3 install -r requirements.txt -t . props: ...