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

Function Compute:.yaml ファイルを使用したパイプラインの記述

最終更新日:Apr 01, 2026

Git リポジトリに .yaml ファイルを保存することで、パイプラインをコードとして定義します。コミットがプッシュされると、Serverless Application Center は Webhook を介してファイルを読み取り、パイプラインを自動的に実行します。

前提条件

開始する前に、以下の前提条件を満たしていることを確認してください。

  • パイプラインとパイプラインテンプレートに関する知識。 詳細については、「パイプライン」および「パイプラインテンプレート」をご参照ください。

  • Serverless Application Center でサポートされている Git リポジトリと、その管理権限。 アプリケーションの設定時に Serverless Application Center が作成するリポジトリを使用できます。

  • リポジトリのルートディレクトリにある .yaml ファイル (例: cicd.yaml)

仕組み

.yaml ファイルは、Serverless Application Center がパイプラインの実行に使用するパイプラインオブジェクトとデータ構造を記述します。このファイルでは、パイプライン名、グローバルコンテキスト、およびタスクのリストとその依存関係を指定します。コミットによってパイプラインがトリガーされると、Serverless Application Center はすべての <% %> プレースホルダーを実際のランタイム値に置き換えてから、パイプラインとタスクオブジェクトを送信します。

ファイルは 3 階層の構造を使用します。

Pipeline
  └── spec
        ├── context.data      (グローバル構成: appName, deployFile, notifications)
        └── templateSpec
              └── tasks[]     (タスクのリスト)
                    ├── context.data.steps[]   (プラグインまたはシェルコマンド)
                    ├── taskTemplate           (タスクの動作: runner または approval)
                    └── runAfters[]            (依存関係の宣言)

フィールドリファレンス

次の表は、パイプラインの .yaml ファイルにおけるトップレベルおよび一般的に使用されるフィールドをまとめたものです。

フィールド必須説明
kindはいPipeline にする必要があります。Serverless Application Center にパイプラインの実行をサブミットするよう指示します。
nameはいパイプライン名。グローバルに一意である必要があります。ランタイムで一意の名前を構築するには、<% .git.shortCommitId %><% .currentTimestampMs %> を使用します。
descriptionいいえパイプラインの人間が判読可能な説明。
spec.context.data.appNameいいえServerless Application Center のアプリケーション名。パイプラインがトリガーされると自動的に入力されます。
spec.context.data.deployFileいいえServerless Devs で使用される s.yaml ファイルへのパス。デフォルトはルートの s.yaml です。
spec.context.data.dingdingNotificationいいえグローバルな DingTalk 通知設定 (Webhook、シークレット、メッセージなど)。タスクごとの通知設定をオーバーライドします。
spec.templateSpec.tasks[].nameはいパイプライン内でタスクに付ける一意の名前。
spec.templateSpec.tasks[].context.data.displayNameいいえServerless Application Center コンソールに表示される名前。
spec.templateSpec.tasks[].context.data.enableいいえfalse に設定するとタスクをスキップします。
spec.templateSpec.tasks[].context.data.steps[]いいえ実行ステップ。各ステップは plugin リファレンスまたは run シェルコマンドのいずれかです。
spec.templateSpec.tasks[].taskTemplateはいタスクの動作テンプレート。ビルドおよびデプロイのステップには serverless-runner-task を、手動承認ゲートには need-approval を使用します。
spec.templateSpec.tasks[].runAfters[]いいえこのタスクが開始する前に正常に完了する必要があるタスクのリスト。最初のタスクの場合は空 ([]) のままにします。

パイプラインの .yaml ファイルの設定

次の例では、事前チェックを実行し、手動承認を待ってから、アプリケーションをビルドしてデプロイする 3 つのタスクからなるパイプラインを定義します。

