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

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

最終更新日:Aug 30, 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ファイルを変更して、パイプラインプロセスを変更できます。 詳細については、「」をご参照ください。aを使用します。パイプラインを記述する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

    • export 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:
    ...