An easy-to-use, cross-platform measurement tool that pulls data out of CD pipelines and analysis the four key metrics for you.

Overview

All Contributors Issues Licnece

Backend test Frontend test Publish release Docker image

Release

Maintained by SEA team, ThoughtWorks Inc.

Read this in other languages: English, 简体中文

Table of Contents

About the Project

For development teams who wants to measure their software delivery and operational (SDO) performance, this is a tool that helps them collect data from CD pipelines and visualize the key metrics in a friendly format.

The key differentiators:

  • One page configuration, quick and easy.
  • The ability to work across different CD platforms.
  • User can select the environment in which the analysis runs via a environment filter (Yes, production env is not the only one that matters)

Don't know what are those four key metrics?

Integration roadmap

List of CD tools the product supports now/plan to support

  • Jenkins

  • Bamboo

  • Github Actions

  • CircleCI

    ...and more on the way

Usage

Follow the two steps below to run the tool, and measure the four key metrics of your projects.

Install and run

The product is released to an ECR Docker repository public.ecr.aws/j2s5d3z8/4-key-metrics. Please follow the steps:

  1. Ensure Docker has already installed on your OS.
  2. Find available release versions in the release page.
    Or, you can find all history versions from our image repository
  3. Run the container locally via the following command:
docker run -d -p 80:80 --name metrik public.ecr.aws/j2s5d3z8/4-key-metrics:${release_version}

⚠️ We use port 80 to access the app. You may switch to any other port in case port 80 is occupied by other apps running on your machine.
⚠️ The latest tag matches the most recent version of this repository. Thus using public.ecr.aws/j2s5d3z8/4-key-metrics:latest or public.ecr.aws/j2s5d3z8/4-key-metrics will ensure you are running the most up to date version of this image.
If you want to stick to a specific version tag, remember there no "v" in version name. e.g. public.ecr.aws/j2s5d3z8/4-key-metrics:1.1.10

Configure your projects

After the container is running on your machine. Go to your favourite browser and open the app. If running in local that would be http://localhost:80/.

  1. Start the configuration:
  1. And the charts for each key metric will be available at the main page:
  1. Also the full screen view if you want to put it on big screens:

Advanced usage

If you would like to keep the 4-key-metrics data to avoid losing any data when remove container, you can mount the database folder /data/db out. And logs are also available if you mount the log folder /app/logs. As shown in the example below:

docker run -d -p 80:80 --name metrik -v "/path/to/local/directory:/data/db" -v "/path/to/another/directory:/app/logs" public.ecr.aws/j2s5d3z8/4-key-metrics:${release_version}

How to Compute, FAQs

See our Wiki page

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

Please check our contributing guideline form HERE

Getting Started

The codebase comprises of three major components frontend, backend, ci.

  • Frontend app is a web application built with:

    • TypeScript
    • ReactJS
    • ReCharts

    Go to frontend folder to find more details.

  • Backend app is built with:

    • Kotlin
    • Spring Boot Web
    • MongoDB

    Go to backend folder to find more details.

  • Build/Package scripts lives in ci folder

More

You might also like:

  • Buildvis, transparency for your build pipeline's results and runtime
  • HeartBeat, calculates delivery metrics from CI/CD build data, revision control and project planning tools.
  • GoCD Analytics Plugin, provides insights into your GoCD instance.

License

Distributed under the MIT License. See LICENSE for more information

Contributors

Thanks goes to these wonderful people (emoji key):


Zhe ZHAO

💻

Hao Yang

💻

Jason Zhang

🚇

橘子小睿

💻

HUANG Binfang

💻

HeZhuConnie

💻

Mengqiu PENG

💻

Kiky

💻

Rong

💻

Piaopiao-TW

💻

zydxt

💻

ifeelcold1824

💻

快乐心情

💻

Taiyu Guo

💻

sasasakuna

💻

Chen

💻

ivy-pugai

💻

ZengXiaoXing

💻

HeyWen

💻

yong-wang1

💻

