# EazyBuilder **Repository Path**: wangyi_1998/EazyBuilder ## Basic Information - **Project Name**: EazyBuilder - **Description**: EazyBuilder是一套完整的云原生架构下DevOps平台工程。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-07-23 - **Last Updated**: 2024-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 欢迎来到 EazyBuilder 项目! EazyBuilder是一套完整的云原生架构下DevOps平台工程。 首先,EazyBuilder是一个事件驱动的编排引擎,基于 Kubernetes 自主设计、研发的开源分布式DevOps平台产品,它降低了持续交付流水线的复杂度;具备灵活易用,安全可靠的流水线、健全的变更管理体系,全链路的双向可追溯,小巧智能的审批流,云原生的 IDE 插件,它将云原生应用中的各种操作联系起来,提供插拔式对接,并将过程数据度量化、客观精确的效能洞察,为企业提供统一的DevOps协作平面,让其更加轻松便捷的管理云原生基础架构上的应用,落地DevOps文化,从而更高效地开发和发布高质量的,安全的软件。 其次,EazyBuilder提供了整合云原生架构下DevOps工具链的能力,提供众多云原生工具平台的外置插件,支持用户通过插件配置,自由组合,即可实现将自己正在使用的工具平台,整合成一个完整的DevOps平台。让用户能更加容易获得云厂商在计算、存储、网络上的技术基础能力,能让使用云的成本更低。 EazyBuilder并不是一套DevOps工具链组合包,也不是一套快速启动DevOps工具的脚本命令,EazyBuilder关注的是DevOps各个工具之间的串联,例如:向Gitlab代码仓库提交代码,触发Jenkins自动构建的流水线,EazyBuilder提供的是Gitlab与Jenkins之间的耦合剂,用户将自己已有的Jenkins Url,Gitlab Url,装配进EazyBuilder,就可以实现两个工具之间的串联。EazyBuilder要做的,是帮助用户将交付过程中的所有操作,都绑定到一个一致的自助服务体验中,而不是让每个人什么操作都做,并不需要操作者了解整个DevOps工具链。 综上,EazyBuilder的目标是解决用户在云原生架构下整合DevOps平台时,外部工具与已有工具平台的平衡问题。通过云原生技术的运用和整合,打造极致简约、高效易用的云原生工作平台,规范开发流程,简化开发难度,提高开发效率,增强代码质量, 支撑软件开发整个生命周期(开发,单元测试,集成测试,文档,生产发布,配置等), 提供完整的云原生开发生态环境和生态体系,让企业快速拥抱云原生,提升研发效能,进而反哺云原生市场。 # 特性与优势 ## 特性 ### **轻便安全的高效率流水线** 事件驱动,支持通配符,对不同的代码分支,配置不同的事件类型,触发不同的流水线。操作步骤简单,无需熟悉流水线脚本语法,可视化编排,快速创建高效流水线;不依赖于三方工具,使用模块化设计,解决流水线共享复用问题。基于角色提供细粒度的访问控制、单点登录和审计功能,记录每个用户的操作内容,流水线变更历史,满足用户的安全需求。内置丰富预警手段,对流水线状况进行全方位监控,主动发送异常日志,通过数据驱动流水线持续改进。 image - **灵活易用**:仅需提供工程SVN/GIT 资源库信息,即可体验从打包构建、单元测试、覆盖率扫描、质量漏洞扫描、构件仓库推送、自动部署全过程标准化处理; - **精准提醒**:流水线过程和扫描报告,代码提交与合并,支持邮件、钉钉等方式实时推送,支持精准订阅配置; - **集成方式丰富**:支持Webhook、定时自动构建、事件或通过OpenAPI集成和触发持续集成流水线; - **插件增强**:质量、漏洞扫描以及其他扩展的流水线步骤均基于自动化插件装饰和增强技术,对源码工程无额外的插件安装、配置文件或是目录结构要求,对构建产出物无影响; - **可视化编排**:开关式的流水线可视化编排方式,内置构建、测试、部署等常见CI过程的大量处理模板,支持快速定制和扩展持续集成流水线; - **弹性资源调度**:支持构建机负载均衡、K8S弹性调度,支持较大规模的并行构建处理和资源调度需求,充分利用硬件资源; - **主流开发框架支持**:兼容主流Java,C#以及前端开发的工程代码编译构建和发布模式;支持Docker镜像仓库、Maven仓库和NPM仓库推送; - **项目质量监控**:全方位掌握流水线运行过程中扫描的各类工程质量指标数据,可自定义质量门禁、红灯修复提醒,同时支持自定义统计分析维度,提供在线质量报表或邮件报表。 ### **友好的云原生环境** 分钟级环境复制,提供开箱即用的云原生插件,例如:redis,mongodb,rabbitmq,mysql。使用标准k8s yaml管理基础中间件,易于扩展,使用便捷。 image ### **全方位的自动化测试保障** 内置了sonarqube,jmeter,liqiubase等质量管控工具,以安全为准绳,将安全检测(代码审查、分析、测试等)移动到软件开发生命周期早期阶段,从而更高效地开发和发布高质量的,安全的软件。 image image ### **全生命周期的双向可追溯** EazyBuilder从需求创建,代码开发,自动化测试,到最终的上线部署,设置了丰富的埋点,可在研发全生命周期任何一个环节,做到双向可追溯,整合了云原生开发中的海量消息,避免了信息孤岛。 image image ### **多维度的度量监控平台** EazyBuilder采用四横两纵的维度,分别从产品,研发,测试,部署维度,以及研发人员,项目管理人员的维度,提供精准客观全面的效能度量数据,满足不同角色不同的管理要求,精准分析研发效能短板,促进稳步提升。 image image image image image ### **云原生 IDE 插件** 开发者无需平台切换,在 IDE 中即可获得 EazyBuilder 产品核心能力。编写代码后,即可实现代码质量扫描,自动编译打包,一键热部署到自测环境,快速完成自测、联调和集成验证,开发效率倍增。 # **入门** - Eazybulider包含一个前端与一个后端应用,代码目录分别为:eazybuilder-web,eazybuilder-server #### Docker安装 - Docker版本: 1.13.0+ - EazyBuilder镜像已经发布至[Docker Hub](https://hub.docker.com/ "Docker Hub"); 可以直接使用EazyBuilder官方镜像 - 自主构建镜像 生成镜像:docker-compose build - 启动应用 docker-compose up -d 使用默认编排文件:[dockercompose/docker-compose.yml](./dockercompose/docker-compose.yml) 访问http://localhost/console/index.html 即可 #### Kubernetes安装 参照详情教程进行安装:[k8s/README.md](./k8s/README.md) - 构建机器 EazyBuilder中流水线执行,依耐于jenkins,需要提前在jenkins中初始化构建环境,详情可以参照[jenkins dockerfile](./eazybuilder-server/thridparty/jenkins/src/main/docker/Dockerfile) # **贡献** 欢迎贡献者加入 EazyBuilder 项目。请查看[CONTRIBUTING](./CONTRIBUTING.md)以了解如何为这个项目做出贡献。 ## 范围 ### 适用范围 EazyBuilder 旨在解决快速简便的创建CI流水线。因此,该项目将实施或已经实施: * [构建资源管理] * [可视化流水线编排] * [流水线共享复用] * [流水线监控预警] * [事件驱动的流水线] * [消息预警] * [OpenAPI集成支持] ### 超出范围 EazyBuilder 将在云原生环境中与其他工具一起使用。因此,将不包含以下特定功能: * [容器资源管理] * [质量规约集成] * [代码托管] * [自动化测试] * [需求管理] * [制品管理] # **联系我们** -「欢迎大家关注eazybuilder,在使用中遇到问题,可以加群讨论」 - **欢迎加入交流群。您可以扫描下方微信二维码,邀请您入群。请注明加入eazybuilder** image # **资源** 每个版本的最新文档可在以下位置找到: - [EazyBuilder 1.0.0](./doc/referencebook/v1.0.0/referencebook_cn.md) # **下载** - [Github Release](https://github.com/iSoftStoneGroup/EazyBuilder/releases) # **许可** 请参阅[许可证](./LICENSE)以获取更多信息。 ## 准则 我们遵循[CNCF行为准则](./CODE_OF_CONDUCT.md). ## 路线图 image ## 路线图设计详情 ### 流水线管理 #### 可视化流水线编排 后端使用freemark模板,将每种构建,固化成模板,前端使用开关项,用户自己选择构建内容,录入关键信息,后端将数据填充进模板后,生成完成的jenkins pipeline脚本,调用jenkins api,执行流水线 #### 流水线一键创建(Java,C#,JavaScript) 将固定的配置,全部抽象出来,让用户只需要录入代码仓库地址,就能自动创建一条流水线 #### 流水线的审计,回滚 流水线被修改后,后台进行记录,存储进历史表,可以对比任意两个版本的流水线差异,可以指定流水线回滚到任意版本 #### 集成Kubernetes自动部署 使用kubectl+kubeconfig的方式,平台集成kubectl,用户可以在每条流水线中,指定不同的kubeconfig文件,在流水线中使用kubectl --kubeconfig的方式管理k8s集群,以此实现k8s的跨集群,跨环境管理 #### 集成Sonarqube,实现在平台中直接查看技术债 - 方式一:调用sonarqube api,查询工程代码的质量详情 - 方式二:直接查询sonarqube的表,查询工程代码的质量详情 #### 集成jmeter,实现在流水线中触发自动化测试脚本 平台集成jmeter插件,用户在构建开关中,打开“自动化测试”的开关,并指定自动化测试脚本所在的目录位置,流水线直接执行jmeter命令,运行自动化测试 ### 构建资源管理 #### 构建资源自动利用与回收 使用Jenkins Kubernetes Agent插件,流水线运行时,自动在k8s集群创建一个pod,流水线运行完毕,自动删除pod #### 自助交互式流水线编排,用户按需定制流水线包含的构建步骤 用户自定义事件,例如:代码提交,代码合并。每一类事件,让用户选择不通的流水线,这样可以对不同的项目工程,不同环境,制定不同的流水线 ### 配置文件管理 对接nacos api,用户把配置文件也放在代码仓库后,配置文件变更后,触发对应的流水线,在流水线中调用nacos,更新nacos中的配置文件 ### 数据库脚本管理 对接liqiubase,使用liqiubase作为sql管理平台 ### 质量安全管理 #### LDAP登录验证 集成ldap功能,可以使用ldap用户登录 #### 流水线门禁卡控 用户在系统中配置门禁的阈值,例如:BUG阻断不大于5;提交代码后,在流水线中执行代码质量扫描,收集sonarqube的扫描结果,与系统设置的质量阈值做判断,不符合,就将流水线至为失败,中止后续的流程 #### 集成Gitlab,MR自动审核 对接gilab api,当项目工程代码符合质量门禁时,自动创建合并请求,自动合并到集成分支 #### 提交代码注释规范强卡控 在gitlab中设置钩子,校验提交代码的注释,在注释中,必须包含合法的任务id,不符合规范,则禁止提交代码 #### 消息预警配置化 设计一个预警配置页面,允许用户自己订阅消息类型,例如:代码提交/合并,流水线成功/失败;消息发送形式,可以采用钉钉,邮件,微信 ### 研发流程管理 #### 流水线预警 设计一个红灯修复开关,用户可以在流水线中打开,并且配置预警的时间间隔,次数,如果流水线失败,就发送红灯修复预警,这样可以让开发人员关注一些高危流水线,及时修复开发集成问题 #### 集成Redmine/禅道,建立流水线与需求任务的追溯关系 - 集成需求管理平台,目前考虑对接Redmine和禅道,开发人员提交代码,注释里面必须包含任务id(需求管理平台中的) - 流水线运行完成后,将运行结果发送到需求管理平台(通过调用api),自动将内容追加到任务下面的进展中,自动更新需求管理平台的任务状态 #### 流水线审批流,实现提测,上线,部署的审批 对不同环境的流水线,做权限控制,设计审批流,审批完成后,自动做制品晋级,测试/生产环境部署 #### 钉钉审批流对接,实现在钉钉中完成流水线的工作流转 对接钉钉审批流,涉及到审批的功能,都由钉钉来做审批 #### 流水线集成Grafana度量报表 集成Grafana,将平台的过程数据,制作Grafana报表,不同的角色,可以看到不同的度量报表 #### IDE插件 发布IDE插件,开发人员可以在本地运行插件,一键部署自测环境