建木项目介绍:无代码/低代码DevOps工具
建木(Jianmu)是一个面向DevOps领域的开源无代码/低代码工具,旨在通过图形化界面和GitOps方式简化DevOps流程的编排与执行。文章将从核心功能、技术架构、实现方式及典型应用场景四个方面展开,展示其如何降低DevOps门槛并提升自动化效率。
建木项目的核心功能与定位
建木(Jianmu)是一个面向DevOps领域的开源无代码/低代码工具,旨在通过图形化界面和GitOps方式简化DevOps流程的编排与执行。其核心功能与定位围绕以下几个方面展开:
1. 无代码/低代码编排
建木通过图形化界面(无代码)和GitOps(低代码)两种方式,帮助用户快速构建和部署复杂的DevOps流程。用户无需编写大量脚本或代码,即可完成流程的编排。
2. 多平台执行
建木支持将编排好的流程分发到不同的执行平台(如Kubernetes、Docker等),实现跨平台的自动化执行。这种灵活性使其适用于多样化的DevOps场景。
| 执行平台 | 支持情况 |
|---|---|
| Kubernetes | ✅ |
| Docker | ✅ |
| 本地服务器 | ✅ |
3. 事件驱动架构
建木采用事件驱动架构(EDA),通过事件的发布与订阅实现流程的动态响应。例如,任务状态变更、流程启动等事件均可触发后续操作。
4. 丰富的节点类型
建木提供了多种节点类型(如任务节点、网关节点、循环节点等),支持复杂的流程逻辑。用户可以通过组合这些节点实现高度定制化的流程。
// 示例:定义一个异步任务节点
public class AsyncTask {
private String name;
private String ref;
private Set<TaskParameter> taskParameters;
// 其他属性和方法
}
5. 参数化与动态配置
支持全局参数和任务参数的动态配置,用户可以通过表达式语言(如EL)实现参数的动态绑定和计算。
6. 扩展性与集成能力
建木通过模块化设计支持功能扩展,用户可以自定义节点类型或集成第三方工具(如Jenkins、GitHub Actions等)。
7. 核心定位
建木的核心定位是降低DevOps门槛,通过无代码/低代码的方式让非开发人员也能参与DevOps流程的设计与执行,同时为开发人员提供高度灵活的扩展能力。
通过以上功能与定位,建木成为一款适用于企业级DevOps场景的高效工具,兼顾易用性与灵活性。
项目架构与技术栈分析
建木(Jianmu)是一个面向DevOps领域的无代码/低代码工具,其架构设计和技术栈选择充分体现了现代DevOps工具的高效性和可扩展性。以下是对其架构和技术的详细分析。
技术栈概览
建木项目采用了前后端分离的架构,后端基于Java生态,前端基于Vue3和TypeScript。以下是主要技术栈的总结:
| 技术领域 | 主要技术栈 |
|---|---|
| 后端 | Java 11+, Spring Boot, Spring Security, JWT, MySQL 8+, Docker, Kubernetes |
| 前端 | Vue3, TypeScript 4+, Vite, Pinia, Element Plus |
| DevOps工具链 | Docker Compose, Kubernetes, GitOps |
| 数据库 | MySQL 8+ |
| 认证与授权 | JWT, OAuth2 |
后端架构分析
后端采用模块化设计,核心模块包括:
- API模块:提供RESTful接口,处理前端请求。
- Workflow Core:流程引擎核心库,负责流程编排与流转。
- Worker模块:任务执行器,支持分布式任务调度。
- Event模块:基于Spring事件机制,处理异步任务和流程事件。
- Security模块:集成Spring Security和JWT,实现认证与授权。
核心组件
- 流程引擎:支持图形化编排和GitOps两种方式定义流程。
- 任务调度:支持异步任务、定时任务和手动触发任务。
- 事件驱动:通过Spring事件机制实现任务状态变更和流程流转。
- 认证与授权:基于JWT和OAuth2,支持多租户和第三方登录。
代码示例
以下是一个典型的流程事件处理器实现:
@Async
@EventListener
public void handleTaskRunningEvent(TaskRunningEvent event) {
// 处理任务运行事件
log.info("Task {} is running", event.getTaskId());
}
前端架构分析
前端基于Vue3和TypeScript,采用模块化设计,主要功能模块包括:
- 流程编排:图形化拖拽界面,支持节点定义和流程设计。
- 任务管理:展示任务状态、日志和结果。
- 项目管理:支持项目创建、同步和触发。
- 权限管理:基于角色的访问控制(RBAC)。
核心组件
- Vue3:提供响应式UI和组件化开发。
- Pinia:状态管理库,替代Vuex。
- Vite:构建工具,支持快速开发和热更新。
- Element Plus:UI组件库,提供丰富的交互组件。
代码示例
以下是一个简单的任务状态展示组件:
<template>
<el-tag :type="getStatusType(task.status)">
{{ task.status }}
</el-tag>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
props: {
task: {
type: Object,
required: true,
},
},
methods: {
getStatusType(status: string) {
switch (status) {
case 'RUNNING': return 'warning';
case 'SUCCESS': return 'success';
case 'FAILED': return 'danger';
default: return 'info';
}
},
},
});
</script>
架构图
以下是建木项目的简化架构图:
总结
建木的技术栈和架构设计充分体现了现代DevOps工具的需求:
- 模块化:前后端分离,功能模块清晰。
- 可扩展:支持插件化和分布式部署。
- 高效性:基于事件驱动的异步任务处理。
- 易用性:提供无代码和低代码两种方式,满足不同用户需求。
无代码与低代码的实现方式
建木项目通过无代码(图形化)和低代码(GitOps)两种方式,为用户提供了灵活且高效的DevOps流程编排能力。以下将详细介绍这两种实现方式的核心机制和技术细节。
无代码(图形化)实现方式
无代码方式通过图形化界面(GUI)让用户通过拖拽和配置完成复杂的DevOps流程编排。这种方式极大地降低了技术门槛,适合非开发人员快速上手。
核心组件
-
工作流设计器:
- 基于Vue3和TypeScript实现,支持拖拽式节点编排。
- 内置多种节点类型(如任务、触发器、条件分支等),用户可通过可视化界面完成流程设计。
-
节点配置:
- 每个节点支持动态表单配置,用户无需编写代码即可完成参数设置。
- 配置数据以JSON格式存储,便于后续解析和执行。
{ "type": "async-task", "name": "部署应用", "params": { "image": "nginx:latest", "ports": ["80:80"] } } -
实时预览与验证:
- 工作流设计器支持实时预览和校验,确保流程逻辑正确。
- 内置校验规则,如节点依赖关系、参数合法性等。
技术实现
- 前端框架:Vue3 + TypeScript,提供响应式UI和高效渲染。
- 图形库:基于X6和G6实现节点拖拽和连线功能。
- 状态管理:Pinia管理全局状态,确保配置数据的同步更新。
低代码(GitOps)实现方式
低代码方式通过GitOps模式,允许用户通过编写YAML或JSON文件定义DevOps流程,适合开发人员和高级用户。
核心特性
-
流程定义文件:
- 用户通过YAML或JSON文件定义工作流,提交到Git仓库后自动触发执行。
- 文件结构清晰,支持版本控制和协作。
name: CI Pipeline triggers: - type: git_push branch: main tasks: - name: Build type: docker_build params: image: my-app - name: Deploy type: k8s_deploy params: namespace: production -
Git集成:
- 支持与Git平台(如Gitee、GitHub)无缝集成,自动监听代码变更。
- 通过Webhook触发流程执行,实现真正的GitOps。
-
脚本扩展:
- 用户可通过自定义脚本扩展功能,满足特定需求。
- 脚本支持多种语言(如Shell、Python),灵活性强。
技术实现
- 后端服务:基于Spring Boot实现,处理Git事件和流程调度。
- Git Hook:通过Webhook监听代码变更,触发流程执行。
- 执行引擎:内置任务调度器,支持并行和串行执行。
对比与适用场景
| 特性 | 无代码(图形化) | 低代码(GitOps) |
|---|---|---|
| 技术门槛 | 低 | 中 |
| 灵活性 | 中等 | 高 |
| 适用人群 | 非开发人员 | 开发人员 |
| 适用场景 | 简单流程快速搭建 | 复杂流程定制化 |
通过无代码和低代码的结合,建木项目为用户提供了全面的DevOps解决方案,无论是快速搭建还是深度定制,都能满足需求。
典型应用场景与案例
建木作为一个无代码/低代码的DevOps工具,其设计初衷是为了简化复杂的DevOps流程编排和执行。以下是一些典型的应用场景和案例,展示了建木在实际项目中的灵活性和强大功能。
1. 持续集成与持续部署(CI/CD)
建木可以轻松实现从代码提交到部署的自动化流程,特别适合需要频繁发布的项目。通过图形化界面或GitOps方式,用户可以快速定义构建、测试和部署的流程。
示例流程:
关键功能:
- 触发器支持:支持Git提交、定时任务、Webhook等多种触发方式。
- 多环境部署:支持测试、预发布、生产等多环境的自动化部署。
- 并行任务:可以并行执行多个任务,提高效率。
2. 数据流水线处理
建木可以用于构建复杂的数据处理流水线,例如ETL(提取、转换、加载)流程。用户可以通过图形化界面定义数据来源、转换逻辑和目标存储。
示例流程:
关键功能:
- 灵活的数据源支持:支持数据库、API、文件等多种数据源。
- 自定义转换逻辑:支持通过脚本或内置节点定义数据转换逻辑。
- 错误处理:支持失败重试和告警通知。
3. 自动化测试流水线
建木可以用于构建自动化测试流水线,包括单元测试、集成测试和端到端测试。测试结果可以自动汇总并通知相关人员。
示例流程:
关键功能:
- 多测试框架支持:支持JUnit、TestNG、Selenium等多种测试框架。
- 测试报告生成:自动生成测试报告并存储。
- 失败重试:支持失败测试的自动重试。
4. 定时任务调度
建木支持定时任务的调度和执行,适合需要定期执行的任务,如数据备份、日志清理等。
示例流程:
关键功能:
- 灵活的定时配置:支持Cron表达式定义复杂的定时规则。
- 任务依赖:支持任务之间的依赖关系定义。
- 执行日志:记录任务执行日志,便于排查问题。
5. 多平台任务分发
建木支持将任务分发到不同的执行平台,例如Kubernetes集群、Docker容器或物理服务器。
示例流程:
关键功能:
- 多平台支持:支持Kubernetes、Docker、SSH等多种执行方式。
- 资源管理:支持动态分配和释放资源。
- 任务监控:实时监控任务执行状态。
通过以上案例可以看出,建木在多个场景下都能提供高效、灵活的解决方案,帮助用户简化DevOps流程,提高开发和运维效率。
总结
建木项目通过无代码/低代码设计、多平台执行能力及事件驱动架构,为CI/CD、数据流水线、自动化测试等场景提供高效解决方案。其模块化技术栈和图形化/GitOps双模式,兼顾了易用性与灵活性,成为企业级DevOps的理想工具。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



