Skip to content

Commit

Permalink
merged in master
Browse files Browse the repository at this point in the history
  • Loading branch information
hojberg committed Sep 11, 2011
2 parents f2b67f2 + 98a37ba commit 4299b5e
Show file tree
Hide file tree
Showing 67 changed files with 1,592 additions and 632 deletions.
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,37 @@

Drip is continuous integration for npm.

## Running

Starting the entire application:

node script/init.js

Starting just a worker:

node script/worker.js

## Requirements

drip has the following requirements:

* redis (for resque, and scheduling and working of builds)
* mongodb (for storage of build statistics)

## Compiling

coffee -c **/*.coffee

## Testing

npm test

## Running

Be sure to have the following environment variables set:

MONGO_URL, REDIS_URL

## Authors

drip was written by [Christopher Meiklejohn](mailto:christopher.meiklejohn@gmail.com), [Simon Højberg](http://twitter.com/shojberg), and Barnaby Claydon for the [2011 Node Knockout](http://nodeknockout.com).
Expand Down
27 changes: 27 additions & 0 deletions config/app.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
express = exports.express = require 'express'
app = exports.app = express.createServer()

app.configure ->
app.set 'views', __dirname + '/../views'
app.use express.static __dirname + '/../public'
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser()
app.use express.logger()
app.use app.router
app.set 'view engine', 'jade'

credentials = require './credentials'
routes = require './routes'
mongoose = require './mongoose'
environments = require './environments'

exports.start = (port) ->
app.listen port, ->
console.log 'Ready'

if process.getuid() == 0
require('fs').stat __filename, (err, stats) ->
process.setuid stats.uid

console.log 'Listening on ' + app.address().port
30 changes: 30 additions & 0 deletions config/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
(function() {
var app, credentials, environments, express, mongoose, routes;
express = exports.express = require('express');
app = exports.app = express.createServer();
app.configure(function() {
app.set('views', __dirname + '/../views');
app.use(express.static(__dirname + '/../public'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.logger());
app.use(app.router);
return app.set('view engine', 'jade');
});
credentials = require('./credentials');
routes = require('./routes');
mongoose = require('./mongoose');
environments = require('./environments');
exports.start = function(port) {
return app.listen(port, function() {
console.log('Ready');
if (process.getuid() === 0) {
require('fs').stat(__filename, function(err, stats) {
return process.setuid(stats.uid);
});
}
return console.log('Listening on ' + app.address().port);
});
};
}).call(this);
15 changes: 15 additions & 0 deletions config/credentials.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
app = require('../config/app').app
http = require('http')
url = require('url')

mongo_url = process.env.MONGO_URL
redis_url = process.env.REDIS_URL
redis_uri = url.parse(redis_url)

app.set 'credentials'
redis:
host: redis_uri.hostname
port: redis_uri.port
pass: redis_uri.auth.split(':')[1]
mongo:
url: mongo_url
31 changes: 19 additions & 12 deletions config/credentials.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
var app = require('../server').app;

app.set('credentials', {
redis: {
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
pass: process.env.REDIS_PASS
},
mongo: {
url: process.env.MONGO_URL
}
});
(function() {
var app, http, mongo_url, redis_uri, redis_url, url;
app = require('../config/app').app;
http = require('http');
url = require('url');
mongo_url = process.env.MONGO_URL;
redis_url = process.env.REDIS_URL;
redis_uri = url.parse(redis_url);
app.set('credentials', {
redis: {
host: redis_uri.hostname,
port: redis_uri.port,
pass: redis_uri.auth.split(':')[1]
},
mongo: {
url: mongo_url
}
});
}).call(this);
13 changes: 13 additions & 0 deletions config/environments.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
app = require('../config/app').app
express = require('../config/app').express

app.configure 'test', 'development', ->
app.use express.errorHandler
dumpExceptions: true
showStack: true

app.configure 'production', ->
app.use express.errorHandler

app.configure 'development', 'production', ->
sockets = require '../lib/sockets'
28 changes: 18 additions & 10 deletions config/environments.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
var app = require('../server').app,
express = require('../server').express;

app.configure('test', 'development', function() {
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function() {
app.use(express.errorHandler());
});
(function() {
var app, express;
app = require('../config/app').app;
express = require('../config/app').express;
app.configure('test', 'development', function() {
return app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.configure('production', function() {
return app.use(express.errorHandler);
});
app.configure('development', 'production', function() {
var sockets;
return sockets = require('../lib/sockets');
});
}).call(this);
7 changes: 7 additions & 0 deletions config/mongoose.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
mongoose = require 'mongoose'
app = require('../config/app').app
creds = app.set('credentials').mongo

exports.Connection = mongoose.connect creds.url, (err) ->
if err
throw err
19 changes: 11 additions & 8 deletions config/mongoose.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
var mongoose = require('mongoose'),
app = require('../server').app,
url = app.set('credentials').mongo.url;

module.exports = mongoose.connect(url, function(err) {
if (err) throw err;
console.log('Connected to Mongo');
});
(function() {
var app, creds, mongoose;
mongoose = require('mongoose');
app = require('../config/app').app;
creds = app.set('credentials').mongo;
exports.Connection = mongoose.connect(creds.url, function(err) {
if (err) {
throw err;
}
});
}).call(this);
14 changes: 14 additions & 0 deletions config/redis.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
redis = require('redis')
app = require('../config/app').app
creds = app.set('credentials').redis

client = redis.createClient(creds.port, creds.host)

client.auth app.set('credentials').redis.pass, (err) ->
if err
throw err

client.on 'error', (err) ->
console.log 'Redis connection error: ' + err

exports.Connection = client
38 changes: 16 additions & 22 deletions config/redis.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
var redis = require('redis'),
app = require('../server').app;

var client = redis.createClient(
app.set('credentials').redis.port,
app.set('credentials').redis.host
);

client.auth(app.set('credentials').redis.pass, function(err) {
if(err) throw err;
console.log("Redis authenticated!");
});

client.on("error", function (err) {
console.log("Redis connection error: " + err);
});

client.on("connect", function (err) {
console.log('Connected to Redis');
});

module.exports = client;
(function() {
var app, client, creds, redis;
redis = require('redis');
app = require('../config/app').app;
creds = app.set('credentials').redis;
client = redis.createClient(creds.port, creds.host);
client.auth(app.set('credentials').redis.pass, function(err) {
if (err) {
throw err;
}
});
client.on('error', function(err) {
return console.log('Redis connection error: ' + err);
});
exports.Connection = client;
}).call(this);
8 changes: 8 additions & 0 deletions config/resque.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
resque = require 'coffee-resque'
app = require('../config/app').app
creds = app.set('credentials').redis

exports.Connection = resque.connect
host: creds.host
port: creds.port
password: creds.pass
21 changes: 11 additions & 10 deletions config/resque.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
var resque = require('coffee-resque'),
app = require('../server').app;

module.exports = resque.connect({
host: app.set('credentials').redis.host,
port: app.set('credentials').redis.port,
password: app.set('credentials').redis.pass
});

console.log('Connected to Redis');
(function() {
var app, creds, resque;
resque = require('coffee-resque');
app = require('../config/app').app;
creds = app.set('credentials').redis;
exports.Connection = resque.connect({
host: creds.host,
port: creds.port,
password: creds.pass
});
}).call(this);
20 changes: 20 additions & 0 deletions config/routes.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
app = require('../config/app').app

Index = require '../controllers/index'
Repositories = require '../controllers/repositories'
Builds = require '../controllers/builds'
Receiver = require '../controllers/receiver'

app.get '/', Index.index
app.post '/', Receiver.receive

app.get '/repositories', Repositories.list
app.post '/repositories', Repositories.create
app.get '/repositories/:ownerName', Repositories.list
app.get '/repositories/:ownerName/:name', Repositories.show
app.del '/repositories/:ownerName/:name', Repositories.destroy

app.get '/repositories/:ownerName/:name/builds', Builds.list
app.get '/repositories/:ownerName/:name/builds/:id', Builds.show

app.post '/receive', Receiver.receive
38 changes: 18 additions & 20 deletions config/routes.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
var app = require('../server').app;

var Index = require('../controllers/index');
Repositories = require('../controllers/repositories');
Builds = require('../controllers/builds');
Receiver = require('../controllers/receiver');

app.get('/', Index.index);
app.post('/', Receiver.receive);

app.get('/repositories', Repositories.list);
app.post('/repositories', Repositories.create);
app.get('/repositories/:ownerName', Repositories.list);
app.get('/repositories/:ownerName/:name', Repositories.show);
app.del('/repositories/:ownerName/:name', Repositories.destroy);

app.get('/repositories/:ownerName/:name/builds', Builds.list);
app.get('/repositories/:ownerName/:name/builds/:id', Builds.show);

app.post('/receive', Receiver.receive);
(function() {
var Builds, Index, Receiver, Repositories, app;
app = require('../config/app').app;
Index = require('../controllers/index');
Repositories = require('../controllers/repositories');
Builds = require('../controllers/builds');
Receiver = require('../controllers/receiver');
app.get('/', Index.index);
app.post('/', Receiver.receive);
app.get('/repositories', Repositories.list);
app.post('/repositories', Repositories.create);
app.get('/repositories/:ownerName', Repositories.list);
app.get('/repositories/:ownerName/:name', Repositories.show);
app.del('/repositories/:ownerName/:name', Repositories.destroy);
app.get('/repositories/:ownerName/:name/builds', Builds.list);
app.get('/repositories/:ownerName/:name/builds/:id', Builds.show);
app.post('/receive', Receiver.receive);
}).call(this);
Loading

0 comments on commit 4299b5e

Please sign in to comment.