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 类似,抽象层级不是特别高