网易首页 > 网易号 > 正文 申请入驻

开源 DevOps 工具《建木》实践

0
分享至

新钛云服已累计为您分享724篇技术干货

一. 建木介绍

1.建木简介

第一次听说”建木“是建木的一个发起人谈到,这名字听着感觉有新意,但当时不甚了解,后来查了相关资料,才有所认识。摘录官网一条介绍:

“建木”是上古先民崇拜的一种圣树,传说建木是沟通天地人神的桥梁。伏羲、黄帝等众帝都是通过这一神圣的梯子上下往来于人间天庭。《淮南子·墬形训》亦曰 :“建木在都广,众帝所自上下。日中无景,呼而无响,盖天地之中也。”

DevOps 是从需求到研发、到落地的一种自动化和平台设计的一种理念,是沟通过程中各个阶段的桥梁,作为 DevOps 落地工具的”建木“,取之其名甚妙也。

2.初试建木

知道建木这个 DevOps 工具后,决定在实际项目中试一试,翻了一遍建木的文档,把建木给安装上了,开始使用。

开始使用时,低代码的配置方式,让 ”Hello world“ 起来非常方便。但要更进一步的时候,却感觉无从下手了,对比自己熟悉的 Jenkins 来,时间紧张的项目工期还是迫使自己放弃进一步尝试。

于是虽然一直在建木社区群里,只是长期潜水。

3.再试建木

虽然没有在项目落地建木,但也对建木持续关注着,看着出品方一个个版本的发布,感觉功能越来越强大了、也更加有吸引力了,总想着什么时候再来一探究竟。

近期公司要上一新项目,DevOps 工具首选自然还是 Jenkins,但想到 Jenkins 配置的繁琐,心里嘀咕着,决定试一下建木,看看这个传说中北半球第二好用的 DevOps 工具,到底能给工作带来怎样的体验。

于是,开始进一步的实践尝试。

二. 建木实践

1.建木的安装

建木的安装极其方便,官方提供 Docker 镜像,支持 docker-compose 和 kubernetes 部署,一键完成。

2.开始使用

建木的界面非常简洁,运行的插件采用了 Docker 化的底层支持,省掉了一堆麻烦的插件安装和配置的过程。

下面就用建木最新版本 v2.6.2 本地化部署,以一个简单的 maven 构建过程作为演示流程,介绍一下建木的入门级使用。

01

主界面

非常简洁的主界面。

02

密钥管理

配置流程前,可以将一些常用的变量、密钥配置到”密钥管理“中,建木除了默认的密钥存储方式外,也支持对接 vault 进行存储,安全性有了进一步的保障。

配置界面如下:

03

流程配置

点击主界面的”图形项目“图标,进入流程配置界面。

页面左边为执行节点,官方提供了比较丰富的节点库,社区也有大量有心人士提供的节点。

选择 ”git clone“ 节点,拖拽到页面中间的配置区,点击节点图标,页面右侧出现该节点的配置项,按需要填写节点配置信息。

再增加一个 "maven构建" 节点,在两个节点间建立连接,选择节点相关的 JDK 版本后,再配置相关参数,保存后返回。

一个流程就这样创建完成了。

上面的流程,可以用 DSL 语法实现同样的配置:0


name: workflow测试description: ""global:concurrent: falsepipeline:node_0:alias: git clonetype: _/git_clone:1.2.5param:username: ((tisvc_key.git_username))password: ((tisvc_key.git_password))remote_url: http://gitlab.tyun.cn/tyun/tiops-agent.gitref: refs/heads/mastercommit_id: ""depth: 1node_1:alias: maven构建type: _/maven_build:1.3.1-jdk11param:workspace: ${node_0.git_path}/srcmvn_action: packageextra_arge: ""nexus_username: adminnexus_password: "123456"maven_public_id: publicmaven_public_url: https://maven.aliyun.com/repository/publicmaven_release_id: releasemaven_release_url: ""maven_snapshot_id: snapshotmaven_snapshot_url: ""docker_username: jianmudevdocker_password: "123456"image_name: imagenameimage_tag: latestvc_pom_dir: .

04

流程执行

在主界面点击流程的”触发“按钮,触发流程执行,进入流程执行信息界面后,可以查看每个节点执行的输出日志。

这样,一个简单的流程采用了更加简单的配置过程,就这么简单地实现了。

