Git Product home page Git Product logo

changes's Introduction

Changes

Changes is a dashboard to view information about your code. Specifically, it focuses on aggregating quality metrics and history, such as results from a build server.

Supported build platforms include:

Note

Changes is under extremely active and rapid development, and you probably shouldn't use it unless you like broken software.

Screenshot

https://github.com/dropbox/changes/raw/master/docs/images/example.png

Requirements

  • Node.js
    • Bower (npm install -g bower)
  • Postgresql
  • Python 2.7
    • virtualenv
    • pip

Setup

Create the database:

$ createdb -E utf-8 changes

Setup the default configuration:

# ~/.changes/changes.conf.py
BASE_URI = 'http://localhost:5000'
SERVER_NAME = 'localhost:5000'

REPO_ROOT = '/tmp'

# Changes only supports Google Auth, so you'll need to obtain tokens
GOOGLE_CLIENT_ID = None
GOOGLE_CLIENT_SECRET = None

Create a Python environment:

$ mkvirtualenv changes

Bootstrap your environment:

$ make upgrade

Note

You can run make resetdb to drop and re-create a clean database.

Webserver

Run the webserver:

bin/web

Background Workers

Workers are managed via Celery:

bin/worker -B

Note

In development you can set CELERY_ALWAYS_EAGER to run the queue in-process. You likely don't want this if you're synchronizing builds as it can cause recursion errors.

NGINX Configuration

location / {
    proxy_pass              http://changes_server;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_connect_timeout   150;
    proxy_send_timeout      100;
    proxy_read_timeout      100;
    proxy_buffers           4 32k;
    proxy_buffering         off;
    client_max_body_size    8m;
    client_body_buffer_size 128k;
}

Architecture

Top level, we have a few key concepts:

Repository:
Exactly what it sounds like. git or hg
Project:
A project belongs to a single repository, and may only describe a subsection of the repository.
Plan:
A build plan. Plans belong to many projects.
Step:
An individual step in a plan.

Within each project, we have a few things relevant to builds:

Source:
Generally either a commit or a patch (for diff testing).
Change:
A change is discrete changeset throughout its lifecycle. It may consist of several sources, such as an initial patch, a commit, a revert, a followup patch, and a followup commit.
Build:
A build is a collection of jobs bound to a single source. Think of the build as the collective matrix of jobs for an individual change. e.g. you may want to test "Windows" and "Linux", which would both be contained within the same grouping.
Job:
An individual job within a build. e.g. "Linux"
Job Plan:
A snapshot of the plan at the time a job is created.

Inside of each job, a few items exist for collecting and reporting results:

Job Step:
An individual step run as part of a job. For example, this could be the provision step.
Job Phase:
A grouping of steps at the same tier. If you're using job factories, you may have several steps that execute similar tasks. These steps are grouped together as a phase.
Tests:
Several types of models exist for reporting tests. These exist both on the per-build level, as well as per-project for aggregate results.

changes's People

Contributors

dcramer avatar charleseff avatar nipunn1313 avatar

Stargazers

Hadj H. avatar

Watchers

James Cloos avatar kreyes avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.