Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development data


Dev Lake

PRs Welcome Discord badge Go Report Card

English 中文

What is Dev Lake?

Dev Lake is the one-stop solution that integrates, analyzes, and visualizes software development data throughout the software development life cycle (SDLC) for engineering teams.

Dev Lake Grafana Dashboard

Dashboard Screenshot


Dev Lake Grafana Dashboard

User Flow

Why Dev Lake?

  1. Unifies data from multiple sources (Jira, Gitlab, Jenkins etc) in one place.
  2. Can compute metrics from different data sources together.
  3. Provide a series of industry standard metrics to identify engineering problems.
  4. Highly customisable, users can make their own graphs, metrics & dashboards.

What can be accomplished with Dev Lake?

  1. Visualize and analyze your entire SDLC process in one personalized, unified view.
  2. Debug process- and team-level issues, scale successes.
  3. Unify and standardize measures of success and benchmarks.

Contents

Section Description Documentation Link
Data Sources Links to specific plugin usage & details View Section
User Setup Steps to run the project as a user View Section
Developer Setup How to setup dev environment View Section
Tests Commands for running tests View Section
Grafana How to visualize the data View Section
Build a Plugin Details on how to make your own Link
Add Plugin Metrics Guide to adding plugin metrics Link
Contributing How to contribute to this repo Link
FAQ Frequently Asked Questions Link

Data Sources We Currently Support

Below is a list of data source plugins used to collect & enrich data from specific sources. Each have a README.md file with basic setup, troubleshooting and metrics info.

For more information on building a new data source plugin see Build a Plugin.

Section Section Info Docs
Jira Metrics, Generating API Token, Find Board ID Link
Gitlab Metrics, Generating API Token, Find Project ID Link
Jenkins Metrics, Generating API Token Link

User setup

NOTE: If you only plan to run the product, this is the only section you should need NOTE: Commands written like this are to be run in your terminal

Required Packages to Install

NOTE: After installing docker, you may need to run the docker application and restart your terminal

Commands to run in your terminal

  1. Clone repository

    git clone https://github.com/merico-dev/lake.git devlake
    cd devlake
    cp .env.example .env
  2. Start Docker on your machine and then you can run docker-compose up -d config-ui to start up the configuration interface

    For more info on how to configure plugins, please refer to the data source plugins section

  3. Visit localhost:4000 to setup configuration files

    • Finish the configuration on the main configuration page (localhost:4000)
    • Navigate to desired plugins pages on the sidebar under "Plugins", e.g. Jira, Gitlab, Jenkins etc. Enter in required information for those plugins
    • Submit the form to update the values by clicking on the Save Config button on each form page
  4. Run docker-compose up -d to start up the other services

  5. Visit localhost:4000/triggers to trigger data collection

    Please replace your gitlab projectId and jira boardId in the request body. Click the Trigger Collection button. This can take up to 20 minutes for large projects. (gitlab 10k+ commits or jira 5k+ issues)

  6. Click Go to grafana button when done (username: admin, password: admin). The button will be shown on the Trigger Collection page when data collection has finished.

Setup cron job

Commonly, we have requirement to synchorize data periodly. We providered a tool called lake-cli to meet that requirement. Check lake-cli usage at here.

Otherwise, if you just want to use the cron job, please check docker-compose version at here

Deploy to TeamCode

  1. IMPORTANT: MAKE SURE config-ui service is protected on TeamCode Control Panel before you set it up, or your TOKEN/PASSWORD might leak
  2. The following Environment Variables are to be set for config-ui service:
GRAFANA_ENDPOINT=
     

     

Developer Setup

Requirements

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

How to setup dev environment

  1. Navigate to where you would like to install this project and clone the repository

    git clone https://github.com/merico-dev/lake.git
    cd lake
  2. Install go packages

    make install
  3. Copy sample config files to new local file

    cp .env.example .env
  4. Start the docker containers

    Make sure the docker application is running before this step

    make compose
  5. Run the project

    make dev
  6. You can now post to /task to create a data collection task for Gitlab plugin. For demo purpose, we pick an open-source project on Gitlab called ClearURLs. Its Gitlab project id is 6821549 (right under its project name).

    curl -XPOST 'localhost:8080/task' \
    -H 'Content-Type: application/json' \
    -d '[[{
        "plugin": "gitlab",
        "options": {
            "projectId": 6821549
        }
    }]]'
    
  7. Visualize the data in the Grafana Dashboard

    From here you can see existing data visualized from collected & enriched data

    • Navigate to http://localhost:3002 (username: admin, password: admin)
    • You can also create/modify existing/save dashboards to lake
    • For more info on working with Grafana in Dev Lake see Grafana Doc

Tests

To run the tests: make test

Grafana

We use Grafana as a visualization tool to build charts for the data stored in our database. Using SQL queries we can add panels to build, save, and edit customized dashboards.

All the details on provisioning, and customizing a dashboard can be found in the Grafana Doc

Contributing

CONTRIBUTING.md

License

This project is licensed under Apache License 2.0 - see the LICENSE file for details

Need help?

Message us on Discord

FAQ

Q: When I run docker-compose up -d I get this error: "qemu: uncaught target signal 11 (Segmentation fault) - core dumped". How do I fix this?

A: Mac M1 users need to download a specific version of docker on their machine. You can find it here: https://docs.docker.com/desktop/mac/apple-silicon/

Comments
  • Fix GitHub jira connection

    Fix GitHub jira connection

    Summary

    fix bug: when we save settings from config-ui, if there is no key in .env, it will not be saved in .env

    Screenshots

    image

    Other Information

    Any other information that is important to this PR.

  • fix(github): github connection properties are saved with error

    fix(github): github connection properties are saved with error

    Summary

    the way we used mapstructure has some problems. In this pr, we moved mapstructure:",squash"to under Config in GithubConnection

    Does this close any open issues?

    closes #1888

    Current Behavior

    Describe the current behaviour of this issue, if relevant.

    New Behavior

    Describe the new behaviour updated in this issue, if relevant.

    Screenshots

    modified successfully image

    Other Information

    Any other information that is important to this PR.

  • Release v0.14

    Release v0.14

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • Release v0.14

    Release v0.14

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • Release v0.14

    Release v0.14

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • feat(deploy): add helm chart

    feat(deploy): add helm chart

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • helfeat(deploy): add helm chart

    helfeat(deploy): add helm chart

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • feat(deploy): add helm chart

    feat(deploy): add helm chart

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • fix: github record not found

    fix: github record not found

    ⚠️   Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation & PR Template
    • [ ] This PR is using a label (bug, feature etc.)
    • [ ] My code is has necessary documentation (if appropriate)
    • [ ] I have added any relevant tests
    • [ ] This section (⚠️   Pre Checklist) will be removed when submitting PR

    Summary

    Does this close any open issues?

    Please mention the issues here.

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • feat: team feature domain and github (#2424)

    feat: team feature domain and github (#2424)

    • feat: create tables

    • fix: remove OrgId field

    • refactor: rename users to accounts

    • feat: team feature update users to account on tool layer step2:github

    • feat: team feature update users to account on tool layer step2:github

    • feat: team feature update users to account on tool layer step2:github

    Co-authored-by: zhangliang [email protected]

    ⚠️   Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation & PR Template
    • [ ] This PR is using a label (bug, feature etc.)
    • [ ] My code is has necessary documentation (if appropriate)
    • [ ] I have added any relevant tests
    • [ ] This section (⚠️   Pre Checklist) will be removed when submitting PR

    Summary

    Does this close any open issues?

    Please mention the issues here.

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • fix(github): fix unicode for pg

    fix(github): fix unicode for pg

    Summary

    As of #1870, pg cannot support unicode \u0000, we have to drop json as field type in the table. We use text to store json data

    In addition, this pr modified an error log as it print the location of err not msg

    Does this close any open issues?

    close #1870

    Current Behavior

    Describe the current behaviour of this issue, if relevant.

    New Behavior

    Describe the new behaviour updated in this issue, if relevant.

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • test

    test

    ⚠️ Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation.
    • [ ] I have added relevant tests.
    • [ ] I have added relevant documentation.
    • [ ] I will add labels to the PR, such as pr-type/bug-fix, pr-type/feature-development, etc.

    Summary

    Does this close any open issues?

    Closes xx

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

  • Fix modify story bug

    Fix modify story bug

    ⚠️   Pre Checklist

    Please complete ALL items in this checklist, and remove before submitting

    • [ ] I have read through the Contributing Documentation & PR Template
    • [ ] This PR is using a label (bug, feature etc.)
    • [ ] My code is has necessary documentation (if appropriate)
    • [ ] I have added any relevant tests
    • [ ] This section (⚠️   Pre Checklist) will be removed when submitting PR

    Summary

    Does this close any open issues?

    Please mention the issues here.

    Screenshots

    Include any relevant screenshots here.

    Other Information

    Any other information that is important to this PR.

Baker is a high performance, composable and extendable data-processing pipeline for the big data era

Baker is a high performance, composable and extendable data-processing pipeline for the big data era. It shines at converting, processing, extracting or storing records (structured data), applying whatever transformation between input and output through easy-to-write filters.

Dec 14, 2022
Dud is a lightweight tool for versioning data alongside source code and building data pipelines.

Dud Website | Install | Getting Started | Source Code Dud is a lightweight tool for versioning data alongside source code and building data pipelines.

Jan 1, 2023
CUE is an open source data constraint language which aims to simplify tasks involving defining and using data.

CUE is an open source data constraint language which aims to simplify tasks involving defining and using data.

Jan 1, 2023
xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL.

xyr [WIP] xyr is a very lightweight, simple and powerful data ETL platform that helps you to query available data sources using SQL. Supported Drivers

Dec 2, 2022
DEPRECATED: Data collection and processing made easy.

This project is deprecated. Please see this email for more details. Heka Data Acquisition and Processing Made Easy Heka is a tool for collecting and c

Nov 30, 2022
Open source framework for processing, monitoring, and alerting on time series data

Kapacitor Open source framework for processing, monitoring, and alerting on time series data Installation Kapacitor has two binaries: kapacitor – a CL

Dec 24, 2022
Kanzi is a modern, modular, expendable and efficient lossless data compressor implemented in Go.

kanzi Kanzi is a modern, modular, expendable and efficient lossless data compressor implemented in Go. modern: state-of-the-art algorithms are impleme

Dec 22, 2022
churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline applications.

Churro - ETL for Kubernetes churro is a cloud-native Extract-Transform-Load (ETL) application designed to build, scale, and manage data pipeline appli

Mar 10, 2022
A library for performing data pipeline / ETL tasks in Go.
A library for performing data pipeline / ETL tasks in Go.

Ratchet A library for performing data pipeline / ETL tasks in Go. The Go programming language's simplicity, execution speed, and concurrency support m

Jan 19, 2022
A distributed, fault-tolerant pipeline for observability data

Table of Contents What Is Veneur? Use Case See Also Status Features Vendor And Backend Agnostic Modern Metrics Format (Or Others!) Global Aggregation

Dec 25, 2022
Data syncing in golang for ClickHouse.
Data syncing in golang for ClickHouse.

ClickHouse Data Synchromesh Data syncing in golang for ClickHouse. based on go-zero ARCH A typical data warehouse architecture design of data sync Aut

Jan 1, 2023
sq is a command line tool that provides jq-style access to structured data sources such as SQL databases, or document formats like CSV or Excel.

sq: swiss-army knife for data sq is a command line tool that provides jq-style access to structured data sources such as SQL databases, or document fo

Jan 1, 2023
Machine is a library for creating data workflows.
Machine is a library for creating data workflows.

Machine is a library for creating data workflows. These workflows can be either very concise or quite complex, even allowing for cycles for flows that need retry or self healing mechanisms.

Dec 26, 2022
Stream data into Google BigQuery concurrently using InsertAll() or BQ Storage.

bqwriter A Go package to write data into Google BigQuery concurrently with a high throughput. By default the InsertAll() API is used (REST API under t

Dec 16, 2022
Fast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.

Gleam Gleam is a high performance and efficient distributed execution system, and also simple, generic, flexible and easy to customize. Gleam is built

Jan 5, 2023
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Gonum Installation The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get. go get -u gonum.

Dec 29, 2022
Graphik is a Backend as a Service implemented as an identity-aware document & graph database with support for gRPC and graphQL
Graphik is a Backend as a Service implemented as an identity-aware document & graph database with support for gRPC and graphQL

Graphik is a Backend as a Service implemented as an identity-aware, permissioned, persistant document/graph database & pubsub server written in Go.

Dec 30, 2022
Simple CRUD application using CockroachDB and Go

Simple CRUD application using CockroachDB and Go

Feb 20, 2022