すべてのプロダクト
Search
ドキュメントセンター

Function Compute:パイプラインの管理

最終更新日:Aug 28, 2024

Serverless Application Centerを使用すると、カスタムパイプラインを設定できます。 パイプラインを設定し、タスクフローを調整することで、コードをFunction Computeに効率的に公開できます。 このトピックでは、パイプラインの設定方法、パイプラインの詳細の設定方法、パイプライン実行レコードの表示方法など、Function Computeコンソールでパイプラインを管理する方法について説明します。

背景情報

アプリケーションを作成すると、Serverless application Centerはアプリケーションの既定の環境を作成します。 環境でパイプラインのGitイベントをトリガーするメソッドを指定し、パイプライン設定を構成できます。 パイプラインを設定するときは、[自動設定] または [カスタム設定] を選択できます。 [自動設定] を選択した場合、サーバーレスアプリケーションセンターはデフォルトのパラメーター設定に基づいてパイプラインを作成します。 [カスタム構成] を選択した場合、環境内のパイプラインのGitイベントをトリガーするメソッドを指定できます。 パイプラインの実行環境を選択することもできます。 Git情報やアプリケーション情報などの情報は、実行コンテキストとしてパイプラインに渡されます。

パイプライン設定を変更するときは、トリガーメソッドと実行環境を変更できます。 DingTalk通知とYAMLファイルを設定することもできます。

  • アプリケーションまたは環境を作成するときのパイプラインの構成

    アプリケーションまたは環境を作成するときに、パイプラインのGitトリガーメソッドと実行環境を指定できます。

    image.png

  • 既存の環境のパイプラインを変更する

    既存の環境のパイプラインのGitイベントトリガーメソッド、実行環境、DingTalk通知、およびYAMLファイルは、[パイプライン管理] タブで編集できます。

    image.png

パイプラインの設定

パイプラインを設定するには、パイプライントリガーモード、YAML、DingTalkチャットボット通知設定、およびパイプライン実行環境のパラメーターを設定する必要があります。 アプリケーションと環境を作成するときは、パイプライントリガーモードとパイプライン実行環境パラメーターのみを設定できます。 アプリケーションと環境を作成したら、[パイプライン管理] タブの [パイプライン構成] の右側にある [変更] をクリックして、前述の4つのパラメーターを変更できます。

image.png

パイプライントリガーモード

Serverless Application Centerでは、パイプラインのGitイベントをトリガーするメソッドを指定できます。 Serverless Application Centerは、Webhookを使用してGitイベントを受信します。 指定されたトリガー条件を満たすイベントが受信されると、サーバーレスアプリケーションセンターは、指定したYAMLファイルに基づいてパイプラインを作成して実行します。 次のトリガーモードがサポートされています。

  • ブランチによってトリガーされる: 環境は特定のブランチに関連付けられている必要があり、ブランチ内のすべてのプッシュイベントが一致します。

  • タグによってトリガーされる: 特定のタグ式のすべてのタグ作成イベントが一致します。

  • 分岐マージによってトリガーされる: ソース分岐から環境が関連付けられている宛先分岐への要求イベントのマージとプルが一致します。

パイプライン実行環境

このパラメーターは、[デフォルト環境] または [カスタム環境] に設定できます。

デフォルト環境

Pipeline Execution EnvironmentパラメーターをDefault Environmentに設定すると、Serverless Application Centerはパイプラインリソースを完全に管理し、Function Computeはパイプラインの実行中に発生する料金を負担します。料金を支払う必要はありません。 パイプラインの各タスクは、独立したサンドボックス化された仮想マシンで実行されます。 Serverless Application Centerは、パイプライン実行環境の分離を保証します。 次の項目は、デフォルトの環境に課される制限を示しています。

  • インスタンスの仕様: 4 vCPUと8 GBのメモリ。

  • 一時ディスク容量: 10 GB。

  • タスク実行タイムアウト時間: 15分。

  • リージョン: GitHubのテンプレートまたはソースコードを使用して環境を作成する場合は、シンガポールリージョンを指定します。 Gitee、GitLab、またはCodeupを使用して環境を作成する場合は、中国 (杭州) リージョンを指定します。

  • ネットワーク: 固定IPアドレスまたはCIDRブロックは使用できません。 特定のWebサイトにアクセスするようにIPアドレスホワイトリストを設定することはできません。 仮想プライベートクラウド (VPC) のリソースにアクセスすることはできません。

カスタム環境

