title | description | position | category |
---|---|---|---|
Пользовательские команды |
Руководство по использованию пользовательских команд |
10 |
Команды |
Пользовательские команды — это команды, определенные компонентами. Поскольку инструмент Serverless Devs сам по себе не имеет никакой бизнес-специфической функциональности (включая, но не ограничиваясь, развертывание функций, сборку приложений, тестирование проектов и т.д.), эти функции предоставляются компонентами и выводятся через инструмент Serverless Devs.
Например, файл описания ресурсов/поведения приложения может выглядеть следующим образом:
edition: 1.0.0 # Версия YAML-схемы командной строки, следующая стандарту семантической версии (Semantic Versioning)
name: FullStack # Имя проекта
access: xxx-account1
services:
backend: # Имя службы
component: django-component # Имя компонента
props: # Значения свойств компонента
src: ./backend_src
url: url
user-frontend: # Имя службы
component: vue-component # Имя компонента
props: # Значения свойств компонента
src: ./frontend_src_user
url: url
admin-frontend: # Имя службы
component: vue-component # Имя компонента
props: # Значения свойств компонента
src: ./frontend_src_admin
url: url
```Из этого YAML-файла можно выделить следующую информацию:
1. Имя приложения — `FullStack`, будет использоваться ключ `xxx-account1`;
2. Приложение состоит из трех служб:
- Служба `backend`: использует компонент `django-component`
- Служба `user-frontend`: использует компонент `vue-component`
- Служба `admin-frontend`: использует компонент `vue-component`
Если в данный момент компоненты `django-component` и `vue-component` поддерживают следующие пользовательские команды:
| | `django-component` | `vue-component` |
| --- | --- | --- |
| `deploy` | Поддерживается | Поддерживается |
| `remove` | Поддерживается | Поддерживается |
| `test` | Поддерживается | Не поддерживается |
То можно использовать пользовательские команды для выполнения [операций уровня приложения](#операции-уровня-приложения) и [операций уровня службы](#операции-уровня-службы).
## Операции уровня приложенияВ текущем проекте можно выполнить команду `s [пользовательская команда]` для выполнения операций на уровне приложения. При выполнении команд `s deploy` или `s remove`, поскольку компоненты, соответствующие трем службам — `backend`, `user-frontend`, `admin-frontend`, поддерживают методы `deploy` и `remove`, система выполнит эти методы для каждого компонента в соответствии с [порядком служб, определённым в Serverless User Model](../../../spec/zh/0.0.2/serverless_user_model/3.user_model.md#порядок-служб); **в этом случае код завершения системы равен 0;**
При выполнении команды `s test`, поскольку компоненты, соответствующие двум службам — `user-frontend`, `admin-frontend`, не поддерживают метод `test`, система выполнит метод `test` для компонента `backend` (django-component); **в этом случае система выдаст предупреждение для двух служб `user-frontend` и `admin-frontend`, но не выдаст ошибку, и код завершения системы будет равен 0;**
Если при выполнении команд `s deploy`, `s remove` или `s test` произойдёт ошибка в любом из трёх служб — `backend`, `user-frontend`, `admin-frontend`, система выдаст ошибку и прекратит выполнение следующих шагов; **в этом случае код завершения системы будет равен 101;**
> О проекте Serverless Devs разработческих инструментов, связанных с кодом завершения (exit code), можно ознакомиться с [документацией проектирования инструментов](../tool.md)## Уровень сервиса
В рамках текущего проекта можно выполнить команду `s [имя сервиса] [персонализированная команда]` для выполнения операций на уровне сервиса.
- Выполнение команды `s backend deploy` и подобных команд позволяет выполнить операции, связанные с развертыванием сервиса `backend`. **Если операция завершается успешно, код завершения (exit code) системы будет равен 0; в случае ошибки, код завершения (exit code) системы будет равен 101**;
- Выполнение команды `s admin-frontend test` приведет к тому, что система не найдет метод `test` для сервиса `admin-frontend`. **В этом случае система будет считать, что метод не найден, и код завершения (exit code) системы будет равен 100**;
## Важные моменты
В разделах [операций уровня приложения](#операции-уровня-приложения) и [операций уровня сервиса](#операции-уровня-сервиса) можно заметить, что при отсутствии определенных методов в компонентах, их поведение отличается. Такой подход выбран для обеспечения плавности выполнения [операций уровня приложения](#операции-уровня-приложения). Обычно правила следующие:1. [Аппликейшн-уровневые операции](#операции-уровня-приложения) представляют собой массовые операции, которые выполняются для всех сервисов в приложении в соответствии с [порядком сервисов, определенным в модели пользователя Serverless](../../../spec/zh/0.0.2/serverless_user_model/3.user_model.md#порядок-сервисов). Если для какого-либо сервиса отсутствует метод в компоненте, система пропустит этот сервис, выдаст предупреждение и продолжит выполнение. **В этом случае код завершения (exit code) системы будет равен 0**;
2. [Сервис-уровневые операции](#операции-уровня-сервиса) представляют собой операции, выполненные для конкретного сервиса в приложении. Если метод не найден, это означает, что операция не имеет смысла, и система выдаст сообщение об ошибке. **В этом случае код завершения (exit code) системы будет равен 100**;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )