DevLake

PRs Welcome Discord badge Go Report Card

English中文

什么是 DevLake?

DevLake 将你所有 DevOps 工具里的数据以实用、个性化、可扩展的视图呈现。通过 DevLake,从不断增加的工具列表中收集、分析和可视化数据。

DevLake 适用于希望更好地通过数据了解其开发过程的开发团队,以及希望以数据驱动提升自身实践的开发团队。有了 DevLake,你可以向你的开发过程提出任何问题,只要连接数据并查询。

查看 Demo

用户名/密码: test/test。Demo里呈现的数据来自本仓库 merico-dev/lake。

开始安装 DevLake

DevLake 可以完成什么?

  1. 归集 DevOps 全流程效能数据,连接数据孤岛
  2. 标准的研发数据模型和开箱即用的效能指标
  3. 灵活的数据收集、ETL的框架,支持自定义分析

用户安装

  • 如果你只打算运行 DevLake,你只需要阅读这一小节
  • 本节描述了 2 种安装方式,本地安装Kubernetes安装
  • 如果你想在云端安装 DevLake,你可以参考安装手册,点击 完成安装
  • 写成 这样 的命令需要在你的终端中运行

部署到本地

需要安装的软件包

注:安装完 Docker 后,你可能需要运行 Docker 应用程序并重新启动你的终端

在你的终端中运行以下命令

IMPORTANT(新用户可以忽略): DevLake暂不支持向前兼容。当 DB Schema 发生变化时,直接更新已有实例可能出错,建议已经安装 DevLake 的用户在升级时,重新部署实例并导入数据。

  1. 最新版本列表 下载 docker-compose.ymlenv.example

  2. env.example 重命名为 .env。Mac/Linux 用户请在命令行里运行 mv env.example .env 来完成修改

  3. 启动 Docker,然后运行 docker-compose up -d 启动服务

  4. 访问 localhost:4000 来设置 DevLake 的配置文件

    • 在 Integrations 页面上找到你想要导入的数据源
    • 了解如何配置每个数据源:
      Jira
      GitLab
      Jenkins
      GitHub
    • 提交表单,通过点击每个表单页面上的Save Connection按钮来更新数值。
    • devlake需要一段时间才能完全启动。如果config-ui提示 API 无法访问,请等待几秒钟并尝试刷新页面。
  5. 访问 localhost:4000/pipelines/create,创建 1个Pipeline run,并触发数据收集

    Pipeline Runs 可以通过新的 “Create Run”界面启动。只需启用你希望运行的数据源,并指定数据收集的范围,比如Gitlab的项目ID和GitHub的仓库名称。

    一旦创建了有效的 Pipeline Run 配置,按Create Run来启动/运行该 Pipeline。 Pipeline Run 启动后,你会被自动转到Pipeline Activity界面,以监控采集活动。

    Pipelines可从 config-ui 的主菜单进入。

    • 管理所有Pipeline: http://localhost:4000/pipelines
    • 创建Pipeline Run: localhost:4000/pipelines/create
    • 查看Pipeline Activity: http://localhost:4000/pipelines/activity/[RUN_ID]

    对于复杂度较高的用例,请使用Raw JSON API进行任务配置。使用cURL或图形API工具(如Postman)手动启动运行。POST以下请求到DevLake API端点。

    [
      [
        {
          "Plugin": "github",
          "Options": {
            "repo": "lake",
            "owner": "merico-dev"
          }
        }
      ]
    ]
    

    请参考这篇 wiki How to trigger data collection.

  6. 数据收集完成后,点击配置页面左上角的 View Dashboards 按钮或者访问 localhost:3002,访问 Grafana (用户名: admin, 密码: admin)

    我们使用 Grafana 作为可视化工具,为存储在我们数据库中的数据建立图表。可以使用SQL查询,添加面板来构建、保存和编辑自定义仪表盘。

    关于配置和定制仪表盘的所有细节可以在 Grafana 文档 中找到。

设置 Cron job

为了定期同步数据,我们提供了lake-cli以方便发送数据收集请求,我们同时提供了cron job以定期触发 cli 工具。

部署到 Kubernetes 环境

你也可以选择将 DevLake 部署到 Kubernetes 集群。这个操作只有一个前提条件,就是你有一套可以用的 Kubernetes 集群,并且确保本地 kubeconfig 配置正确。接着执行如下命令完成部署:

kubectl apply -f https://raw.githubusercontent.com/merico-dev/lake/main/k8s-deploy.yaml

接下来的设置与上一节 docker-compose 方式部署一致,需要注意的点是由于 Kubernetes 默认 NodePort 端口范围的限制,所以:

  1. DevLake 的 4000 端口需要通过 30004 访问
  2. Grafana 的 3000 端口需要通过 30002 访问

开发者安装

前期准备

  • Docker
  • Golang
  • Make
    • Mac (Already installed)
    • Windows: Download
    • Ubuntu: sudo apt-get install build-essential

如何设置开发环境

  1. 进入你想安装本项目的路径,并克隆资源库

    git clone https://github.com/merico-dev/lake.git
    cd lake
    
  2. 安装插件依赖

  3. 安装 go packages

    	go get
    
  4. 将样本配置文件复制到新的本地文件

    cp .env.example .env
    
  5. .env文件中找到以DB_URL开头的那一行,把mysql:3306替换为127.0.0.1:3306

  6. 启动 MySQL 和 Grafana

    确保在此步骤之前 Docker 正在运行。

    docker-compose up -d mysql grafana
    
  7. 在 2 个终端种分别以开发者模式运行 lake 和 config UI:

    # run lake
    make dev
    # run config UI
    make configure-dev
    
  8. 访问 config-ui localhost:4000 来配置 DevLake 数据源

    • 在 “Integration”页面上找到到所需的插件页面
    • 你需要为你打算使用的插件输入必要的信息
    • 请参考以下内容,以了解如何配置每个插件的更多细节 -> Jira -> GitLab -> Jenkins -> GitHub
  9. 访问 localhost:4000/pipelines/create,创建 1个Pipeline run,并触发数据收集

    Pipeline Runs 可以通过新的 “Create Run”界面启动。只需启用你希望运行的数据源,并指定数据收集的范围,比如Gitlab的项目ID和GitHub的仓库名称。

    一旦创建了有效的 Pipeline Run 配置,按Create Run来启动/运行该 Pipeline。 Pipeline Run 启动后,你会被自动转到Pipeline Activity界面,以监控采集活动。

    Pipelines可从 config-ui 的主菜单进入。

    • 管理所有Pipeline: http://localhost:4000/pipelines
    • 创建Pipeline Run: http://localhost:4000/pipelines/create
    • 查看Pipeline Activity: http://localhost:4000/pipelines/activity/[RUN_ID]

    对于复杂度较高的用例,请使用Raw JSON API进行任务配置。使用cURL或图形API工具(如Postman)手动启动运行。POST以下请求到DevLake API端点。

    [
      [
        {
          "Plugin": "github",
          "Options": {
            "repo": "lake",
            "owner": "merico-dev"
          }
        }
      ]
    ]
    

    请参考这篇 wiki How to trigger data collection.

  10. 数据收集完成后,点击配置页面左上角的 View Dashboards 按钮或者访问 localhost:3002(用户名: admin, 密码: admin)

    我们使用 Grafana 作为可视化工具,为存储在我们数据库中的数据建立图表。可以使用SQL查询,添加面板来构建、保存和编辑自定义仪表盘。

    关于配置和定制仪表盘的所有细节可以在 Grafana 文档 中找到。

  11. (可选)运行测试:

    make test
    

项目路线图

  • 2022年路线图: 2022年的目标和路线图
  • DevLake 已经支持的数据源:
    • Jira(Cloud)
    • Git
    • GitHub
    • GitLab(Cloud)
    • Jenkins
  • 已经支持的指标: 为观测和分析提供不同的视角

贡献

本节列出了所有与共建 DevLake 相关的文档

社区

  • Discord: 在 Discord 上给我们发消息
  • FAQ: 常见问题汇总

License

此项目的许可证为 Apache License 2.0 - 查看 许可证 详情。