Giter Site home page Giter Site logo

emerald's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

emerald's Issues

Notify the person who broke the build

Title: Notify the person who broke the build

Description

As an engineer
I want to get an email notification everytime I push changes that break the build
So that we that we can minimize the amount of time that other developers have to wait to check in

Background

Our CI server is constantly showing failed build on the TV, but since the developers are usually writting code jacked-in, would be optimal to have them notified as soon as they break the build

Acceptance criteria

Given there is a build instruction created in emerald
And that "Gabriel <[email protected]>" pushed a commit with failing tests
When the build finishes running
Then an email notification is sent to gabriel@yipit.com

Given there is a build instruction created in emerald
And that "Gabriel" which phone number is "(347) 987 2711" pushed a commit with failing tests
When the build finishes running
Then a SMS is sent to  "(347) 987 2711"

Given there is a build instruction created in emerald
And that I pushed a commit with failing tests
When the build finishes running
Then i see a growl notification poping on my screen

command line should take aditional options

The command line interface should accept a -c or --config option that stands for a path to a file that has a settings.js-compatible format, and will be merged with the default one.

So that the user will have the capability to overwrite some of the default options

Relative paths when using git clone

[EMERALD] [WEBSOCKET] INFO: transport end @18:43:22 GMT+0000 (UTC)
[EMERALD] [WEBSOCKET] INFO: handshake authorized @18:43:23 GMT+0000 (UTC)
[EMERALD] [WEBSOCKET] SUCCESS: enqueuing instruction #1 @18:43:24 GMT+0000 (UTC)
[EMERALD] [QUEUE CONSUMER] INFO: consuming the build queue: found an item to build @18:43:27 GMT+0000 (UTC)
[EMERALD] [ BUILD RUNNER ] INFO: preparing to fetch data from "Test" through "[email protected]:Yipit/yipit.git@dev" at /home/ubuntu/.emerald/builds/github-com-yipit-yipittest @18:43:27 GMT+0000 (UTC)
[EMERALD] [ BUILD RUNNER ] INFO: local copy does not exist, will clone at "/home/ubuntu/.emerald/builds/github-com-yipit-yipittest" @18:43:27 GMT+0000 (UTC)
[EMERALD] [ BUILD RUNNER ] INFO: spawning "git clone --progress [email protected]:Yipit/yipit.git github-com-yipit-yipittest" @18:43:27 GMT+0000 (UTC)
[EMERALD] [ BUILD RUNNER ] FAILURE: Error: ENOENT, no such file or directory '/home/ubuntu/.emerald/builds/github-com-yipit-yipittest/94157f39c276dda958d67a5aab2426c1.sh' @18:43:27 GMT+0000 (UTC)
[EMERALD] [ BUILD RUNNER ] FAILURE: Error: ENOENT, no such file or directory '/home/ubuntu/.emerald/builds/github-com-yipit-yipittest/94157f39c276dda958d67a5aab2426c1.sh' @18:43:27 GMT+0000 (UTC)

/usr/local/lib/node_modules/emerald/app/server/actors/buildrunner.js:302
build: build.toBackbone(),
^
TypeError: Cannot call method 'toBackbone' of undefined
at /usr/local/lib/node_modules/emerald/app/server/actors/buildrunner.js:302:26
at /usr/local/lib/node_modules/emerald/node_modules/async/lib/async.js:437:21
at /usr/local/lib/node_modules/emerald/app/server/actors/buildrunner.js:195:17
at Object.oncomplete (fs.js:608:21)

timeout

builds should have a timeout, so that if the build takes longer than N seconds (to be defined in each build instruction), it aborts the build

Link to Github commits

It would be nice it builds from Github have a clickable link to jump to the commit hash on github so that you can review the code changes and/or make comments.

handle host key checking

when clonning a git repo, it should identify when it got stuck with host key checkign and preferably handle that

Create a new actor that pulls the repos from time to time

The BuildInstruction model should have a new field:

    it.has.field("poll_interval", kind.numeric);

That field will hold an interval in seconds that the repository should be polled for changes.

When set to 0 it means the instruction will never poll the repository for changes

It should be easy to run emerald in debug mode

Currently, to debug emerald and use the amazing node-inspector, I have to patch the first line of the file /app/terminal/main.js. A better solution would not touch this line, but automate it via npm actions.

create a command line

to start the server

emerald start

serving on http://localhost:8000

emerald :8000 # localhost:8000

serving on http://yourdomain.com

emerald yourdomain.com:80

manage instructions

emerald instruction create 

will drive you to an interactive REPL

Let's create a new instruction for emerald

type help anytime to show this

filing commands: will fill up the project name and show the missing fields

    name, description, script, repository, branch

emerald>

rewrite the build runner to be a fork

The run of a build should happen in a separated module (actor) that will be ran through

var be = child_process.fork('build_executer')
current_build.pid = be.pid;
current_build.save(function(){
  be.send({current_build: current_build, instruction: self});
});

so that when a build is aborted will only be necessary to kill a pid

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.