yipit / emerald Goto Github PK
View Code? Open in Web Editor NEWreal-time continous integration server powered by node.js's crispy flakes
Home Page: http://yipit.github.com/emerald
real-time continous integration server powered by node.js's crispy flakes
Home Page: http://yipit.github.com/emerald
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
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
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
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
[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)
Attempting to put Nginx in front of Emerald to perform HTTP authentication.
I am able to get it to pass requests so that I can view the Emerald Page
But as soon as I try to hit a url that is not / I get the following errors:
https://gist.github.com/48c10bed8d1758c4d557
Gabriel suggested that it was an issue with Websockets and Nginx, so we switched to long polling, but it didn't seem to help.
The function that updates it is always using localhost
instead of the parameter handled by settings.EMERALD_HOSTNAME
.
After building an instruction, the dashboard is not being updated without a wild F5 click.
Emerald should exactly show us which builds are broken, not hide it from us :)
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
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.
so taht we can hook github to it :)
After a build fails from the dashboard, the list of builds for a given project doesnt automatically update.
For example, when you start a new build and navigate to another page, like "Manage instructions", the button Abort will be hidden and the build one will appear again.
It's weird, but when a git clone runs with an https address, a password is required. If NO password is given and just an enter is pressed, things works like expected.
I think there is a bug
when clonning a git repo, it should identify when it got stuck with host key checkign and preferably handle that
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
There should be an actor for polling git from times to times and run the builds when necessary
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.
when a build breaks and it's previous build was succeeded, then a HTTP hook should be called
I can show you as well, hard to copy since the JS goes away fairly quickly.
Not sure, but at least for a while, it would be enough to send the user to the #build/ view.
emerald start
emerald :8000 # localhost:8000
emerald yourdomain.com:80
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>
it should have auto-scroll to bottom as more data is streamed
preferably will also parse ANSI colors
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
The "jackedup" theme of humane.js will suit perfect to emerald: http://wavded.github.com/humane-js/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.