From c0ece13aa8f0b952748e28ca2dadfcbf5a3e1e07 Mon Sep 17 00:00:00 2001 From: "shao.jiacheng" Date: Tue, 13 Jul 2021 16:59:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E6=A1=A3=EF=BC=9A?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- guide/custom-node.md | 131 ++++++++++++++++++++++++- guide/images/self_definition_point.png | Bin 0 -> 31283 bytes 2 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 guide/images/self_definition_point.png diff --git a/guide/custom-node.md b/guide/custom-node.md index 70068d0..8e8381c 100644 --- a/guide/custom-node.md +++ b/guide/custom-node.md @@ -1,3 +1,132 @@ # 自定义节点 +当节点库中的节点定义不满足场景需求时,用户可以通过自定义节点满足使用需求。 -暂缺 \ No newline at end of file +用户可通过以下步骤使用自定义节点: +1. 创建自定义节点 +2. 上传自定义节点到节点库 +3. 流程中引用自定义节点 + +### 如何创建自定义节点 +用户可创建自定义的节点定义dsl文件,来实现节点的自定义。 + +样例: +``` +name: hello jianmu +description: 输入指定语言类型,在控制台输出“你好,建木”的对应翻译,并返回 +owner: jianmu +source: https://gitee.com/jianmu-examples/hello-jianmu +docs: https://gitee.com/jianmu-examples/hello-jianmu +ref: hello_jianmu +version: latest +resultFile: /tmp/return_hello +type: DOCKER +inputParameters: + - ref: hello_language + name: 指定翻译的语言 + type: SECRET + value: Chinese +outputParameters: + - ref: return_hello + name: “你好,建木”翻译后的结果 + type: STRING + value: 你好,建木 +spec: + image: 'jianmudev/hello-jianmu:latest' + cmd: + - /tmp/hello + entrypoint: + - /bin/sh + - '-c' +``` + +定义说明: +``` +name: 节点定义名称,必填 +description: 节点定义描述 +owner: 节点所有者 +source: 节点定义源码链接,可以在hub界面通过"源码"按钮跳转 +docs: 节点定义的文档链接,可以在hub界面通过"源码"按钮跳转 +ref: 节点定义的平台内部标识,必填 +version: 节点定义的版本,必填 +resultFile: 返回文件的路径,若定义了返回参数outputParameters,则必填。 +type: 节点类型,当前只支持docker +inputParameters: 输入参数 + ref: 参数标识,会在容器内转译成'JIANMU_'开头并大写的环境变量。(如:hello_language在容器内可通过$JIANMU_HELLO_LANGUAGE调用) + name: 变量名称 + type: 变量类型,支持STRING类型和SECRET类型 + STRING: 若变量类型为STRING,可直接填写值或引用其他变量 + SECRET: 若变量类型为SECRET,需要调用平台密钥,具体用法详见密钥管理章节 + value: 变量默认值,若调用该节点定义时没有指定该变量的值,将会使用此默认值 +outputParameters: 输出参数,定义节点指定的返回值,需要在"resultFile"指定的文件内填写对应的json数据,key为输出参数的ref值。 +spec: 镜像相关信息 + image: 指定该节点定义使用的容器镜像,执行时,平台将会从dockerhub拉取指定镜像版本,必填。 + cmd: list格式,指定容器运行时的command内容 + entrypoint: list格式,指定容器运行时的entrypoint内容 +``` + +### 如何上传自定义节点到节点库 +创建完任务定义的dsl文件后,可根据节点库中的`publish`节点创建流程推送该节点到节点库。具体用法可查看节点库`publish`节点的文档说明。以下为流程dsl样例: +``` +workflow: + name: 发布节点定义“hello-jianmu” + ref: publish_hello_jianmu_task + description: 这是一个发布自定义节点的流程定义样例 + Start: + type: start + targets: + - Clone + Clone: + type: git:v1.0 + sources: + - Start + targets: + - Publish + param: + workspace: hello-jianmu + remote_url: https://gitee.com/jianmu-examples/hello-jianmu.git + commit_branch: master + Publish: + type: hub_publish:v1.0 + sources: + - Clone + targets: + - End + param: + registry_url: https://hub.jianmu.dev + task_dsl_file: hello-jianmu/task.dsl + hub_appkey: ((jianmuhub.appkey)) + End: + type: end + sources: + - Publish +``` + +执行成功后,可查看节点库界面,可以看到自定义节点已经推送成功。 +![self_definition_point](./images/self_definition_point.png) + + +### 如何在流程中使用自定义节点 +自定义节点上传成功后,可在流程中通过ref:version指定该节点。 +``` +workflow: + name: 样例——使用自定义节点 + ref: example_hello_jianmu + description: 这是一个使用自定义节点的流程样例 + Start: + type: start + targets: + - Hello_Jianmu + Hello_Jianmu: + type: hello_jianmu:latest + sources: + - Start + targets: + - End + param: + hello_language: Chinese + End: + type: end + sources: + - Hello_Jianmu +``` +详细用法可参照[`流程定义`](flow-dsl.md)章节。 diff --git a/guide/images/self_definition_point.png b/guide/images/self_definition_point.png new file mode 100644 index 0000000000000000000000000000000000000000..b49f9f9c0bd3084c42aaf9d79598f31f4fb4c9fe GIT binary patch literal 31283 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 literal 0 HcmV?d00001 -- Gitee