在建木中,除了采用图形项目的方式外,也可采用代码项目的方式,使用 DSL 描述语法,来创建 DevOps 流程,除了创建的方法不同外,执行的逻辑是完全相同的。

三. 深入探索

1.遇到一个问题

在当前项目实际使用中,因目前处于开发阶段,对于 DevOps 流程来说,模块的拆分及更新,希望流程也能拆分来实施。

建木 Docker 化的节点运行方式,是其优点,也是其有些不适应的地方,就从上面演示流程中的 "git clone" 和 "maven 构建" 节点来说:

01

“git clone” 节点本地存储采用的是 Docker 临时创建的目录,该目录在同一条流水线中可以共享,但流程结束后该目录也会被清理,在多模块拆分流程的情况下,每一次执行都需要全部重新 clone;

“maven构建” 节点每一次构建后的中间文件和结果文件,随着流程的结束消失了,这样每次构建都需要从头构建;

02

03

“maven构建” 本地缓存目录设置在 Docker 中,节点运行结束后容器也就结束,每一次构建都需要从 maven 远程仓库重新拉取依赖包。

上面的问题,在频繁执行流程的时候,不好的感觉就会被放大。于是去社区寻求答案,但在开源社区看到技术团队有明确表示对类似问题暂时不考虑,从官方寻求支持就比较困难了。

2.如何解决

在使用的过程中,发现如果要实现持久化共享目录的话,有一个方法是采用 “SSH执行命令” 节点,但这样所有的流程都转化为 shell 脚本问题,显然不是好的解决方案,也无法体现建木在流程方面的优势了。

从 gitee 拉取了建木的源码,分析建木的几个模块后,确认流程的执行主要是由三个模块完成:jianmu-ci-server、jianmu-worker-docker、runner节点,那实现目录共享可以从这三个模块入手。于是计划在 DSL 描述语法的 spec 区域,增加一个对 runner 节点 VolumeMount 的支持。

动手修改了 jianmu-ci-server、jianmu-worker-docker的代码,在发布测试 runner 节点的时候,没有通过 DSL 语法的校验,尝试失败,此路不通。

上面的路走不通了,但是路还是要走的, 最终决定用比较直接的方法,修改 jianmu-worker-docker 模块,为 runner 节点增加一条 /workspace:/workspace 的目录映射,代码如下:

// 挂载 /workspace 目录,以存放希望在流程中持久化的文件config.Mounts = append(config.Mounts, mount.Mount{Type: mount.TypeBind,Target: "/workspace",Source: "/workspace",

这样每一个 runner 节点都能有一个本地主机的目录映射,达到了目录共享持久化的目的,至于具体 runner节点 的使用,则由 runner 节点自行支持了。

针对上面遇到的问题,在官方的 “git clone” 和 “maven构建” runner 节点的基础上,添加了两个自定义节点,增加了对 /workspace 目录的使用。

四. 小结

通过在项目中对建木的使用,感觉建木在设计上是非常符合 DevOps 理念的,并且通过简单的配置或者简洁的 DSL 语法,就可以满足工作中的流程需求,相较于 Jenkins 的使用,非常便利,适合上手、适合上头。

但目前建木还处于成长期,有些功能还不是很完善,希望技术团队能继续努力,为 DevOps 领域带来功能更加强大、使用更加便捷的落地工具。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
太突然了!雄鹿裁掉托马斯!这可是NBA超级得分手

太突然了!雄鹿裁掉托马斯!这可是NBA超级得分手

篮球实战宝典
2026-03-24 09:10:46
39人落网!中方追回走私稀土,价值46个亿,美国砸重金收买内鬼

39人落网!中方追回走私稀土,价值46个亿,美国砸重金收买内鬼

阿凫爱吐槽
2026-03-24 03:53:45
市监局的“间歇性失明”:不曝光,麻醉鱼、毒草莓就不存在?

市监局的“间歇性失明”:不曝光,麻醉鱼、毒草莓就不存在?

爆角追踪
2026-03-24 10:17:26
特斯拉国内即将迎来重大更新,六项新功能来了!

特斯拉国内即将迎来重大更新,六项新功能来了!

XCiOS俱乐部
2026-03-24 12:05:09
中国石化:当前成品油库存能够保障生产经营稳定 已制定多套预案

中国石化:当前成品油库存能够保障生产经营稳定 已制定多套预案

新京报
2026-03-23 17:44:06
通牒48小时已过,美伊到底谈没谈?

