Serverless-Devs

:fire::fire::fire: Serverless Devs developer tool ( Serverless Devs 开发者工具 )

View the Project on GitHub Serverless-Devs/Serverless-Devs

自定义命令使用指南

所谓的自定义命令指的是由组件决定的命令。由于 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 [自定义命令]实现应用纬度的操作。

关于Serverless Devs开发者工具,涉及到的 Exit Code,可以参考开发者工具设计文档

服务级操作

在当前项目下,可以执行s [服务名] [自定义命令]实现服务级操作。

注意事项

在上面应用级操作服务级操作中,我们不难发现,同样是某些组件不包括对应方法,但是在应用级操作服务级操作中的表现形式却不同,这里的设计思路主要是为了保证应用级操作的流畅性。所以其规律通常如下:

  1. 应用级操作更多是一种批量操作,会按照Serverless User Model所定义的服务顺序对应用下的所有服务进行分别操作;所以,此时如果出现某个服务对应的组件不包括当前方法,会以”批量操作”作为理由,跳过该服务,进行警告后继续执行,此时,系统的exit code为0;
  2. 服务级操作更多是一种针对某个应用下的某个服务的特定操作,此时如果找不到对应的方法,则意味着本次操作没有意义,将会惊醒错误报告,此时,系统的exit code为100;