DevLake 是怎样跑起来的

本文介绍了DevLake,一个DevOps数据收集和整合工具,通过Grafana展示开发流程数据。文章详细讨论了DevLake的架构,系统启动过程,任务执行原理,包括Pipeline、Task的运行流程,以及插件子任务的执行步骤。DevLake支持Github、Gitlab、JIRA等数据源,并使用Mysql和PostgreSQL作为RMDBS。文章还强调了DevLake中重要的接口和类,如PluginMeta、PluginTask、SubTaskMeta等。
摘要由CSDN通过智能技术生成

本文作者:@ warrenchen

GitHub 地址:https://github.com/warren830

DevLake 是一个DevOps数据收集和整合工具,通过 Grafana
为开发团队呈现出不同阶段的数据,让团队能够以数据为驱动改进开发流程。

1. DevLake 架构概述

  • 左边是可集成的 DevOps 数据插件,目前已有的插件包括 Github,Gitlab,JIRA,Jenkins,Tapd,Feishu 以及思码逸主打的代码分析引擎
  • 中间是主体框架,通过主体框架运行插件中的子任务,完成数据的收集,扩展,并转换到领域层,用户可以通过 config-ui 或者 api 调用的形式来触发任务
  • RMDBS 目前支持 Mysql 和 PostgreSQL,后期还会继续支持更多的数据库
  • Grafana 可以通过sql语句生成团队需要的各种数据

file

接下来我们就详细聊一聊系统是怎么跑起来的。

2. 系统启动

在我们的 golang 程序启动之前,首先会自动调用各个 package 的 init() 方法,我们主要看看services 包的载入,下面的代码有详细注释:

go
func init() {
        var err error
        // 获取配置信息
        cfg = config.GetConfig()
        // 获取到数据库
        db, err = runner.NewGormDb(cfg, logger.Global.Nested("db"))
        // 配置时区
        location := cron.WithLocation(time.UTC)
        // 创建定时任务管理器
        cronManager = cron.New(location)
        if err != nil {
                panic(err)
        }
        // 初始化数据迁移
        migration.Init(db)
        // 注册
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值