1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/serverless-devs-Serverless-Devs

Клонировать/Скачать
extend.md 4.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.05.2025 16:44 c46f8bb
title description position category
Наследование YAML
Наследование YAML
9
Обзор

Наследование YAML

С помощью ключевого слова extend решается проблема избыточности множественных конфигураций YAML.

Типичная сцена

Например, при использовании Serverless Devs для развертывания приложения Function Compute FC, предварительная и окончательная среды отличаются только именем сервиса. Все остальные конфигурации идентичны. YAML-конфигурация выглядит следующим образом:

├── code
├── s.yaml
├── s.prod.yaml
└── s.pre.yaml

s.yaml — это базовая конфигурация

edition: 1.0.0
access: "default"
services:
  fc-deploy-test:
    component: fc
    props:
      region: cn-hangzhou
      service:
        name: fc-service
        nasConfig: Auto
        description: "Serverless Devs Service"
      function:
        name: hello-function
        description: "Serverless Devs Function"
        codeUri: "./"
        runtime: nodejs12
        timeout: 60

s.pre.yaml — это конфигурация предварительной среды

extend: s.yaml
services:
  fc-deploy-test:
    props:
      service:
        name: fc-service-pre
        tracingConfig: Disable

s.prod.yaml — это конфигурация окончательной среды

extend: s.yaml
services:
  fc-deploy-test:
    props:
      service:
        name: fc-service-pro
        tracingConfig: Enable

Использование ключевого слова extend позволяет наследовать конфигурации.### Окончательная конфигурация Указание YAML-конфигурации s deploy -t s.prod.yaml приводит к следующему результату:

edition: 1.0.0
access: "default"
services:
  fc-deploy-test:
    component: fc
    props:
      region: cn-hangzhou
      service:
        name: fc-service-pro
        tracingConfig: Enable
        nasConfig: Auto
        description: "Serverless Devs Service"
      function:
        name: hello-function
        description: "Serverless Devs Function"
        codeUri: "./"
        runtime: nodejs12
        timeout: 60

Правила слияния

Конфигурационное слияние использует модуль extend2 для глубокого копирования. Однако, учитывая, что уровень конфигурации yaml достаточно глубок, как в приведённом выше [примере] (#/типичная_ситуация), нам необходимо переопределить имя сервиса service name в среде предрелиза, что требует строго следования иерархической структуре, что является относительно сложным.

services:
  fc-deploy-test:
    props:
      service:
        name: fc-service-pro
        tracingConfig: Enable

Объединение массивов

При объединении данных происходит их прямое перезаписывание, а не слияние.```javascript const a = { arr: [1, 2], }; const b = { arr: [3], }; extend(true, a, b); // => { arr: [ 3 ] }


## Рекомендации
Наследование YAML обычно используется для разделения окружений. Например, предрелизное окружение — это `s.pre.yaml`, а онлайн-окружение — `s.pro.yaml`. При развертывании укажите соответствующий шаблон развертывания `s deploy -t s.pro.yaml`.

### Общие переменные окружения
Ниже приведены некоторые общие значения переменных окружения и их соответствующие описания.

| Ключ | Описание |
| --- | --- |
| local | локальная среда разработки |
| dev/daily/development | ежедневная среда разработки |
| pre/prepub | предпроизводственная среда |
| prod/production | производственная среда |
| test/unittest | среда юнит-тестирования |

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/serverless-devs-Serverless-Devs.git
git@api.gitlife.ru:oschina-mirror/serverless-devs-Serverless-Devs.git
oschina-mirror
serverless-devs-Serverless-Devs
serverless-devs-Serverless-Devs
master