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

Function Compute:.yamlファイルを使用してパイプラインを記述する

最終更新日:Aug 30, 2024

パイプライン構成では、を使用できます。サーバーレスアプリケーションセンターでパイプラインを実行してサーバーレスアプリケーションを構築および公開する方法を定義するyamlファイル。 このトピックでは、yamlファイルと、ファイル内の定義済みフィールドは何ですか。

背景

A. yamlファイルは、パイプラインの実行に使用されるパイプラインオブジェクトとパイプラインテンプレートのデータ構造を記述します。 コードリポジトリに変更が発生すると、変更により、webhookを介してServerless Application Centerがトリガーされ、に基づいてパイプラインが実行されます。yamlファイル。

に基づいてパイプラインを実行することを推奨します。yamlファイル。 これは、Serverless Application Centerで一般的なDevOpsプラクティスです。 既存のを指定できます。yamlファイルまたはを作成します。yamlファイルは、アプリケーションを作成するときや環境で作成します。 を指定する方法の詳細については、yamlファイルの「パイプラインの管理」をご参照ください。

前提条件

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

  • Serverless Application CenterでサポートされているGitリポジトリが作成され、Gitリポジトリの管理権限が付与されます。 Serverless Application Centerでアプリケーションを作成するときに作成および初期化されるGitリポジトリを使用することもできます。

  • A. yamlファイルは、Gitリポジトリのルートディレクトリに作成されます。 この例では、cicd.yamlファイルが使用されています。

aを設定します。yamlファイル

パイプラインの説明、参照されるパイプラインテンプレート、またはパイプラインの実行メソッドを追加できます。yamlファイル。 次のサンプルコードは、例を示しています。

---
# Submit a pipeline for execution.
kind: Pipeline
# The name of the pipeline must be globally unique. We recommend that you use a commit ID and a timestamp to construct a name.
name: "p-<% .git.shortCommitId %>-<% .currentTimestampMs %>"
# Configure the description of the pipeline.
description: 'demo pipeline'
spec:
  context:
    data:
      ## Configure global DingTalk notifications. The configuration overwrites the notification settings in the template.
      #dingdingNotification:
      # # Disable global DingTalk notifications. You can enable DingTalk notification in subsequent tasks.
      #  enable: false
      # # Skip notifications when the task is successfully executed.
      #  skipOnSuccess: false
      # # Configure webhook settings for DingTalk notifications.
      #  webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
      # # The signature key for DingTalk notifications.
      #  secret: xxx
      # # The content of DingTalk notifications. Do not specify a fixed text unless you want to send only the fixed content.
      #  message:
      #    at:
      #      isAtAll: false
      #      atUserIds: ["admin"]
      #      atMobiles: ["188xxxx8888"]
      #    msgtype: text
      # # Template syntax can be used in the text. A template can obtain the current execution status and exceptions.
      #    text: |
      #      task finished.
      #      TaskName: {{ .currentTask.name }}
      #      Success: {{ .success }}
      #      Status: {{ .currentTask.status.phase }}
      # Use Serverless Devs to deploy the pipeline. Specify the location of the s.yaml file. The content is automatically populated when the pipeline is triggered.
      # deployFile: s.yaml
      # Specify the name of the application that you want to create in Serverless Application Center. The name is automatically provided when the pipeline is triggered.
      appName: <% .appName %>
      # The location of the s.yaml file in the repository. This s.yaml file is the one stored in the root path.
      deployFile: s.yaml
  # The description of the pipeline template that is used for execution. Serverless Application Center supports built-in template descriptions in pipelines.
  templateSpec:
    tasks:
    - name: pre-check
      context:
        data:
          displayName: "Pre-check"
          enable: true
          steps:
            - plugin: "@serverless-cd/checkout"
            - plguin: "@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
      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イベントが発生すると、p-<% 。git.shortCommitId %>-<% 。currentTimestampMs %>フォーマットが生成され、それに応じて次の3つのタスクが実行されます。 各タスクでは、特定の実行ステップを記述するために、パイプライン・プラグインおよびシェル・コマンドが使用される。

aで定義済みの変数。yamlファイル

次の表に、Serverless Application Centerが提供する事前定義変数を示します。 パイプラインがトリガーされると、yamlファイルは、対応する変数の値に置き換えられます。 次に、ファイルに記述されているパイプラインとタスクオブジェクトがコミットされます。

変数

説明

説明

<% 。appName %>

アプリケーションの名前。

ヘッドレス-ffmpeg-wcha

<% 。accountId %>

Alibaba Cloud アカウントの ID です。

143199913651 ****

<% 。releaseVersion %>

パイプラインの展開バージョン。

1676913428 ****

<% 。envName %>

パイプラインが存在する環境。

ステージング

<% 。git.br anch %>

パイプラインが存在するブランチ。

test

<% 。git.com mitId %>

このGit操作でのHEADコミットのコミットID。

3b6b823cea88c356b10442580da5a02cde4 ****

<% 。git.shortCommitId %>

Git操作のHEADコミットのコミットIDの最初の7桁。

3b6b823

<% 。git.com mitMessage %>

Git操作でのHEADコミットのメッセージ内容。

更新します。sファイル

<% 。git.tag %>

Git操作のタグの名前。 これは、そのようなタグが存在する場合にのみ適用されます。

dev

<% 。git.author %>

Git操作のライター。

開発者

<% 。git.action %>

Git操作のアクション名。

プッシュ

<% 。currentTimestampMs %>

クエリが開始されたときのタイムスタンプ。 単位:ミリ秒。

1676971965781

<% 。currentTimestampS %>

デプロイメントが実行されたときのタイムスタンプ。 単位は秒です。

1676971891

<% 。randomString6 %>

ランダムな6桁の文字列。

abcdef