「开源」CI服务,自动化构建-测试-发布工作流,高质量地交付产品

一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

「开源」CI服务,自动化构建-测试-发布工作流,高质量地交付产品

一、开源项目简介

bk-ci是一个免费并开源的CI服务,可助你自动化构建-测试-发布工作流,持续、快速、高质量地交付你的产品。

二、开源协议

使用MIT开源协议

三、界面展示

「开源」CI服务,自动化构建-测试-发布工作流,高质量地交付产品

四、功能概述

使用bk-ci屏蔽掉所有研发流程中的繁琐环节,让你聚焦于编码。它通常被用于:

  • 工程编译
  • 静态代码检查
  • 运行测试用例,及时发现BUG
  • 部署与发布

bk-ci提供了流水线、代码检查、代码库、凭证管理、环境管理、研发商店、编译加速 7 大核心服务,多重组合,满足企业不同场景的需求:

  • 流水线:将团队现有的研发流程以可视化方式呈现出来,编译、测试、部署,一条流水线搞定
  • 代码检查:提供专业的代码检查解决方案,检查缺陷、安全漏洞、规范等多种维度代码问题,为产品质量保驾护航。
  • 代码库:将企业内已有的代码托管服务关联至bk-ci
  • 凭证管理:为代码库、流水线等服务提供不同类型的凭据、证书管理功能
  • 环境管理:可以将企业内部的开发编译机托管至bk-ci
  • 研发商店:由流水线插件和流水线模板组成,插件用于对接企业内部的各种第三方服务,模板助力企业内部的研发流程规范化
  • 编译加速:基于蓝鲸自研加速引擎,支持C/C++编译、UE4 代码编译、UE4 Shader 编译等多场景下的加速,让构建任务飞起来

Features

  • 持续集成和持续交付: 由于框架的可扩展性,bk-ci既可以用作简单的CI场景,也可以成为企业内所有项目的持续交付中心
  • 所见即所得: bk-ci提供了灵活的可视化编排流水线,动动指尖,将研发流程描述与此
  • 架构平行可扩展: 灵活的架构设计可以随意横向扩容,满足企业大规模使用
  • 分布式: bk-ci可以便捷的管控多台构建机,助你更快的跨多平台构建、测试和部署
  • 流水线插件: bk-ci拥有完善的插件开发体系,其具备了低门槛、灵活可扩展等特性
  • 流水线模板: 流水线模板将是企业内部推行研发规范的一大助力
  • 代码检查规则集:沉淀团队的代码要求,并能跨项目共享和升级

五、技术选型

蓝鲸持续集成平台(BK-CI)架构设计

「开源」CI服务,自动化构建-测试-发布工作流,高质量地交付产品

蓝鲸持续集成平台(简称bk-ci )是基于 kotlin/java/js/go/lua/shell等多种语言编写实现的,采用完全前后分离,插件式开发,具备高可用可扩展的服务架构设计:

  • 前端&接口网关(WebAPI Gateway & FrontEnd) :
    • WebAPI Gateway: 由OpenResty负责,包含了对接用户登录及身份鉴权,和后端API的Consul服务发现转发的lua脚本及Nginx配置
    • FrontEnd: 基于VUE的纯前端工程,包含一序列的js,img和html等静态资源。
  • 后端服务(MicroService BackEnd): 基于Kotlin/Java编写,采用SpringCloud框架的微服务架构设计,以下按各微服务模块的启动顺序介绍:
    • Project: 项目管理,负责管理流水线的项目,多个模块依赖于此。
    • Log: 构建日志服务,负责接收构建的日志的转发存储和查询输出。
    • Ticket: 凭证管理服务,存储用户的凭证信息,比如代码库帐号密码/SSL/Token等信息。
    • Repository: 代码库管理服务,存储用户的代码库,依赖于Ticket的联动。
    • Artifactory: 制品构件服务,该服务只实现了简化版的存取构件功能,可扩展对接自己的存储系统。
    • Environment: 构建机服务,导入构建机以及用环境管理构建机集群用于构建调度的并发。
    • Store: 研发商店服务,负责管理流水线扩展插件和流水线模板功能,包括插件&模板升级上下架,与process和artifactory联动。
    • Process: 流水线管理,负责管理流水线以及流水线编排调度功能的核心服务。
    • Dispatch: 构建(机)调度,负责接收流水线的构建机启动事件,分发给相应构建机处理。
    • Plugin: 服务的插件扩展服务,目前为空,主要是用于提供给后续扩展一些与前端页面联动的后台服务,比如对接各类CD平台,测试平台,质量检查平台等等,与前端页面配置,想象空间很大。
  • 资源服务层(Resource): 包括提供存储和必须的基础中间件等。
    • Storage(存储服务): 存储服务/中间件等一序列依赖的基础环境。
      • MySQL/MariaDB: bk-ci的主数据库存储,可用mysql 5.7.2 /mariadb 10.x存储以上所有微服务的关系型数据。
      • Redis: 核心服务缓存,3.x版本,缓存构建机信息和构建时的信息和提供分布式锁操作等等。
      • ElasticSearch: 日志存储,log模块对接ES来对构建的日志做存取。
      • RabbitMQ: 核心消息队列服务,bk-ci的流水线事件机制是基于RabbitMQ来流转事件消息的。
      • FileSystem: 这块主要为artifactory提供服务,用于存储插件,构建产物等二进制文件服务,可对接文件或者云存储类,扩展在artifactory服务模块。
      • Consul: 作为微服务的服务发现Server,需要搭建Consul Server, 以及在bk-ci微服务部署的所在机器上同时安装Consul并以 Agent方式运行。 组建集群可以直接用bk-ci微服务部署机器(2台)上直接以consul server和agent方式直接启动,以减少对机器数的需求。
    • Agent(构建机): 构建机是负责运行CI打包编译构建的一台服务器/PC,是由比如go,gcc,java,python,nodejs等等编译环境依赖,再加上运行由bk-ci提供编写实现的两部分服务进程:
      • Agent: 由Golang编写实现,分DevopsDaemon和DevopsAgent两个进程 :DevopsDaemon: 负责守护和启动DevopsAgent。DevopsAgent: 负责与DispatchEnvironment微服务通信,负责整个Agent的升级和Worker(任务执行器) 进程的启动和销毁工作。
      • Worker: 由Kotlin编写实现,是一个命名为agent.jar的文件,,任务真正的执行者。被DevopsAgent通过jre来拉起运行,之后会负责与Process微服务模块通信,领取插件任务并执行和上报结果(Log&Process)。