---
# パイプラインを送信して実行します。
kind: Pipeline
# 名前はグローバルに一意である必要があります。コミット ID とタイムスタンプを使用すると、一意性が保証されます。
name: "p-<% .git.shortCommitId %>-<% .currentTimestampMs %>"
description: 'demo pipeline'
spec:
  context:
    data:
      ## グローバルな DingTalk 通知設定。タスクごとの通知設定をオーバーライドします。
      ## 有効にするにはコメントを解除します。
      #dingdingNotification:
      #  enable: false
      #  skipOnSuccess: false
      #  webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
      #  secret: xxx
      #  message:
      #    at:
      #      isAtAll: false
      #      atUserIds: ["admin"]
      #      atMobiles: ["188xxxx8888"]
      #    msgtype: text
      #    text: |
      #      task finished.
      #      TaskName: {{ .currentTask.name }}
      #      Success: {{ .success }}
      #      Status: {{ .currentTask.status.phase }}
      # Serverless Application Center のアプリケーション名。トリガーされると自動的に提供されます。
      appName: <% .appName %>
      # Serverless Devs で使用される s.yaml ファイルへのパス。これはルートの s.yaml を参照します。
      deployFile: s.yaml
  # インラインタスク定義。Serverless Application Center は、組み込みのテンプレート記述をサポートしています。
  templateSpec:
    tasks:
    - name: pre-check
      context:
        data:
          displayName: "Pre-check"
          enable: true
          steps:
            - plugin: "@serverless-cd/checkout"
            - plugin: "@serverless-cd/s-setup"
            - run: s plan -t "${{ ctx.data.deployFile }}"
      taskTemplate: serverless-runner-task
      runAfters: []
    - name: pre-check-approval
      context:
        data:
          displayName: "Manual review"
          enable: true
      # need-approval は、レビュアーが Serverless Application Center コンソールで承認または拒否するまでパイプラインを一時停止する組み込みのタスクテンプレートです。
      taskTemplate: need-approval
      runAfters:
      - name: pre-check
    - name: build-and-deploy
      context:
        data:
          displayName: "Building and deployment"
          enable: true
          steps:
            - plugin: "@serverless-cd/checkout"
            - plugin: "@serverless-cd/s-setup"
            - run: s deploy -t "${{ ctx.data.deployFile }}" --use-local --assume-yes --skip-push
      taskTemplate: serverless-runner-task
      runAfters:
      - name: pre-check-approval
---

Git イベントがこのパイプラインをトリガーすると、Serverless Application Center は p-<% .git.shortCommitId %>-<% .currentTimestampMs %> というフォーマットで名前が付けられたパイプラインを生成し、次のタスクを順番に実行します。

  1. 事前チェック — コードをチェックアウトし、Serverless Devs をセットアップし、s plan を実行して変更をプレビューします。

  2. 手動レビュー — レビュアーがコンソールで承認するまでパイプラインを一時停止します。

  3. ビルドとデプロイ — コードをチェックアウトし、Serverless Devs をセットアップし、s deploy を実行してアプリケーションをデプロイします。

タスクの依存関係

runAfters を使用して、タスクが開始する前に完了する必要があるタスクを宣言します。

最小限の例 — 3 つの連続したタスク:

tasks:
- name: task-a
  runAfters: []          # パイプラインがトリガーされるとすぐに開始します
- name: task-b
  runAfters:
  - name: task-a         # task-a が成功した後にのみ開始します
- name: task-c
  runAfters:
  - name: task-b         # task-b が成功した後にのみ開始します

手動承認ゲート

taskTemplate: need-approval は、パイプラインを一時停止し、レビュアーが Serverless Application Center コンソールで承認または拒否することを要求する組み込みのテンプレートです。

- name: pre-check-approval
  context:
    data:
      displayName: "Manual review"
      enable: true
  taskTemplate: need-approval   # 組み込みの承認ゲート — ステップは不要です
  runAfters:
  - name: pre-check

事前定義変数

パイプラインがトリガーされると、Serverless Application Center はパイプラインを送信する前に、.yaml ファイル内の <% %> プレースホルダーを次の表の値に置き換えます。

変数説明注意
<% .appName %>アプリケーションの名前。headless-ffmpeg-wcha
<% .accountId %>Alibaba Cloud アカウント ID。143199913651****
<% .releaseVersion %>パイプラインのデプロイメントバージョン。1676913428****
<% .envName %>パイプラインが実行される環境。staging
<% .git.branch %>パイプラインをトリガーしたブランチ。test
<% .git.commitId %>HEAD コミットの完全なコミット ID。3b6b823cea88c356b10442580da5a02cde4****
<% .git.shortCommitId %>コミット ID の最初の 7 文字。3b6b823一意性を確保するために、パイプライン名でこれを使用します。
<% .git.commitMessage %>HEAD コミットのコミットメッセージ。update .s file
<% .git.tag %>Git 操作のタグ名。devこれは、そのようなタグが存在する場合にのみ適用されます。
<% .git.author %>Git 操作の作成者。developer
<% .git.action %>パイプラインをトリガーしたアクション。push
<% .currentTimestampMs %>クエリが開始されたときのタイムスタンプ。単位: ミリ秒。1676971965781一意性を確保するために、パイプライン名でこれを使用します。
<% .currentTimestampS %>デプロイメントが実行されるときのタイムスタンプ。単位: 秒。1676971891
<% .randomString6 %>6 文字のランダムな文字列。abcdef

次のステップ

  • パイプラインの管理 — アプリケーションの作成時または環境の設定時に .yaml ファイルを指定または更新します