パイプライン実行環境パラメーターをカスタム環境に設定した場合、パイプラインはAlibaba Cloudアカウントで実行されます。 デフォルト環境と比較して、カスタム環境はより多くのカスタム機能を提供します。 Serverless Application Centerは、カスタム環境でタスクを完全に管理し、Function Computeインスタンスをリアルタイムでスケジュールして、承認に基づいてパイプラインを実行します。 既定の環境と同様に、カスタム環境にはサーバーレス機能があり、インフラストラクチャを維持する必要がありません。

カスタム環境は、次のカスタム機能を提供します

  • リージョンとネットワーク: 実行環境のリージョンとVPCを指定して、内部コードリポジトリ、アーティファクトリリポジトリ、イメージリポジトリ、およびMaven内部リポジトリにアクセスできます。 サポート対象リージョンの詳細については、「サポート対象リージョン」をご参照ください。

  • インスタンス仕様: 実行環境のCPUとメモリの仕様を指定できます。 たとえば、より大きな仕様のインスタンスを指定して、ビルドプロセスを高速化できます。

    説明

    vCPU容量とメモリ容量 (GB) の比率は、1:1から1:4の範囲です。

  • 永続ストレージ: Apsara File storage NAS (NAS) またはObject Storage Service (OSS) のマウントを設定できます。 たとえば、NASを使用してファイルをキャッシュし、ビルドプロセスを高速化できます。

  • ロギング: Simple Log ServiceプロジェクトとLogstoreを指定して、パイプラインの実行ログを保持できます。

  • タイムアウト期間: パイプラインタスクのカスタムタイムアウト期間を指定できます。 既定値:600。 最大値: 86400。 単位は秒です。

重要

カスタム実行環境では、独自のアカウント内のFunction Computeでパイプラインタスクを実行できます。 詳細については、「課金の概要」をご参照ください。

YAML

Serverless Application Centerは、Serverless Devsと統合されています。 Serverless DevsのYAMLファイルを使用して、アプリケーションのリソース構成を定義できます。 YAMLファイルの構文については、「YAML構文」をご参照ください。 デフォルトのYAMLファイルの名前はs.yamlです。 別のYAMLファイルを指定することもできます。 YAMLファイルを指定した後、次の方法を使用してパイプラインで使用できます。

  • デプロイメントプラグイン @ serverless-cd/s-deployを使用すると、プラグインは指定されたYAMLファイルを自動的に使用します。 -t/-- templateコマンドは、Serverless Devsの操作命令に追加されます。 次の例では、指定された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.de ployFile }} を使用して特定のYAMLファイルを参照できます。 次の例では、YAMLファイルを指定した場合、s planコマンドは指定されたファイルを使用して実行されます。 それ以外の場合、s planコマンドはデフォルトのs.yamlファイルを使用して実行されます。

- name: pre-check
  context:
    data:
      steps:
      - run: s plan -t ${{ ctx.data.deployFile || s.yaml }}
      - run: echo "s plan finished."
  taskTemplate: serverless-runner-task

DingTalkチャットボット通知の設定

この機能を有効にした後、Webhookアドレス署名キー、失敗時のみ通知、カスタムメッセージのパラメーターを設定します。 通知を必要とするタスクを一元管理できます。 パイプラインのYAMLファイルを使用して、各タスクの通知を有効にすることもできます。 通知を設定した後、[パイプラインの詳細] セクションで各タスクの通知を設定できます。

パイプラインの詳細セクション

[パイプラインの詳細] セクションでは、パイプラインフロー、パイプライン内のタスク、およびタスク間の関係を設定できます。 プラットフォームは自動的にデフォルトのパイプラインプロセスを生成し、それに基づいて設定を変更できます。

YAMLを使用してパイプラインを管理できます。 [プラットフォームでのホスティング] または [リポジトリからの読み取り] をパイプラインパスとして選択できます。

説明
  • プラットフォームホスティングでは、定義済みのYAML変数はサポートされません。 詳細については、「」をご参照ください。aを使用します。パイプラインを記述するyamlファイル.

  • [Read from Repository] を選択した場合、YAMLファイル内の定義済み変数がサポートされます。

Hosting on Platform

デフォルトでは、パイプラインのYAMLファイルは、サーバーレスアプリケーションセンターで一元管理されています。 パイプラインのYAMLファイルを更新すると、新しい設定は次の配置で有効になります。

リポジトリからの読み取り

