3 Star 5 Fork 3

软通动力信息技术(集团)股份有限公司 / EazyBuilder

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

欢迎来到 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; 可以直接使用EazyBuilder官方镜像

  • 自主构建镜像

    生成镜像:docker-compose build

  • 启动应用

    docker-compose up -d

    使用默认编排文件:dockercompose/docker-compose.yml

访问http://localhost/console/index.html 即可

Kubernetes安装

参照详情教程进行安装:k8s/README.md

  • 构建机器

    EazyBuilder中流水线执行,依耐于jenkins,需要提前在jenkins中初始化构建环境,详情可以参照jenkins dockerfile

贡献

欢迎贡献者加入 EazyBuilder 项目。请查看CONTRIBUTING以了解如何为这个项目做出贡献。

范围

适用范围

EazyBuilder 旨在解决快速简便的创建CI流水线。因此,该项目将实施或已经实施:

  • [构建资源管理]
  • [可视化流水线编排]
  • [流水线共享复用]
  • [流水线监控预警]
  • [事件驱动的流水线]
  • [消息预警]
  • [OpenAPI集成支持]

超出范围

EazyBuilder 将在云原生环境中与其他工具一起使用。因此,将不包含以下特定功能:

  • [容器资源管理]
  • [质量规约集成]
  • [代码托管]
  • [自动化测试]
  • [需求管理]
  • [制品管理]

联系我们

-「欢迎大家关注eazybuilder,在使用中遇到问题,可以加群讨论」

  • 欢迎加入交流群。您可以扫描下方微信二维码,邀请您入群。请注明加入eazybuilder
image

资源

每个版本的最新文档可在以下位置找到:

下载

许可

请参阅许可证以获取更多信息。

准则

我们遵循CNCF行为准则.

路线图

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插件,开发人员可以在本地运行插件,一键部署自测环境

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

EazyBuilder是一套完整的云原生架构下DevOps平台工程。 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/isoftstoneGroup/EazyBuilder.git
git@gitee.com:isoftstoneGroup/EazyBuilder.git
isoftstoneGroup
EazyBuilder
EazyBuilder
master

搜索帮助