twpei

💻

Henning S.

💻

Prateek

💻

Karuppiah Natarajan

💻

Fabio Formosa

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

Issues
  • Add contributors into README

    Add contributors into README

    Is your feature request related to a problem? Please describe. We've migrated this repo between various organizations many times, somehow we lost contributes' information, the GitHub right panel of the project home page only shows 7 contributors, however, there are more than 20

    Describe the solution you'd like Use all-contributors bot to add all contributors

    opened by hyrepo 104
  • docs: add erikdtw as a contributor

    docs: add erikdtw as a contributor

    Adds @erikdtw as a contributor for infra.

    This was requested by hyrepo in this comment

    opened by allcontributors[bot] 3
  • Unable to see the metrics for Jenkins project

    Unable to see the metrics for Jenkins project

    Describe the bug A clear and concise description of what the bug is. I am able to integrate the tool with Jenkins pipeline. However when I go to dashboard, I get an error "Handler dispatch failed; nested exception is kotlin.NotImplementedError: An operation is not implemented: Not yet implemented".

    Expected behavior Expected to see the metrics data

    Screenshots Screenshot 2021-05-06 at 3 37 40 PM

    Desktop (please complete the following information):

    • OS: Mac Big Sur
    • Browser Brave
    • Version 1.23.75
    opened by jaideeprana 3
  • Fixed some typos into the README

    Fixed some typos into the README

    opened by fabioformosa 2
  • Support for TeamCity

    Support for TeamCity

    Would like to have support for TeamCity CI/CD tool.

    feature request 
    opened by shehanster 2
  • Add Four Key Metrics understanding and calculation logic in README

    Add Four Key Metrics understanding and calculation logic in README

    Is your feature request related to a problem? Please describe. I believe Four Key Metrics only defines the results. However, we can use different data to show the status and results. For example, the Mean Time to Restore Service in the DORA report means "For the primary application or service you work on, how long does it generally take to restore service when a service incident or a defect that impacts users occurs(e.g., unplanned outage or service impairment)". After checking the code, I just found the MTTR metrics here is trying to focus on the Pipeline Stages.

    So maybe we can have a clear clarification on README about our understanding on 4KM and calculation logic instead of just put the 4KM link in README?

    Describe the solution you'd like Maybe a clear clarification on our 4KM and calculation logic on README or video description will be better.

    Additional context I am not sure if we have checked Google's 4KM projects: https://github.com/GoogleCloudPlatform/fourkeys

    opened by CzarScar 2
  • Local setup fails

    Local setup fails

    Describe the bug When following the Environment Setup for backend and running ./mongodb-setup/mongodb-for-local/setup-mongodb.sh the script fails.

    chmod: ../config/keyfile.txt: No such file or directory
    chmod: ../config/*.sh: No such file or directory
    ERROR: .FileNotFoundError: [Errno 2] No such file or directory: './docker-compose-for-local.yml'
    

    To Reproduce Steps to reproduce the behavior:

    1. Go to 'backend'
    2. Run. ./mongodb-setup/mongodb-for-local/setup-mongodb.sh
    3. See error

    Expected behavior Running docker compose and setup mongo.

    Desktop (please complete the following information):

    • OS: macOS 11.2.3
    • zsh 5.8
    opened by hstruebe 1
  • Use DIR to resolve path of file

    Use DIR to resolve path of file

    Hopefully solving #18

    opened by hstruebe 1
  • Migrate CI/CD to GitHub Actions

    Migrate CI/CD to GitHub Actions

    • CircleCI is not secure enough, developers can use SSH login to the container environment to check private keys/credentials
    • CircleCI only supports one YAML file, if there are too many workflows inside, the YAML file would be too long to read.
    • CircleCI needs an extra token to checkout code base
    • CircleCI is a third-party service
    • The spec of CircleCI distributed VM is much lower than GitHub Actions'.
    enhancement 
    opened by Hackl0us 1
  • Disable pipeline settings when sync build

    Disable pipeline settings when sync build

    fixes #10 This change will disable the Pipeline Settings button during synchronisation .

    image

    opened by jainsahab 1
  • Add guidelines for new CI/CD integration

    Add guidelines for new CI/CD integration

    Describe the solution you'd like Add a doc to explain how to integrate a new CI/CD system, so it will be easier for new contributors to getting on board.

    documentation 
    opened by hyrepo 0
  • Optimize local environment set up doc

    Optimize local environment set up doc

    Is your feature request related to a problem? Please describe. It's not easy for new contributors to know how to set up a local environment for the first time.

    Describe the solution you'd like Add or optimize an existing doc to make it easier to understand.

    documentation 
    opened by hyrepo 0
  • Replace RestTemplate with FeignClient

    Replace RestTemplate with FeignClient

    Is your feature request related to a problem? Please describe. Currently, we're using RestTemplate for API calls in backend to retrieve data from CI/CD systems, which caused many template codes.

    Describe the solution you'd like Replace RestTemplate with FeignClient in backend, so we can reduce code for API calls.

    good first issue 
    opened by hyrepo 0
  • Credentials exposed in getProjectDetails api

    Credentials exposed in getProjectDetails api

    Describe the bug Credentials exposed in getProjectDetails api, this may lead to a security issue.

    To Reproduce Steps to reproduce the behavior:

    1. open Chrom DevTools, go to Network tab
    2. Select one GET /api/project/XXXX
    3. Hit Preview, there is crendential info in the pipeline list

    Expected behavior Should hide crendential of the pipelines

    enhancement 
    opened by minghao-wang 1
  • Integrating four key metrics to codefresh CI/CD tool

    Integrating four key metrics to codefresh CI/CD tool

    We'll be migrating from Jenkins to Codefresh CI/CD tool. We want to include four key metrics as part of our CI/CD flow.

    Due to some restrictions from client we can't use Go CI/CD, and metrik tool doesn't support integration with codefresh as per the README.md.

    Any other alternative tool that you would recommend to capture four key metrics for Codefresh CI/CD?

    feature request 
    opened by jaideeprana 1
  • Change the position of

    Change the position of "Go to Dashboard" button

    Is your feature request related to a problem? Please describe.

    When users use this system for the first time, after they create the first pipeline, this page will be displayed. We found it's hard for them to notice the "Go to Dashboard" button, because they usually focus on the middle of the screen.

    image

    Describe the solution you'd like

    Move this button to the middle

    enhancement 
    opened by hyrepo 0
  • Support Bamboo Deployment Project

    Support Bamboo Deployment Project

    The app should be able to sync data from Bamboo deployment projects and combine the data with the build stages.

    enhancement 
    opened by zhe-zhao 0
  • Need to integrate with GitHubActions

    Need to integrate with GitHubActions

    The tool is supposed to support Github Actions

    Describe the solution you'd like To be added

    Additional context Add any other context or screenshots about the feature request here.

    enhancement 
    opened by zhe-zhao 2
  • 4km dashboard charts beats quickly on Firefox

    4km dashboard charts beats quickly on Firefox

    Moving from Trello

    Describe the bug As shown in the screen recording, the chart section flashes quickly on Firefox.

    To Reproduce @gtycherry Can help to add more?

    Expected behavior Should display charts normal as in Chrome

    Screenshots

    Screen_Recording_2021-03-17_at_11 06 56_AM

    Desktop (please complete the following information):

    • Browser [Firefox]
    • Version [1.1.6]
    bug 
    opened by zhe-zhao 2
  • The selected

    The selected "Pipeline/Stage" group should remain closed when option in other groups are selected.

    Moving from Trello

    The issue and how to reproduce

    1. I select one, or more option in the Pipeline/Stage list
    2. Collapse the selected group
    3. Expand another group and select an option
    4. Every group that has an option already selected will expand automatically, which is not expect by user.

    Expected behavior Collapsed groups should remain their status when options under other groups are selected.

    Screenshots alt text

    Desktop (please complete the following information):

    • Browser: Chrome, Safari
    • Version [1.1.6]
    bug 
    opened by zhe-zhao 0
Releases(1.2.2)
Owner
Thoughtworks
Thoughtworks
Android Secure SharedPreferences Using Facebook Conceal Encryption

SharedChamber Android Project : SharedChamber on top of SharedPreferences using Facebook Conceal Description Conceal provides a set of Java APIs to pe

Hafiq 95 Mar 24, 2021
CacheX - A feasible caching library for Android.

CacheX - A feasible caching library for Android.

Romman Sabbir 23 May 9, 2021
A Virtual Machine For Assessing Android applications, Reverse Engineering and Malware Analysis

Androl4b AndroL4b is an android security virtual machine based on ubuntu-mate includes the collection of latest framework, tutorials and labs from dif

null 926 Jul 20, 2021
a SharedPreferences replacement for Android with multiprocess support

DEPRECATED - no longer actively maintained Tray - a SharedPreferences replacement for Android If you have read the documentation of the SharedPreferen

HCI @ gcx 2.3k Jul 19, 2021
Android路由器,支持组件化开发,跨module页面的跳转,各种参数传递,自动注入获取参数的值,可获取Fragment等实例的等。

跳转路由器 仿ARouter的路由管理器。 一. 功能介绍 支持多module间跳转; 支持包括Object在内的多种传参; 支持依赖注入,传参无需手动获取; 支持手动添加拦截器,拦截跳转; 支持获取Fragment; 支持任何获取被Router注解的任何类型的实例; 支持切换动画; 支持扫描缓存

xjz-111 3 Jul 30, 2021
High level parsing to ensure your input is in the right shape and satisfies all constraints that business logic requires.

Parsix High level parsing to ensure your input is in the right shape and satisfies all constraints that business logic requires. It is highly inspired

null 179 Jul 18, 2021
Very easy to use wrapper library for Android SharePreferences

Treasure English document Treasure是一个Android平台上基于SharePreferences的偏好存储库,只需要定义接口,无需编写实现,默认支持Serializable和Parcelable。运行时0反射,不仅使用方便而且性能和原生写法几乎无差别。 使用方法 1

星一 507 Jul 21, 2021
SharedPreference Library to save all types including your custom types and observe them if need be.

A SharedPreference Library that can be used to store all types including your custom classes and observe them too if needed.

Ehma Ugbogo 14 Jun 30, 2021
✔️ Secure, simple key-value storage for Android

Hawk 2.0 Secure, simple key-value storage for android Important Note This version has no backward compatibility with Hawk 1+ versions. If you still wa

Orhan Obut 3.8k Jul 26, 2021
Fuzzy string matching for Kotlin (JVM, native, JS, Web Assembly) - port of Fuzzy Wuzzy Python lib

FuzzyWuzzy-Kotlin Fuzzy string matching for Kotlin (JVM, iOS) - fork of the Java fork of of Fuzzy Wuzzy Python lib. For use in on JVM, Android, or Kot

WillowTree, LLC 41 Jul 4, 2021
A library to quickly and easily enable multiple monitoring & support platforms for your mobile apps

You have a small team. Setting up crash reporting tools, event tracking tools, and log management services is not what you want to spend your hours do

Percolate 65 Jul 16, 2020
gRPC and protocol buffers for Android, Kotlin, and Java.

Wire “A man got to have a code!” - Omar Little See the project website for documentation and APIs. As our teams and programs grow, the variety and vol

Square 3.6k Jul 26, 2021
Runtime code generation for the Java virtual machine.

Byte Buddy runtime code generation for the Java virtual machine Byte Buddy is a code generation and manipulation library for creating and modifying Ja

Rafael Winterhalter 4.4k Aug 5, 2021
LowPoly For Android

LowPoly:A Tool for Generating Low Poly Photo LowPoly is implemented by JNI, so it's much faster than other in java. Like this: Including in your proje

JianxinLi 897 Jul 6, 2021