パイプラインのYAMLファイルは、Gitリポジトリに保存されます。 Function Computeコンソールで設定を変更して保存した後、Serverless Application CenterはリアルタイムでGitリポジトリへの変更をコミットします。 これはパイプラインの実行をトリガーしません。 コードリポジトリ内のイベントがパイプラインの実行をトリガーすると、Serverless Application Centerは、Gitリポジトリ内の指定されたYAMLファイルを使用してパイプラインを作成および実行します。

[パイプラインの詳細] セクションの上部で [リポジトリからの読み取り] を選択し、YAMLファイルの名前を入力します。 以下の図は一例です。

image.png

パイプラインの詳細セクションは、左側のツール領域と右側のYAML編集領域で構成されています。

  • YAML編集領域: パイプラインのYAMLファイルを編集して、パイプラインを変更できます。 詳細については、「YAMLファイルを使用したパイプラインの説明」をご参照ください。

  • ツール領域には、YAMLファイルを編集するための補助ツールがあります。 次のタブが含まれています。

    • プロセスプレビュータブ: パイプラインプロセスをプレビューおよび変更できます。

    • タスクテンプレートタブ: 提供されている一般的なYAMLテンプレートを表示できます。

サブセクションの右上隅に、[保存] 、[全画面] 、および [リセット] ボタンが表示されます。

  • [保存] をクリックすると、すべての変更をYAMLファイルに保存できます。 その後、保存されたすべてのデータがパイプラインのYAMLファイルに同期されます。

  • [全画面] をクリックすると、編集サブセクションが全画面として表示されます。

  • [リセット] をクリックすると、YAMLファイルの最新の変更を元に戻します。

重要

[リセット] をクリックすると、最新の変更が失われます。 注意して続行し、データがバックアップされていることを確認してください。

プロセスプレビュータブ

[プロセスプレビュー] タブでは、パイプラインプロセスをプレビューし、タスクの基本コンテンツとタスク間の関係を編集できます。 テンプレートに基づいてタスクを作成および追加することもできます。 パイプラインプロセスは、開始ノード (コードソースおよびトリガーメソッド) 、タスクノード、および終了ノードで構成されます。 ノードは、ノード間の依存関係を示す点線矢印によって接続される。 タスクノード上にポインターを移動すると、タスクを追加または削除するボタンが表示されます。

image.png

  • Startノード (コードソースとトリガーメソッド)

    このノードには、パイプラインのコードソースとトリガーメソッドに関する情報が含まれているため、情報を編集することはできません。 トリガーメソッドを変更する場合は、[パイプライン構成] セクションに移動します。

    重要

    コードリポジトリを変更する場合は、アプリケーションの詳細ページに移動します。 詳細については、「アプリケーションの管理」をご参照ください。 コードリポジトリを変更すると、リポジトリのコードを使用するすべてのパイプラインが無効になります。 作業は慎重に行ってください。

  • エンドノード

    パイプラインプロセスの最後のノード。 編集できません。

  • タスクノード

    このノードには、特定のタスクに関する基本情報が含まれます。 デフォルトでは、タスクノードにタスク名が表示されます。 ノードをクリックすると、ポップアップが表示されます。 ポップアップで、[タスク名][タスクの実行前][タスクの開始] パラメーターなどのパラメーターを表示および変更できます。 タスクを有効にしない場合、タスクはスキップされ、パイプラインプロセス中に暗くなります。

  • 依存関係

    ノード間の依存関係は、一方向の点線矢印で示されている。 矢印がタスクAから始まり、タスクBを指す場合、矢印はタスクBがタスクAの後に実行され、タスクAに依存することを示します。

    Run Afterパラメーターを変更することで、依存関係を変更できます。 たとえば、タスクBのタスクAへの依存関係を削除する場合は、[タスクB] ノードをクリックしてタスクAを削除します。

  • タスクの追加

    タスクを追加する場合は、プラスアイコンをクリックします。 タスクノードの上部、下部、右側のプラスアイコンを設定できます。 たとえば、タスクAの前にタスクBを追加する場合は、タスクAノードの上部にあるプラスアイコンをクリックしてタスクBを作成します。このように、タスクAはタスクBの後に実行され、タスクBに依存します。タスクAの後にタスクCを追加する場合は、タスクAノードの下部にあるプラスアイコンをクリックしてタスクCを作成します。タスクAと同じ依存関係を持つタスクDを追加する場合は、タスクAノードの右側にあるプラスアイコンをクリックしてタスクDを作成します。

  • タスクの削除

    タスクを削除する場合は、十字アイコン (x) をクリックします。 十字アイコンは、タスクノードの右上隅に設定されます。 十字アイコンをクリックすると、誤操作を防ぐためにタスクの削除を確認するよう求められます。

