插件配置规范
一、说明
每个插件都有一个名为 task.json 的描述文件 输入字段、输出字段以及启动命令,均由开发者在 task.json 中描述
描述输入字段,目的是让用户在编排流水线时,可以配置自定义的参数值,
描述输出字段,目的是让用户在编排流水线时,了解插件输出,以便在下游步骤中使用
描述启动命令,目的是让 bkci 知道如何启动插件执行
描述文件(task.json)存放在插件代码库根目录下
描述文件(task.json)内容格式为json
二、task.json数据结构详解
整体结构如下
task.json示例:
各配置项详解
atomCode
插件唯一标识,由英文字母组成,与插件初始化时指定的标识一致
值格式为字符串
execution
执行命令入口相关配置
值格式为对象
值对象包括如下属性:
属性名 | 属性说明 | 格式 | 备注 |
---|---|---|---|
packagePath | 发布包中插件执行包的相对路径 | 字符串 | 必填,包括执行包包名,执行时,下载发布包解压后,将根据此项配置找到执行包 |
language | 开发语言 | 字符串 | 必填,如python、java等,和插件初始化时指定的语言一致 |
demands | 执行依赖 | 数组 | 非必填 |
target | 执行入口 | 字符串 | 必填,一般为一个命令行可执行的命令 |
inputGroups
输入字段分组,可选,设置后,可按组展示输入字段,支持按组展开收起
值格式为数组
可设置多个分组,每个分组使用一个对象来描述,包括如下属性:
属性名 | 属性说明 | 格式 | 备注 |
---|---|---|---|
name | 分组名称 | 字符串 | 必填,配置在输入字段的groupName中,标识该字段属于哪个分组 |
label | 分组标识 | 字符串 | 必填,用户直接看到的分组名称 |
isExpanded | 是否展开 | 布尔 | 必填,是否默认展开分组 |
input
输入字段定义
值格式为对象
可配置一个或多个输入字段
每个输入字段的英文标识为key,value为对象
系统支持如下UI组件
组件type | 组件名称 | 备注 | 执行时插件后台获取到的值说明 |
---|---|---|---|
vuex-input | 单行文本框 | 字符串 | |
vuex-textarea | 多行文本框 | 字符串 | |
atom-ace-editor | 代码编辑框 | 字符串 | |
selector | 下拉框 | 只能选择,不能输入 | 字符串 |
select-input | 可输入下拉框 | 输入的值可以是下拉列表中没有的值(包括变量),选中后框里看到是的id | 字符串 |
devops-select | 可输入下拉框 | 输入的值只能是变量,选中后框里看到是name | 字符串 |
atom-checkbox-list | 复选框列表 | 字符串,如:[ "id1", "id2" ] | |
atom-checkbox | 复选框(布尔) | 字符串 | |
enum-input | 单选 | 字符串 | |
cron-timer | 时间选择器 | 字符串 | |
time-picker | 日期选择器 | 字符串 | |
user-input | 人名选择器 | 字符串 | |
tips | 提示信息 | 支持动态预览用户输入的参数,支持超链接 | 字符串 |
parameter | 不定参数列表 | 参数列表支持从接口获取 | 字符串 |
dynamic-parameter | 不定参数列表 | 支持从接口获取,支持每行多列,支持动态增删 | 字符串 |
若以上组件不满足需求,请联系 bkci 客服。
每个输入字段配置支持如下公共属性
属性名 | 属性说明 | 配置格式 | 备注 |
---|---|---|---|
label | 中文名 | 字符串 | 用于展示,允许为空(与其他字段组合的场景) |
type | 组件类型 | 字符串 | 必填,平台提供常用的输入组件,根据不同组件有不同展现 |
default | 默认值 | 根据不同组件默认值格式不一样 | 非必填 |
placeholder | placeholder | 字符串 | 非必填 |
groupName | 所属组 | 字符串 | 非必填,inputGroups 中定义的 name |
desc | 字段说明 | 字符串 | 非必填,字段说明,支持\r\n换行 |
required | 是否必填 | 布尔 | 非必填 |
disabled | 是否可编辑 | 布尔 | 非必填 |
hidden | 是否隐藏 | 布尔 | 非必填 |
isSensitive | 是否敏感 | 布尔 | 非必填,敏感信息在日志中不会展示明文 |
rely | 根据条件显示/隐藏当前字段 | 对象 | 非必填 |
rule | 值有效性限制 | 对象 | 非必填 支持如下属性: alpha: 只允许英文字符,布尔,true/false numeric: 只允许数字,布尔,true/false alpha_dash: 可以包含英文、数字、下划线、中划线,布尔,true/ false alpha_num: 可以包含英文和数字,布尔,true/false max: 字符串最大长度, int min: 字符串最小长度, int regex: 正则表达式字符串 |
rule 配置示例:
针对不同type的组件,有个性化的属性
1、单行文本框:type=vuex-input
组件属性:
inputType:当输入的字符串希望展示成******方式时使用,值为 password
示例:
配置
2、复选框(布尔):type = atom-checkbox
组件属性:
text:此时label可设置为空,对应值为true/false
示例:
配置
3、下拉框/可输入下拉框:type = selector/select-input/devops-select
组件属性:
optionsConf:下拉框属性配置
bkci服务链接,可以使用浏览器开发者助手抓取,常用的链接如下:
凭证: /ticket/api/user/credentials/{projectId}/hasPermissionList?permission=USE&page=1&pageSize=100&credentialTypes=USERNAME_PASSWORD
credentialTypes 取值参见CredentialType
代码库:/repository/api/user/repositories/{projectId}/hasPermissionList?permission=USE&repositoryType=CODE_GIT&page=1&pageSize=5000
repositoryType 取值参见ScmType
节点:/environment/api/user/envnode/{projectId}/listUsableServerNodes?page=1&pageSize=100
options:下拉框列表项定义
4、单选: type = enum-input
组件属性:
list
5、日期选择器:type=time-picker
组件属性:
startDate:时间戳,毫秒,开始日期
endDate:时间戳,毫秒,结束日期
showTime:布尔,是否显示时间
6、提示信息:tips
组件属性:
tipStr:提示信息内容模版
支持{}引用当前插件的其他变量
支持插入超链接
示例:
配置示例:
7、不定参数列表:parameter
组件属性:
paramType:数据从链接动态获取或者从定义列表中获取,可选值为:url、list
url:paramType=url时配置链接
urlQuery: 值为对象,url的参数设置 如:{"param1": "","param2": ""} param1、param2可以是当前插件的其他参数,执行时会自动替换值
parameters:参数列表,可定义一个或多个参数 每个参数包含如下属性
属性名 属性说明 格式 备注 id
该行唯一标识
字符串
该行唯一标识
key
key的值
字符串
该行参数的key
keyType
key的类型
字符串
可选值为input、select
keyListType
key数据源类型
字符串
keyType=select时有效,可选值为url、list
keyUrl
字符串
keyListType=url时生效
keyList
列表
keyListType=list时生效, 示例: [ { id: 'id', name: 'name' } ], id为key的具体值
keyDisable
是否可编辑
布尔
true、false
keyMultiple
是否可多选
布尔
true、false
value
value的值
字符串
该行参数的value
valueType
value的类型
字符串
可选值为input、select
valueListType
value数据源类型
字符串
valueType=select时有效,可选值为url、list
valueUrl
字符串
valueListType=url时生效
valueList
列表
valueListType=list时生效, 示例: [ { id: 'id', name: 'name' } ], id为value的具体值
valueDisable
是否可编辑
布尔
true、false
valueMultiple
是否可多选
布尔
true、false
8、复选框列表: type=atom-checkbox-list
组件属性:
list
9、代码编辑框:atom-ace-editor
组件属性:
bashConf
lang
10、人名选择器:user-input
组件属性:
inputType:可输入的数据类型,可选值为email 、rtx 、all
11、动态参数组件:dynamic-parameter
组件属性
执行时传给插件后台的数据示例:
[{"id":"parameterId","values":[{"id":123,"value":"3d029fbe08c011e99792fa163e50f2b5,${abc}"},{"id":1233,"value":"ab"},{"id":1235,"value":"id"}]}]
12、简化版动态参数组件:dynamic-parameter-simple
组件属性
属性名 | 属性说明 | 必填 | 格式 | 备注 |
---|---|---|---|---|
rowAttributes[N].id | 该属性的唯一ID, | 必填 | 是 | String |
rowAttributes[N].type | 可选项: ["input", "select"] | 是 | String | 当使用"select"时,需带有rowAttributes[N].options项 |
rowAttributes[N].options | 在页面上的下拉框选项 | 当rowAttributes[N].type为"select", 则为是 | Array Of Instance Option | |
rowAttributes[N].options[M].name | 在页面上的显示值 | 当rowAttributes[N].type为"select", 则为是 | String | |
rowAttributes[N].options[M].id | 实际选取的值 | 当rowAttributes[N].type为"select", 则为是 | String |
配置示例
支持的特性
根据条件显示/隐藏当前字段
配置示例:
output
输出字段定义
值格式为对象
可配置一个或多个输出字段
每个输出字段的英文标识为key,value为对象
每个输出字段定义包含如下属性:
属性名 | 属性说明 | 格式 | 备注 |
---|---|---|---|
type | 输出字段的类型 | 字符串 | 必填。支持如下三类: string:字符串 artifact:产出文件,系统将自动归档到仓库 report: 自定义报告html,系统将自动存储,渲染在产出物报告界面 |
description | 描述 | 字符串 | 非必填,说明 |
isSensitive | 是否敏感 | 布尔 | 非必填,是否为敏感信息 |
三、 输入组件配置示例
vuex-input
人名选择器
atom-checkbox
selector/select-input/devops-select
选项列表在task.json中配置
选项列表从接口获取
配置规范: 由optionsConf的url、paramId、paramName、dataPath来指定
url支持两类:
bkci 内置的服务
接入蓝鲸网关的第三方API
url返回规范: 返回json格式数据
status:操作是否成功, 0 成功,非0 失败
data:选项列表数据。支持指定所在路径,如data.detail.list
data中的选项ID和选项名称字段命名不强制,和配置中的paramId、paramName对应即可
message:当status非0时,错误信息
配置示例
atom-checkbox-list 复选框列表
time-picker 日期选择器
tips 提示信息
parameter 不定参数列表
enum-input 单选radio
四、字段根据条件显示/隐藏配置
由输入字段定义中的rely属性来指定,rely有两个属性:
operation:多条件之间的关系,与、或、非
expression:条件表达式
operation 字段支持三个值:
AND
OR
NOT
支持完全匹配,此时expression属性为:
key:字段英文名
value:字段值
支持正则,此时expression属性为:
key:字段英文名
regex: 正则表达式
示例:
当字段inputField_1值为true,且inputField_2值以.apk结尾时显示当前字段,否则隐藏当前字段
最后更新于