模板语言调研
CODING 插件系统参数界面自动生成原理
在流水线中选择插件时会调用接口获取插件参数variables
数组,结果如下:
help: "请使用 制品名称:Tag 定义镜像,确保本步骤执行前构建环境中存在此镜像。"
label: "推送镜像"
name: "image"
placeholder: "my-image:1.1.0"
required: true
type: "text"
前端遍历type
字段,根据预设好的模板生成相应的input
界面
插件参数variables
来源于编写参数时填写的描述文件
KubeVela 从定义中生成表单原理
在KubeVela 中定义的CRD,链接,会自动生成OpenAPI v3 JSON schema,并存在ConfigMap 中
渲染表单时,取出JSON定义,使用前端开源组件react-jsonschema-form
直接生成相应UI即可
CUE 的使用其实就是定义模板,通过CUE 语法的灵活强大性,把复杂的yaml封装起来,通过parameter 定义参数(如下),生成最终需要的文件
parameter: {
image: string
replicas: int
}
Jsonnet、GCL、HCL
Jsonnet 语法更简单,是JSON 语法的扩展,可以输出为yaml
CUE 更关注语法的校验,Jsonnet 更关注数据模版(样板代码移除),CUE最大的特点是有类型
GCL 和 HCL 类似,抽象层级不是特别高