自定义步骤开发指南¶
YAML 文件模板¶
声明文件用于定义自定义步骤的名称、版本、参数等信息,为了更加的云原生化,应用工作台定义的 plugin 信息保持了 K8s resource 的风格,虽然目前它们不会以 CRD 的形式存在,插件的定义如下:
apiVersion: pipeline.amamba.io/v1alpha1
kind: PipelinePlugin
metadata:
name: deploy-application # required 插件的ID,只能包含小写字母、数字及分隔符("- _")
labels:
pipeline.amamba.io/category: build # 必须定义为其中一个:others,build,test,security,release,deploy,command,general,repository,quality
pipeline.amamba.io/hidden: false # 是否隐藏插件
pipeline.amamba.io/version: 1.0.0 # required 插件的版本,与 name 必须唯一
annotations:
pipeline.amamba.io/description: 部署应用到k8s集群 # 插件的描述
pipeline.amamba.io/versionDescription: 修复了xxx问题 # 插件的版本描述
pipeline.amamba.io/icon: 插件的图标 # 图标链接
spec:
image: "docker.m.daocloud.io/amambadev/jenkins-agent-base:v0.3.2-podman" # required 插件的基础镜像,必须是公网镜像,并且不需要登录
entrypoint: "" # 可以自定义入口脚本, 本质上是替换 --entrypoint
shell: "/bin/bash"
script: "kubectl apply -f ." # required 需要在容器中执行的脚本
params: # required
- name: namespace # required 必须唯一
sort: 2 # 参数展示的顺序
uiType: NamespaceSelector
type: string
uiConfig:
displayName: "命名空间"
placeholder: "namespace"
tips: "应用部署的命名空间"
helper: "未找到命名空间?请前往全局管理配置"
validate:
required: true
requiredMessage: "命名空间不能为空"
pattern: ^[a-zA-Z0-9_-]+$
patternMessage: "命名空间只能包含字母,数字,下划线和中划线"
minLength: 1
maxLength: 64
immutable: false # 是否可修改
default: "my-namespace" # 默认值
options:
- label: 默认
value: default
env: NAMESPACE # 存在env这个属性则将env的值作为环境变量的key传递到插件,否则按照name的值传递
dependProperties: # 属性依赖,如 namespace 字段依赖于 cluster 字段,给前端交互使用
cluster: cluster
namespace: namespace
参数介绍¶
属性名 | 含义 | 示例 |
---|---|---|
name | 参数名称 | cluster |
type | 参数类型 | 支持 string,int,bool,float,array, map |
env | 对应环境变量的值,没有此字段则默认与 name 相同 | CLUSTER_NAME |
validate | 参数的校验规则 | {} |
uiConfig | ui 页面上的一些选项 | {} |
dependProperties | ui 上的属性依赖项 | 比如namespace依赖于cluster, 给前端交互使用 |
dependProperties 依赖参数介绍¶
因为某些参数之间存在着依赖关系,例如 namespace 依赖于 cluster,为了更好的 UI 交互体验,可以在 dependProperties 中添加属性依赖项说明, 那么前端会自动根据 uiType 以及dependProperties来动态获取数据进行交互。dependProperties 是一个 map 结构, key 是前端在组件中会使用到的参数,value 是在 params 中定义的参数名称,可以声明多个依赖项。
依赖项举例¶
NamespaceSelector:
params:
- name: cls
uiType: ClusterSelector
- name: namespace
uiType: NamespaceSelector
dependProperties:
cluster: cls # key是前端在组件中会使用到的参数,value是在params中定义的参数名称*
WorkloadSelector:
params:
- name: cls
uiType: ClusterSelector
- name: namespace
uiType: NamespaceSelector
dependProperties:
cluster: cls
- name: workloadType
uiType: Select
- name: workloadName
uiType: WorkloadSelector # 级连依赖于cluster,namespace,workloadType属性*
dependProperties:
cluster: cls
namespace: namespace
workloadType: workloadType
ContainerSelector:
params:
- name: cls
uiType: ClusterSelector
- name: namespace
uiType: NamespaceSelector
dependProperties:
cluster: cls
- name: workload_type
uiType: Select
- name: workloadName
uiType: WorkloadSelector
dependProperties:
cluster: cls
namespace: namespace
workloadType: workloadType
- name: containerName
uiType: ContainerSelector
dependProperties:
cluster: cls
namespace: namespace
workloadType: workload_type
workloadName: workloadName
validate 参数校验规则介绍¶
required: true # 是否必填
requiredMessage: '必须填写' # 必填时的提示信息
pattern: '*' # 合法的正则表达式
patternMessage: '不匹配' # 正则表达式不匹配时的提示信息
min: 0 # 最小值,合法的数字
max: 1 # 最大值,合法的数字,需要 > min
minLength: 64 # 最小长度
maxLength: 64 # 最大长度
integer: true # 是否为整数
immutable: false # 是否可修改,false 代表可以修改,true 代表不可修改,
default: 'cluster1' # 默认值
options:
- label: '集群1' # 针对下拉框
value: 'cluster1'
uiConfig 参数介绍¶
uiConfig 必须是预定义的类型,主要是一些 ui 展示上的配置项:
UI 参数预定义类型及使用场景如下:
UI 类型 | 参数类型 | 说明 | 依赖项说明 |
---|---|---|---|
Text | string | 大文本输入框 | |
Shell | string | Shell 高亮输入框 | |
Yaml | string | YAML 高亮输入框 | |
Input | string | 输入框,单行文本 | |
Select | string | 下拉框,与参数定义中的 options 配合使用 | |
Radio | string | 单选框 | |
Switch | bool | 开关 | |
Password | string | 密码 **** | |
Number | int | 数字输入框 | |
ImageInput | string | 镜像选择器 | |
ClusterSelector | string | 集群选择器 | |
NamespaceSelector | string | 命名空间选择器 | 依赖于 cluster 属性 |
CredentialSelector | string | 凭证选择器 | |
WorkloadSelector | string | 工作负载选择器 | 依赖于 cluster、namespace、workloadType 属性 |
ContainerSelector | string | 容器选择器 | 依赖于 cluster、namespace、workloadType、workloadName 属性 |
Strings | array | 字符串数组 | |
Numbers | array | 数字数组 | |
KV | map | kv 键值对结构,如环境变量 | |
Ignore | bool | 不展示此字段 | |
CPUNumber | float | CPU 数量输入框 | |
MemoryNumber | float | 内存数量输入框 |