@serverless-devs/s 2.0.96 → 2.0.97-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/clean/index.js +1 -1
- package/lib/cli/index.js +1 -1
- package/lib/component/index.js +1 -1
- package/lib/config/add/index.js +1 -1
- package/lib/config/delete/index.js +1 -1
- package/lib/config/get/index.js +1 -1
- package/lib/config/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/init/index.js +1 -1
- package/lib/set/analysis/index.js +1 -1
- package/lib/set/index.js +1 -1
- package/lib/set/locale/index.js +1 -1
- package/lib/set/registry/index.js +1 -1
- package/lib/set/workspace/index.js +1 -1
- package/lib/update-notifier/index.js +1 -1
- package/package.json +2 -2
- package/CODE_OF_CONDUCT.md +0 -5
- package/CONTRIBUTING.md +0 -189
- package/CONTRIBUTORS.md +0 -148
- package/docs/readme.md +0 -100
- package/docs/zh/awesome.md +0 -20
- package/docs/zh/cicd.md +0 -231
- package/docs/zh/cli_design.md +0 -100
- package/docs/zh/command/clean.md +0 -63
- package/docs/zh/command/cli.md +0 -92
- package/docs/zh/command/component.md +0 -75
- package/docs/zh/command/config.md +0 -274
- package/docs/zh/command/custom.md +0 -73
- package/docs/zh/command/init.md +0 -149
- package/docs/zh/command/readme.md +0 -76
- package/docs/zh/command/set.md +0 -195
- package/docs/zh/default_provider_config/alibabacloud.md +0 -82
- package/docs/zh/default_provider_config/aws.md +0 -12
- package/docs/zh/default_provider_config/azure.md +0 -9
- package/docs/zh/default_provider_config/baiducloud.md +0 -8
- package/docs/zh/default_provider_config/gcp.md +0 -21
- package/docs/zh/default_provider_config/huaweicloud.md +0 -52
- package/docs/zh/default_provider_config/readme.md +0 -9
- package/docs/zh/default_provider_config/tencentcloud.md +0 -41
- package/docs/zh/install.md +0 -52
- package/docs/zh/package_dev.md +0 -142
- package/docs/zh/quick_start.md +0 -297
- package/docs/zh/readme.md +0 -92
- package/docs/zh/tool.md +0 -101
- package/docs/zh/yaml.md +0 -207
- package/docs/zh/yaml_and_cli.md +0 -67
- package/jest.setup.ts +0 -37
- package/spec/readme.md +0 -59
- package/spec/zh/0.0.1/readme.md +0 -47
- package/spec/zh/0.0.1/serverless_package_model/1.purpose_and_goals.md +0 -3
- package/spec/zh/0.0.1/serverless_package_model/2.overview_and_terminology.md +0 -14
- package/spec/zh/0.0.1/serverless_package_model/3.package_model.md +0 -434
- package/spec/zh/0.0.1/serverless_package_model/4.application_scopes.md +0 -3
- package/spec/zh/0.0.1/serverless_package_model/5.design_principles.md +0 -3
- package/spec/zh/0.0.1/serverless_package_model/readme.md +0 -12
- package/spec/zh/0.0.1/serverless_registry_model/1.purpose_and_goals.md +0 -18
- package/spec/zh/0.0.1/serverless_registry_model/2.overview_and_terminology.md +0 -18
- package/spec/zh/0.0.1/serverless_registry_model/3.registry_model.md +0 -61
- package/spec/zh/0.0.1/serverless_registry_model/4.application_scopes.md +0 -6
- package/spec/zh/0.0.1/serverless_registry_model/5.design_principles.md +0 -3
- package/spec/zh/0.0.1/serverless_registry_model/readme.md +0 -12
- package/spec/zh/0.0.1/serverless_user_model/1.purpose_and_goals.md +0 -3
- package/spec/zh/0.0.1/serverless_user_model/2.overview_and_terminology.md +0 -16
- package/spec/zh/0.0.1/serverless_user_model/3.user_model.md +0 -218
- package/spec/zh/0.0.1/serverless_user_model/4.application_scopes.md +0 -4
- package/spec/zh/0.0.1/serverless_user_model/5.design_principles.md +0 -3
- package/spec/zh/0.0.1/serverless_user_model/readme.md +0 -12
- package/test/ci.sh +0 -33
- package/test/cli/cli-manager.test.ts +0 -64
- package/test/config/get.test.ts +0 -12
- package/test/helloworld.test.ts +0 -7
- package/test/start-fc-http-nodejs12/code/index.js +0 -47
- package/test/start-fc-http-nodejs12/s.yaml +0 -38
- package/test/utils/index.test.ts +0 -8
- package/test/utils/storage.test.ts +0 -19
- package/tsconfig.json +0 -37
package/docs/zh/yaml.md
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
# 描述文件(Yaml)规范
|
|
2
|
-
|
|
3
|
-
> 当前文档遵循 [Serverless User Model](../../spec/zh/0.0.1/serverless_user_model/readme.md) 和相关规范。
|
|
4
|
-
|
|
5
|
-
- [描述文件简介](#描述文件简介)
|
|
6
|
-
- [描述文件格式/规范](#描述文件格式规范)
|
|
7
|
-
- [元数据](#元数据)
|
|
8
|
-
- [变量赋值](#变量赋值)
|
|
9
|
-
- [服务顺序](#服务顺序)
|
|
10
|
-
- [行为描述](#行为描述)
|
|
11
|
-
|
|
12
|
-
## 描述文件简介
|
|
13
|
-
|
|
14
|
-
在非`cli`模式下,进行应用的操作、组件的使用,需要按照 Serverless Devs 的规范,提供相对应的资源/行为描述文件,且该文件还需要符合以下条件:
|
|
15
|
-
|
|
16
|
-
- 拓展名可以是`.yaml`或`.yml`
|
|
17
|
-
- 格式必须符合[Yaml规范](https://yaml.org/spec/1.2.2/)
|
|
18
|
-
|
|
19
|
-
> 👉 对于需要通过描述文件进行环境隔离的项目,建议将文件命名为 `s-${ENV}.yaml` 或 `s-${ENV}.yml` 格式。 例如:`s-prod.yaml`。
|
|
20
|
-
|
|
21
|
-
在默认情况下,Serverless Devs 开发者工具会默认该描述文件的名称为`s.yaml`或`s.yml`,且`s.yaml`的优先级大于`s.yml`, 即在一个 Serverless 应用下,同时出现`s.yaml`与`s.yml`时,系统会优先识别和使用`s.yaml`。
|
|
22
|
-
|
|
23
|
-
当然,开发者也可以通过`-t, --template [templatePath]`进行指定,例如,在某应用在生产环境下的描述文件名为`s-prod.yml`,则可以在执行相关命令时,增加参数`-t s-prod.yml`或者`--template s-prod.yml`。
|
|
24
|
-
|
|
25
|
-
## 描述文件格式/规范
|
|
26
|
-
|
|
27
|
-
关于 Serverless Devs 所支持的资源/行为描述文件基本格式为:
|
|
28
|
-
|
|
29
|
-
```yaml
|
|
30
|
-
edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
|
|
31
|
-
name: applicationName # 应用名称
|
|
32
|
-
access: xxx-account1 # 秘钥别名
|
|
33
|
-
|
|
34
|
-
vars: # [全局变量,提供给各个服务使用]
|
|
35
|
-
Key: Value
|
|
36
|
-
|
|
37
|
-
Service: # 可以包括多个服务
|
|
38
|
-
ServiceName: # 服务名称
|
|
39
|
-
access: xxx-account1 # 秘钥别名,如果和项目的access相同,可省略
|
|
40
|
-
component: componentName # 组件名称
|
|
41
|
-
props: serviceProp # 组件的属性值
|
|
42
|
-
actions: serviceActions # 自定义执行逻辑
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
例如,一个相对完整的 Yaml 案例可以是:
|
|
46
|
-
|
|
47
|
-
```yaml
|
|
48
|
-
edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
|
|
49
|
-
name: FullStack # 项目名称
|
|
50
|
-
access: xxx-account1 # 秘钥别名
|
|
51
|
-
|
|
52
|
-
vars: # [全局变量,提供给各个服务使用]
|
|
53
|
-
logo: https://image.aliyun.com/xxxx.png
|
|
54
|
-
|
|
55
|
-
services:
|
|
56
|
-
nextjs-portal: # 服务名称
|
|
57
|
-
access: xxx-account1 # 秘钥别名,如果和项目的access相同,可省略
|
|
58
|
-
component: vue-component # 组件名称
|
|
59
|
-
props: # 组件的属性值
|
|
60
|
-
src: ./frontend_src
|
|
61
|
-
url: url
|
|
62
|
-
actions: # 自定义执行逻辑
|
|
63
|
-
pre-deploy: # 在deploy之前运行
|
|
64
|
-
- run: s exec -- publish # 要运行的命令行
|
|
65
|
-
path: ./backend_src # 命令行运行的路径
|
|
66
|
-
- run: s build # 要运行的命令行
|
|
67
|
-
path: ./backend_src # 命令行运行的路径
|
|
68
|
-
post-deploy: # 在deploy之后运行
|
|
69
|
-
- run: s clean
|
|
70
|
-
path: ./frontend_src
|
|
71
|
-
|
|
72
|
-
assets:
|
|
73
|
-
component: static
|
|
74
|
-
props:
|
|
75
|
-
cache-control: "public, max-age=604800, immutable"
|
|
76
|
-
www: "./public"
|
|
77
|
-
|
|
78
|
-
express-blog:
|
|
79
|
-
component: express
|
|
80
|
-
props:
|
|
81
|
-
app: ./express-blog
|
|
82
|
-
url: ${vars.domain}
|
|
83
|
-
actions:
|
|
84
|
-
pre-deploy:
|
|
85
|
-
- run: npm run build
|
|
86
|
-
path: ./express-blog
|
|
87
|
-
|
|
88
|
-
gateway:
|
|
89
|
-
component: serverless-gateway # 路由组件:HTTP URL和服务之间的映射规则
|
|
90
|
-
props:
|
|
91
|
-
routes:
|
|
92
|
-
- route: /~assets
|
|
93
|
-
value: ${assets.output.url}
|
|
94
|
-
- route: /
|
|
95
|
-
value: ${nextjs-portal.output.url}
|
|
96
|
-
index: index.html
|
|
97
|
-
- route: /~portal
|
|
98
|
-
value: ${nextjs-portal.output.url}
|
|
99
|
-
inex: index.html
|
|
100
|
-
- route: /~blog
|
|
101
|
-
value: ${express-blog.output.url}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### 元数据
|
|
105
|
-
|
|
106
|
-
在该格式中:
|
|
107
|
-
|
|
108
|
-
| 参数名 | 代表含义 |
|
|
109
|
-
| ---- | ---- |
|
|
110
|
-
| edition | 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范 |
|
|
111
|
-
| name | 应用名称 |
|
|
112
|
-
| access | 秘钥别名,可以使用通过[config命令](./command/config.md#config-add-命令)配置的密钥信息,以及[配置到环境变量的密钥信息](./command/config.md#通过环境变量配置密钥信息) |
|
|
113
|
-
| vars | 全局变量,提供给各个服务使用,是一个Key-Value的形式 |
|
|
114
|
-
| Service | 应用所包含的服务,是一个Key-Value的形式 |
|
|
115
|
-
|
|
116
|
-
关于Service参数:
|
|
117
|
-
|
|
118
|
-
| 参数名 | 代表含义 |
|
|
119
|
-
| ---- | ---- |
|
|
120
|
-
| access | 秘钥别名,如果和项目的access相同,可省略 |
|
|
121
|
-
| component | 组件名称 |
|
|
122
|
-
| actions | 自定义执行逻辑 |
|
|
123
|
-
| props | 组件的属性值 |
|
|
124
|
-
|
|
125
|
-
### 变量赋值
|
|
126
|
-
|
|
127
|
-
Serverless Application模型对应的Yaml文件支持多种变量格式:
|
|
128
|
-
|
|
129
|
-
- 获取当前机器中的环境变量:${env(环境变量)},例如${env(secretId)}
|
|
130
|
-
- 获取外部文档的变量:${file(路径)},例如${file(./path)}
|
|
131
|
-
- 获取全局变量:${vars.*}
|
|
132
|
-
- 获取其他项目的变量:${projectName.props.*}
|
|
133
|
-
- 获取Yaml中其他项目的结果变量:${projectName.output.*}
|
|
134
|
-
|
|
135
|
-
### 服务顺序
|
|
136
|
-
|
|
137
|
-
如果一个Serverless Application模型对应的Yaml文件中有过多的服务,系统会默认分析部署顺序,该部署顺序分为两个步骤:
|
|
138
|
-
|
|
139
|
-
1. 分析项目中的依赖关系
|
|
140
|
-
2. 有依赖关系的按照依赖关系从前到后部署,无依赖关系的按Yaml配置的从上到下部署
|
|
141
|
-
|
|
142
|
-
### 行为描述
|
|
143
|
-
|
|
144
|
-
在Serverless Application模型对应的Yaml文件中,可以针对服务,提供对应的行为操作,其基本格式是:
|
|
145
|
-
|
|
146
|
-
```yaml
|
|
147
|
-
actions: # 自定义执行逻辑
|
|
148
|
-
pre-命令: # 在命令之前运行
|
|
149
|
-
- run: command # 要运行的操作
|
|
150
|
-
path: ./path # 运行操作的路径
|
|
151
|
-
post-命令: # 在命令之后运行
|
|
152
|
-
- run: command # 要运行的操作
|
|
153
|
-
path: ./path # 运行操作的路径
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
例如:
|
|
157
|
-
|
|
158
|
-
```yaml
|
|
159
|
-
actions: # 自定义执行逻辑
|
|
160
|
-
pre-deploy: # 在deploy之前运行
|
|
161
|
-
- run: s exec -- publish # 要运行的命令行
|
|
162
|
-
path: ./backend_src # 命令行运行的路径
|
|
163
|
-
- run: s build # 要运行的命令行
|
|
164
|
-
path: ./backend_src # 命令行运行的路径
|
|
165
|
-
post-deploy: # 在deploy之后运行
|
|
166
|
-
- run: s clean
|
|
167
|
-
path: ./frontend_src
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
当Serverless Devs开发者工具执行到该服务时,会在进行相关的命令之行之前,优先按照顺序执行`pre-命令`的操作,所有内容完成执行之后,再执行`post-命令`的操作。
|
|
171
|
-
|
|
172
|
-
以下面的Yaml为例:
|
|
173
|
-
|
|
174
|
-
```yaml
|
|
175
|
-
edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
|
|
176
|
-
name: FullStack # 项目名称
|
|
177
|
-
|
|
178
|
-
services:
|
|
179
|
-
nextjs-portal: # 服务名称
|
|
180
|
-
access: xxx-account1 # 秘钥别名,如果和项目的access相同,可省略
|
|
181
|
-
component: vue-component # 组件名称
|
|
182
|
-
props: # 组件的属性值
|
|
183
|
-
src: ./frontend_src
|
|
184
|
-
url: url
|
|
185
|
-
actions: # 自定义执行逻辑
|
|
186
|
-
pre-deploy: # 在deploy之前运行
|
|
187
|
-
- run: s exec -- publish # 要运行的命令行
|
|
188
|
-
path: ./backend_src # 命令行运行的路径
|
|
189
|
-
- run: s build # 要运行的命令行
|
|
190
|
-
path: ./backend_src # 命令行运行的路径
|
|
191
|
-
post-deploy: # 在deploy之后运行
|
|
192
|
-
- run: s clean
|
|
193
|
-
path: ./frontend_src
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
当开发者在当前应用下执行了`deploy`命令,系统将会按照以下顺序进行操作:
|
|
197
|
-
1. 在`./backend_src`目录下执行`s exec -- publish`
|
|
198
|
-
2. 在`./backend_src`目录下执行`s build`
|
|
199
|
-
3. 调用组件`vue-component`的`deploy`方法,并将`props`和项目的基本信息传入到组件`vue-component`的`deploy`方法中
|
|
200
|
-
4. 在`./frontend_src`目录下执行`s clean`
|
|
201
|
-
|
|
202
|
-
以上顺序仅适用于整个流程没有出错的前提下,如果流程出现错误,系统将会进行报错,并终止后续流程的执行。
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-----------
|
|
206
|
-
|
|
207
|
-
> 在一个应用下,如何一键部署整个应用?又或者如何只部署应用中的某个Service?可以参考[自定义命令使用指南](./command/custom.md)
|
package/docs/zh/yaml_and_cli.md
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Yaml 模式 Cli 模式对比
|
|
2
|
-
|
|
3
|
-
Serverless Devs 开发者工具从根本上提供了两种使用方法。
|
|
4
|
-
- Yaml模式:需要依赖资源描述文档进行操作的模式
|
|
5
|
-
- Cli模式:可以在任何目录下直接执行,而不需要依赖资源描述文档;
|
|
6
|
-
|
|
7
|
-
这两者的核心区别是:
|
|
8
|
-
|
|
9
|
-
1. 如果想要使用 Yaml 模式,在当前目录下,必须要有`s.yaml`/`s.yml`文件,或通过`-t`/`--template`指定的资源部描述文件;
|
|
10
|
-
2. 如果想要试用 Cli 模式,则必须是 `s cli 组件名 方法 参数`的格式进行,此时不需要 Yaml 文件;
|
|
11
|
-
|
|
12
|
-
举一个非常简单的例子,如果有一个应用的资源描述文件`s.yaml`如下:
|
|
13
|
-
|
|
14
|
-
```yaml
|
|
15
|
-
name: myApp
|
|
16
|
-
edition: 1.0.0
|
|
17
|
-
access: "myaccess"
|
|
18
|
-
|
|
19
|
-
services:
|
|
20
|
-
website-starter:
|
|
21
|
-
component: devsapp/website
|
|
22
|
-
props:
|
|
23
|
-
bucket: testbucket
|
|
24
|
-
backend-starter:
|
|
25
|
-
component: devsapp/demo
|
|
26
|
-
props:
|
|
27
|
-
service:
|
|
28
|
-
name: serviceName
|
|
29
|
-
function:
|
|
30
|
-
name: functionName
|
|
31
|
-
region: cn-hangzhou
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
此时,可以执行`s deploy`进行`myApp`应用部署,如果执行`s backend-starter deploy`则可以进行`myApp`应用下的`backend-starter`项目/服务部署。
|
|
35
|
-
|
|
36
|
-
此时,部署过程中,所需要的相关参数,可以通过该 Yaml 文件进行读取。
|
|
37
|
-
|
|
38
|
-
但是,在某些情况下,并不方便直接使用 Serverless Devs 规范的 Yaml 文件(例如,将线上资源同步到本地,或者要将 Funcraft 的 Yaml 转换成为 Serverless Devs 的 Yaml),此时可以选择纯命令行形式,即`s cli`模式。
|
|
39
|
-
|
|
40
|
-
在 `s cli` 模式下,由于不会读取 Yaml 等资源描述文件,所以很多参数都需要自行填写,这时的填写方法有两种:
|
|
41
|
-
|
|
42
|
-
1. 通过 `s cli` 天然支持的 `-p`/`--prop` 参数,进行相关 Yaml 参数的赋值,例如上述案例的`s backend-starter deploy`,此时可以改写成:
|
|
43
|
-
```shell script
|
|
44
|
-
s cli devsapp/demo -p "{\"service\":{\"name\":\"serviceName\"},\"function\":{\"name\":\"functionName\"},\"region\":\"cn-hangzhou\"}"
|
|
45
|
-
```
|
|
46
|
-
2. 通过 demo 组件本身所支持的一些参数,例如通过`s cli devsapp/demo -h`,可以得到帮助信息,部分内容如下:
|
|
47
|
-
```shell script
|
|
48
|
-
--region [region] [C-Required] Specify the fc region, value: cn-hangzhou/cn-beijing/cn-beijing/cn-hangzhou/cn-shanghai/cn-qingdao/cn-zhangjiakou/cn-huhehaote/cn-shenzhen/cn-chengdu/cn-hongkong/ap-southeast-1/ap-southeast-2/ap-southeast-3/ap-southeast-5/ap-northeast-1/eu-central-1/eu-west-1/us-west-1/us-east-1/ap-south-1
|
|
49
|
-
--service-name [serviceName] [C-Required] Specify the fc service name
|
|
50
|
-
--function-name [functionName] [Optional] Specify the fc function name
|
|
51
|
-
```
|
|
52
|
-
此时,就可与通过下面的命令实现上述功能:
|
|
53
|
-
```shell script
|
|
54
|
-
s cli devsapp/demo --region cn-hangzhou --service-name serviceName --function-name functionName
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## 特点对比
|
|
58
|
-
|
|
59
|
-
| 模式 | 使用方法 | 优势 | 劣势 | 适用场景 |
|
|
60
|
-
| --- | --- | --- | --- | --- |
|
|
61
|
-
| Yaml模式 | 在具有符合Serverless Devs规范,且存在资源/行为描述的Yaml文件的应用目录下,执行组件对应的命令,即可直接使用,例如`s deploy`,`s servicename build`等 | 可以一键部署一个完整的应用(例如,某个应用中规定了多个Service,可以通过该命令一键部署);同时,通过资源/行为描述文档,可以更佳简单,清晰的对应用进行描述; | 需要学习Yaml的规范,且在某些时候与一些自动化流程进行结合,会比较复杂; | 部署、运维等操作,尤其是批量操作时更为合适; |
|
|
62
|
-
| 纯Cli模式 | 在任何目录下,通过子命令`cli`进行触发,同样适用全部组件,例如`s cli deploy -p "{/"function/": /"function-name/"}"`,`s cli fc-api listFunctions --service-name my-service` | 相对来说可以更加简单,快速上手工具,并且可以非常简单的与自动化流程进行结合,降低了Yaml格式/规范的学习难度 | 对于一些复杂项目而言,需要在命令行中写过多的参数,出错的概率会比较高; | 更适合项目的管理,源自化操作 |
|
|
63
|
-
|
|
64
|
-
## 设计思路
|
|
65
|
-
|
|
66
|
-
> ❓ 为什么要同时存在 Yaml 模式和 Cli 模式?
|
|
67
|
-
> 💬 因为在长期的实践过程中,我们发现通过 Yaml 进行资源描述会相对来说更简单和方便,例如 K8S 等也都是通过 Yaml 进行资源描述的;但是,在某些情况下,Yaml 文件也可能成为一种负担,例如想要查看某个服务下的函数列表,查看某个地区下的服务列表,因为这样一个简单的事情要额外的去完成一个 Yaml 文件,就显得过于臃肿,所以,在 Serverless Devs 项目中,同时保留了两种使用方法。
|
package/jest.setup.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/** @format */
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import os from 'os';
|
|
4
|
-
import core from './src/utils/core';
|
|
5
|
-
const { fse: fs, jsyaml: yaml } = core;
|
|
6
|
-
import logger from './src/utils/logger';
|
|
7
|
-
|
|
8
|
-
jestBeforeDetection();
|
|
9
|
-
|
|
10
|
-
function jestBeforeDetection() {
|
|
11
|
-
if (!detectioIsExist('.s/access.yaml')) {
|
|
12
|
-
logger.error(`Failed to execute:\n
|
|
13
|
-
❌ Message: Please install S component
|
|
14
|
-
😈 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n`);
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
if (Object.keys(getAccessFile()).length === 0) {
|
|
18
|
-
logger.error(`Failed to execute:\n
|
|
19
|
-
❌ Message: Please configure your Secret
|
|
20
|
-
😈 If you have questions, please tell us: https://github.com/Serverless-Devs/Serverless-Devs/issues\n`);
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function detectioIsExist(road) {
|
|
26
|
-
return fs.existsSync(getPath(road));
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function getAccessFile() {
|
|
30
|
-
const accessFile = getPath('.s/access.yaml');
|
|
31
|
-
const accessFileInfo = yaml.load(fs.readFileSync(accessFile, 'utf-8') || '{}');
|
|
32
|
-
return accessFileInfo;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function getPath(road) {
|
|
36
|
-
return path.join(os.homedir(), road);
|
|
37
|
-
}
|
package/spec/readme.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Serverless Devs Model(SDM)
|
|
2
|
-
|
|
3
|
-
Serverless Devs Model(SDM,下文简称SDM)的官方文档,主要用于介绍 SDM 的模型详情与相关规范。
|
|
4
|
-
|
|
5
|
-
Serverless Devs Model(SDM) 是一种与厂商 FaaS 平台无关的 Serverless 架构工具链模型,用于定义通用的 Serverless 架构工具使用标准,让开发者更专注于业务逻辑,提升 Serverless 应用开发、部署、运维效率,通过该模型,开发者可以通过一种更灵活、更通用的方法使用不同云厂商以及开源的 Serverless 产品,进而更高效、更简洁、更便利的实现 Serverless 应用管理。
|
|
6
|
-
|
|
7
|
-
## 介绍
|
|
8
|
-
|
|
9
|
-
"Serverless应用的开发人员应该更关心业务代码,而不需要更多精力去适应不同Serverless平台(包括不同厂商的开发者工具学习,不同功能的使用等)。"
|
|
10
|
-
|
|
11
|
-

|
|
12
|
-
|
|
13
|
-
### 为什么需要工具模型
|
|
14
|
-
|
|
15
|
-
就目前来看 Serverless 架构厂商锁定严重,不同厂商会有不同的工具,不同的使用途径,这使得开发者在应用开发的过程中,以及在混合云部署、运维的过程中面临了诸多困难:
|
|
16
|
-
|
|
17
|
-
- **学习难度大**:开发者要针对不同的云厂商学习不同的工具使用方法,接受不同 Serverless 平台的使用方法,包括不限于发布部署、运维、构建等众多流程;
|
|
18
|
-
- **工具扩展差**:很多 Serverless 平台提供的开发者工具,往往是由开发团队提供对应的功能,使用者仅具有使用的功能,如需进行部分的定制化能力,或拓展能力,是难以扩展的;
|
|
19
|
-
- **适配成本高**:多云部署,业务迁移是生产过程中常见的行为,由于 Serverless 架构厂商锁定严重导致多云部署、业务迁移时学习成本以及转换成本非常高;
|
|
20
|
-
|
|
21
|
-
在 Serverless Devs Model(SDM) 中,我们提出了一种以应用为中心,以组件为途径的方法:
|
|
22
|
-
|
|
23
|
-
- **应用概念优先**:该模型将会以应用纬度进行项目管理,而不再单单以资源形式进行项目管理,这将对应用的开发和定义有着更清晰的定义;
|
|
24
|
-
- **组件化功能透出**:该模型将不会提供任何与 Serverless 平台相关的功能,这些所有的功能都将会通过组件,以一种可插拔的形式对开发者透出,Serverless 开发者可以在一个应用中,同时使用多种组件,实现一个完整的应用部署,甚至可以同时实现混合云的部署;
|
|
25
|
-
- **通用功能的抽象**:该模型将会推进 Serverless 架构在不同平台下的通用功能的抽象,例如应用的构建、调试功能等都可以通过组件形式进一步抽象为更多的 Serverless 开发者提供开发支持;
|
|
26
|
-
|
|
27
|
-
:trophy: 我们的目标是:
|
|
28
|
-
|
|
29
|
-
- 开发者可以通过一套工具更简单、更方便、更快速的使用不同 Serverless 平台的产品/功能,包括不限于构建、调试、部署、运维等不同的流程或者阶段;
|
|
30
|
-
- 开发者可以以应用的视角去看到 Serverless 应用,甚至是可以通过一行命令将 Serverless 应用部署到不同的 Serverless 平台;
|
|
31
|
-
- 开发者可以非常简单的进行Onboarding的流程,可以体验一致的进行不能上层能力的抽象;
|
|
32
|
-
|
|
33
|
-
## 模型学习
|
|
34
|
-
|
|
35
|
-
模型本身由 Serverless Devs 项目驱动,并作为一组版本话 API 文档进行维护,如下所示:
|
|
36
|
-
|
|
37
|
-
- [v0.0.1 (Serverless Devs v2.x)](zh/0.0.1/readme.md)
|
|
38
|
-
|
|
39
|
-
## 社区
|
|
40
|
-
|
|
41
|
-
### 贡献
|
|
42
|
-
|
|
43
|
-
> 有关详细信息,请参阅[贡献指南](../CONTRIBUTING.md)。
|
|
44
|
-
|
|
45
|
-
针对 spec 的贡献也可以参考以下内容:
|
|
46
|
-
- 将 Serverless Devs 仓库 fork 到自己的账号/组织下;
|
|
47
|
-
- 对 spec 内容进行修改,更新,完善;
|
|
48
|
-
- 对对应版本下的`readme.md`进行更新,添加自己到`作者`->`贡献者`中;
|
|
49
|
-
- 提`Pull requests`到仓库`Serverless-Devs/Serverless-Devs`的`docs`分支下;并添加 [Anycodes](https://github.com/anycodes) 、 [hanxie](https://github.com/hanxie-crypto) 等作为Reviewers,同时在Comment中填写好更新理由;
|
|
50
|
-
|
|
51
|
-
### 会议时间
|
|
52
|
-
|
|
53
|
-
- 等待社区反馈
|
|
54
|
-
|
|
55
|
-
## 协议
|
|
56
|
-
|
|
57
|
-
Serverless Devs 是一个遵循 [MIT](../LICENSE) 协议的开源项目。
|
|
58
|
-
|
|
59
|
-
Serverless Devs 使用的 node_modules 以及其他第三方的依赖库都可能有其遵循的协议,我们推荐你阅读并了解这些协议,因为其中的条款可能和 MIT 协议中的不完全相同。
|
package/spec/zh/0.0.1/readme.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Serverless Devs Model(SDM) v0.0.1 文档
|
|
2
|
-
|
|
3
|
-
- 版本:v0.0.1
|
|
4
|
-
- 作者:
|
|
5
|
-
- 发起人:
|
|
6
|
-
- [Anycodes](https://github.com/anycodes)
|
|
7
|
-
- 贡献者:
|
|
8
|
-
- [hanxie](https://github.com/hanxie-crypto)
|
|
9
|
-
- [git-qfzhang](https://github.com/git-qfzhang)
|
|
10
|
-
- 时间:2021.9.16
|
|
11
|
-
- 内容:
|
|
12
|
-
- [Serverless Registry Model](./serverless_registry_model)
|
|
13
|
-
- [Serverless Package Model](./serverless_package_model)
|
|
14
|
-
- [Serverless User Model](./serverless_user_model)
|
|
15
|
-
|
|
16
|
-
## 简介
|
|
17
|
-
|
|
18
|
-
Serverless Devs Model(SDM) v0.0.1 文档是由 Serverless Devs 社区发起编写的第一版关于 Serverless 工具链的规范模型文档。该文档将会主要通过 Serverless 工具链体系中的 **Registry模型**,**开发工具模型**以及**用户使用模型**三个模块进行撰写。
|
|
19
|
-
|
|
20
|
-

|
|
21
|
-
|
|
22
|
-
由上图所示,Serverless Devs 的开发角色分为两部分:
|
|
23
|
-
- **Package developer**:指的是开发/贡献符合 Serverless Package Model 规范的组件或者公开的应用案例;这部分开发者通常会吧应用发布到对应的 Registry 上;
|
|
24
|
-
- **Serverless developer**:指的是 Serverless 应用的开发者,这部分开发者通过使用 Package developer 开发的公共应用案例或者引用不同的组件,将自己的应用部署到不同的 Serverless 平台,或者对应用进行不同的处理,包括不限于构建、观测、压测、调试等;
|
|
25
|
-
|
|
26
|
-
同时通过上图也可以看到两个比较明显的词汇:Component和Application:
|
|
27
|
-
- **Component**:指的是组件;是由 Package developer 开发并发布的符合 Serverless Package Model 规范的一段代码,通常这段代码会在应用中被引用,并在 Serverless Devs 开发者工具 中被加载,并按照预定的规则进行执行某些动作。例如,将用户的代码部署到 Serverless 平台;将 Serverless 应用进行构建和打包;对 Serverless 应用进行调试等;
|
|
28
|
-
- **Application**:指的是应用;可以由 Package developer 公开发布到 Registry,以供更多人学习和使用,例如某位贡献者贡献了一个猫狗识别的案例到Registry;也可以由 Serverless developer 开发,例如某人开发了一个 人脸识别的应用;通常情况下一个应用可以引用一个或者多个组件,并通过 Serverless Devs 开发者工具 工具部署到 Serverless 平台,例如我开发了一个猫狗识别的应用,在这个应用中引用了 Lambda 组件帮助我将部分业务逻辑部署到 FaaS 平台,同时我也引用了 Website 组件帮助我把前端业务代码部署到对象存储中;
|
|
29
|
-
|
|
30
|
-
通过上图,同样也可以看到 Serverless Devs Model 包含了以下三个模块:
|
|
31
|
-
|
|
32
|
-
- **Registry模型**:一个开放的 Serverless Registry Model。Package的开发者可以将自己开发的组件,或者待分享的应用发布到该平台。该平台可以使用目前 Serverless Devs 所支持的 Github Resitry, Gitee Registry, Serverless Registry,也可以按照该规范搭建私有的 Registry 以完成部分能力。详情可以参考[Registry模型文档](serverless_registry_model)
|
|
33
|
-
- **开发包模型**:一个关于 Serverless Package 的规范。Package developer 需要遵循该规范进行组件的开发或者应用的共享,否则将无法被 Serverless Devs 开发者工具 工具所识别和加载,也无法被 Application 所引用,并实现预期的功能。详情可以参考[开发包模型](serverless_pacakge_model)
|
|
34
|
-
- **用户使用模型**:Serverless developer 在进行应用开发时所需要遵守的约定,以确保 Serverless Devs 开发者工具 可以准确识别相对应的内容,并按照预期加载对应的 Component,完成预期的功能。详情可以参考[用户使用模型文档](serverless_user_model)
|
|
35
|
-
|
|
36
|
-
## 社区
|
|
37
|
-
|
|
38
|
-
### 贡献
|
|
39
|
-
|
|
40
|
-
有关详细信息,请参阅[贡献指南](../../../CONTRIBUTING.md)。
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## 协议
|
|
44
|
-
|
|
45
|
-
Serverless Devs 是一个遵循 [MIT](../../../LICENSE) 协议的开源项目。
|
|
46
|
-
|
|
47
|
-
Serverless Devs 使用的 node_modules 以及其他第三方的依赖库都可能有其遵循的协议,我们推荐你阅读并了解这些协议,因为其中的条款可能和 MIT 协议中的不完全相同。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# 概述和术语
|
|
2
|
-
|
|
3
|
-
Serverless Package Model(SPM) 是 Package 开发者所需要使用的模型,以及遵循的规范。从形态组成纬度包括应用与组件两部分;同文件树组成来看包括用于自描述的`publish.yaml`文件,以及业务代码`:
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### Package与Package Model
|
|
9
|
-
|
|
10
|
-
相对来说,Package是一个实际的产物,由规范的代码组成,目的是完成某个功能或者表示一个案例;而Package Model相对来说是抽象的存在,表示的是一种规范与规则。
|
|
11
|
-
|
|
12
|
-
- Package是由指符合 SPM 规范的代码,其目标是用来实现模型功能,包括不限于部署业务逻辑到 Serverless 平台,调试 Serverless 应用代码等;
|
|
13
|
-
- Package Model 是 Serverless Devs 的 Package 开发规范,只有按照该模型,遵循该规范的 Serverless Package 才可以被 Serverless Devs 开发者工具 所识别,并且可以成功的发布在符合 Serverless Registry Model 规范的 Serverless Registry 平台上;
|
|
14
|
-
|