image.png

[タスクテンプレート] タブ

[タスクテンプレート] タブには、[コードチェック][作成][デプロイ] 、および [共通] のパイプラインタスク用のYAMLテンプレートが用意されています。 さらに、タスクの内部設定用に、[詳細設定] および [タスクプラグイン] のYAMLテンプレートが提供されています。

テンプレートリストからテンプレートを選択してクリックすると、テンプレートの詳細説明とYAMLコンテンツが表示されます。 YAMLコンテンツをコピーして、パイプラインのYAMLファイル内の対応する位置に貼り付けます。

image.png

デフォルトのパイプライン処理

デフォルトでは、パイプラインプロセスは、[設定の比較][手動レビュー][ビルドとデプロイ] の3つのタスクで構成されます。 3つのタスクは順番に実行されます。 デフォルトでは、手動レビューは無効になっています。 この機能が必要な場合は、手動で有効にする必要があります。

  • 設定の比較

    このタスクは、パイプラインのYAMLファイルがオンライン設定と一致しているかどうかを確認します。 これにより、予期しない設定変更を事前に検出できます。

  • マニュアルレビュー

    アプリケーションの安全なリリースと安定性を確保するために、手動レビュー機能を有効にすることができます。 この機能を有効にすると、手動レビューが承認されるまで、パイプラインはこのフェーズでブロックされます。 その後のプロセスは、変更が承認された後にのみ実行されます。 そうでなければ、パイプラインは終了する。 デフォルトでは、このタスクは無効になっています。 このタスクを手動で有効にする必要があります。

  • ビルドとデプロイ

    このタスクは、アプリケーションを構築し、アプリケーションをクラウドにデプロイします。 デフォルトでは、完全展開が実行されます。

image.png

パイプラインの実行履歴を表示する

環境の詳細ページで、[パイプライン管理] タブをクリックします。 [パイプライン実行履歴] セクションでは、特定のパイプラインの実行レコードを表示できます。pipeline-history

パイプラインの実行バージョンをクリックすると、パイプラインの実行の詳細が表示されます。 次に、詳細を使用して、パイプラインの実行ログとステータスを表示し、問題をトラブルシューティングできます。

パイプラインのランタイムを更新する

次の表に、パイプラインの既定のビルド環境を示します。 デフォルトパイプラインの組み込みパッケージマネージャには、Maven、pip、およびnpmが含まれます。 Debian 10 OSのみがランタイム環境としてサポートされています。

ランタイム

サポートされているバージョン

Node.js

  • Node.js 12

  • Node.js 14 (デフォルト)

  • Node.js 16

  • Node.js 18

  • Node.js 20

Java

  • Java 8 (デフォルト)

  • Java 11

  • Java 17

Python

  • Python 2.7

  • Python 3.6

  • Python 3.7

  • Python 3.9 (デフォルト)

  • Python 3.10

Golang

  • Go 1.18 (デフォルト)

  • 1.19に行く

  • 1.20に行く

  • 1.21に行く

PHP

  • PHP 7.2

.NET

  • . NET 3.1

パイプラインのランタイムバージョンを指定するには、runtime-setupプラグインを使用するか、YAMLファイルの変数を変更します。

ランタイムセットアッププラグイン (推奨)

Function Computeコンソールにログインして、管理するアプリケーションを検索できます。 [パイプライン管理] タブの [パイプラインの詳細] セクションで、タスクテンプレートを使用して、右側のパイプラインのYAMLファイルを更新します。 YAMLファイルを更新するには、次の図に示すように、次の手順を実行します。[タスクテンプレート] をクリックし、[タスクプラグイン] を選択し、[ランタイムの設定] をクリックします。 次に、YAMLファイルを更新し、[保存] をクリックします。

説明

後続のすべてのステップが有効になるように、最初のステップにランタイムセットアッププラグインを配置することをお勧めします。

image.png

runtime-setupプラグインのパラメーターの詳細については、「runtime-setupプラグインを使用してランタイムを初期化する」をご参照ください。

YAMLファイルの変数

YAMLファイルのアクションフックを使用して、Node.jsまたはPythonのバージョンを変更することもできます。 詳細は次の項目で説明します。

  • Node.js

    • エクスポートPATH=/usr/local/versions/node/v12.22.12/bin:$PATH

    • export PATH=/usr/local/versions/node/v16.15.0/bin:$PATH

    • export PATH=/usr/local/versions/node/v14.19.2/bin:$PATH

    • export PATH=/usr/local/versions/node/v18.14.2/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:
    ...