通牒48小时已过,美伊到底谈没谈?

极目新闻
2026-03-24 10:15:05
古代皇帝的龙袍禁止水洗,那脏了臭了咋办?真是贫穷限制咱的想象

古代皇帝的龙袍禁止水洗,那脏了臭了咋办?真是贫穷限制咱的想象

铭记历史呀
2026-03-24 08:08:14
国际观察丨再陷越战式泥潭?军事专家详解美对伊地面作战风险

国际观察丨再陷越战式泥潭?军事专家详解美对伊地面作战风险

澎湃新闻
2026-03-24 01:25:09
“廉价的女留子,就是这种下场”,现状被15万人围观,看清了现实

“廉价的女留子,就是这种下场”,现状被15万人围观,看清了现实

妍妍教育日记
2026-03-23 20:50:12
用户真实投票说话!上汽大众途昂 Pro获“2025微博年度卓越车型”

用户真实投票说话!上汽大众途昂 Pro获“2025微博年度卓越车型”

车哆哩
2026-01-28 16:05:48
江浙沪父母的反向家用火了!网友:家里供不起你上班了!

江浙沪父母的反向家用火了!网友:家里供不起你上班了!

阿离家居
2026-03-22 06:42:50
记者:给姆巴佩拍核磁共振搞错膝盖,皇马解雇了整个医疗团队

记者:给姆巴佩拍核磁共振搞错膝盖,皇马解雇了整个医疗团队

懂球帝
2026-03-24 09:32:45
以总统刚开完发布会 火箭弹击中附近

以总统刚开完发布会 火箭弹击中附近

财联社
2026-03-24 13:28:06
万斯政治生涯已死!

万斯政治生涯已死!

低调看天下
2026-03-24 09:16:11
特朗普发推前15分钟 交易员押注5.8亿美元 做空原油

特朗普发推前15分钟 交易员押注5.8亿美元 做空原油

每日经济新闻
2026-03-24 09:58:48
楼上打工楼下透析续命!广州一制衣工厂超半数工人是尿毒症患者,老板:我做的是一件小事

楼上打工楼下透析续命!广州一制衣工厂超半数工人是尿毒症患者,老板:我做的是一件小事

上观新闻
2026-03-24 07:29:07
伊朗19岁摔跤冠军被绞刑处决画面曝光:蒙眼绑双手 行刑者戴头套

伊朗19岁摔跤冠军被绞刑处决画面曝光:蒙眼绑双手 行刑者戴头套

念洲
2026-03-24 08:32:16
OpenClaw危了?Claude Code迎来最激进升级:AI 开始直接操控电脑,正面挑战 OpenAI

OpenClaw危了?Claude Code迎来最激进升级:AI 开始直接操控电脑,正面挑战 OpenAI

InfoQ
2026-03-24 13:36:16
突发重伤!穆迪膝盖骨头疑爆裂突出!太恐怖了,转播信号直接切断!

突发重伤!穆迪膝盖骨头疑爆裂突出!太恐怖了,转播信号直接切断!

贵圈真乱
2026-03-24 13:27:00
陕西清山队捡垃圾遭挑衅后续:手指逼退志愿者,燕镜男底裤被扒

陕西清山队捡垃圾遭挑衅后续:手指逼退志愿者,燕镜男底裤被扒

奇思妙想草叶君
2026-03-23 18:53:26
2026-03-24 13:52:49
新钛云服
新钛云服
云管理服务专家
461文章数 30关注度
往期回顾 全部

科技要闻

苹果WWDC26全球开发者大会官宣6月9日开幕

头条要闻

媒体:特朗普有些"着急"了 结束战争的意图非常强烈

头条要闻

媒体:特朗普有些"着急"了 结束战争的意图非常强烈

体育要闻

客场大胜+火箭输球,马刺提前锁定本赛季西南赛区冠军

娱乐要闻

林峰张馨月全家浙江游 岳母帮忙带女儿

财经要闻

很多人,都被黄金吓怕了!

汽车要闻

我行我素的豪华 全新一代雷克萨斯更犀利了

态度原创

亲子
健康
家居
艺术
公开课

亲子要闻

孩子睡觉经常醒,重点关注这3个问题

转头就晕的耳石症,能开车上班吗?

家居要闻

智慧生活 奢享家居

艺术要闻

第四届深圳大芬国际油画双年展 | 国际入选油画选刊(三)

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版