1 建木中节点的理解
在建木系统中,节点可以理解为一个步骤,比如单元测试、编译、发布、测试、部署等步骤,每个步骤就可以理解为一个节点,因为每个步骤做的事不同,因此节点也是不同的,但是在建木中,将节点划分为内置节点和自定义节点,内置节点包括开始节点、结束节点、shell节点、网关节点,他们的作用分别如下
- 开始节点:标志流水线的开始
- 结束节点:标志流水线的结束
- shell节点:即可以执行shell命令的docker容器
- 网关节点:即当遇到分支的时候决定写一个步骤使用哪个节点的节点
2 开始节点的定义
start:
targets:
- test_step
type: start
其中:
- targets:表示下一步骤要执行的节点,比如这里是test_step,当然这里也可以是多个,因此是列表的形式
- type:类型必须是start
3 结束节点的定义
end:
sources:
- deploy
type: end
其中:
- sources:表示上一步骤执行的节点,也可以是多个节点,因此也是列表的形式,比如这里是deploy节点
- type:类型必须是end
4 shell-node节点定义
image: 指定镜像,这里镜像是指docker镜像,即只要在dockerhub上存在的镜像即可,必填
environment: 定义环境变量,会在容器内转译成大写的环境变量。如: aaa 在容器内可通过 AAA 环境变量调用,非必填
script: 定义Shell命令,非必填,可使用上面定义的环境变量
示例如下:
shell-node:
image: alpine:3.13.6
script:
- cd /home/
- ls
其中:
shell-node:为节点的名称,可以自定义
5 网关节点
网关节点又分为并发网关节点和条件网关节点
- 并发网关节点
(1)如下图所示:start有两个下游节点,此两个节点即可以并发执行,end上游有两个节点,此两个节点也是可以并发执行的,以你次这里的start和end就被称为并发网关节点
(2)通过sources定义多个上游节点
end:
sources:
- feishu_notice_post1
- feishu_notice_post2
type: end
(3)通过targets定义多个下游节点
start:
targets:
- git_clone1
- git_clone2
type: start
- 条件网关节点
(1)如下,condition节点即如果condition为true,则执行上面的节点,如果为false则执行下面的节点,这种就是条件网关节点
(2)定义语法如下:
condition:
sources:
- start
type: condition
expression: ${event.number}>100
cases:
true: feishu_notice_post1
false: feishu_notice_post2
其中:${event.number}为事件参数,也可以为常量或其他参数