BK-CI 的设计理念

在技术架构上,bk-ci自研了一套持续集成框架和流水线引擎,目的是增强平台安全性、稳定性和可扩展性,保证服务的高可用。

  • 我们把研发体系中需要的每个单独功能抽离成一个微服务,通过分解巨大单体式应用为多个服务方法来分解复杂模块,这样就保证了每个服务相对简单,结构清晰,方便测试;
  • 微服务体系还会对接企业内其他团队的服务,每一个服务都可以加入到bk-ci中为整个研发体系提供服务;
  • 可以水平的动态扩展子服务,遇到性能瓶颈时可以弹性的增加子服务来满足业务需求;
  • 一个微服务的异常不会导致其它微服务同时异常。通过隔离、融断等技术可以避免极大的提升微服务的可靠性;
  • 微服务还可以保证我们每个子服务可以独立部署和灰度,加快后台服务的迭代,使平台本身的持续交付成为可能。

部署目录说明

部署的目录遵循蓝鲸运营规范,这里举例以/data/bkee 作为主目录,用户可以自行更换,比如叫/a/b 都可以。目录层次多,需要仔细看,具体如下:

|- /data/bkee  # 蓝鲸根目录
  |- ci      # ci部署程序目录
  |- etc       # 蓝鲸配置文件总目录
    |- ci    # ci配置文件目录

具体说明下以下章节。

1.1 ci部署目录

|- /data/bkee/ci       # 程序主目录
  |- agent-package       # 提供下载的agent的安装包位置
  |- frontend            # 存放的前端发布的静态资源目录
  |- gateway             # 网关配置文件及lua脚本
  |- project             # 一共有10个微服务目录,不一一列举了
    |- project.sh        # project微服务启动脚本
    |- boot-project.jar  # Project微服务的SpringBoot.jar

1.2 ci配置文件目录

|- /data/bkee/etc   # 蓝鲸配置文件总目录
  |- ci 				  # ci配置文件目录
    |- common.yml   # 所有微服务通用配置
    |- application-project.yml  # project微服务的配置,有10个微服务配置,如有增加微服务也放此处

基础环境部署

2.1 系统要求

  • CentOS 7.X
  • jdk: 1.8
  • gradle: 6.7
  • redis: 2.8.17
  • mysql 5.7
  • es: 7.4
  • rabbitmq: 3.7.15 rabbitMQ 安装文档
  • Consul 1.0+ Consul安装

BlueKing Community

  • BK-BCS:蓝鲸容器管理平台是以容器技术为基础,为微服务业务提供编排管理的基础服务平台。
  • BK-CMDB:蓝鲸配置平台(蓝鲸CMDB)是一个面向资产及应用的企业级配置管理平台。
  • BK-JOB:蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。
  • BK-PaaS:蓝鲸PaaS平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理SaaS应用。
  • BK-SOPS:蓝鲸标准运维(SOPS)是通过可视化的图形界面进行任务流程编排和执行的系统,是蓝鲸体系中一款轻量级的调度编排类SaaS产品。

六、源码地址

访问一飞开源:https://code.exmay.com/

开源   CI
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章