Skip to content

Commit

Permalink
Override job processing
Browse files Browse the repository at this point in the history
Using the default simple runner behavior here is problematic, because it
will check/read/write the local system and not the container.
  • Loading branch information
oliversalzburg committed Jul 15, 2016
1 parent 5f5e4a2 commit cd35af4
Showing 1 changed file with 88 additions and 12 deletions.
100 changes: 88 additions & 12 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,91 @@
var Runner = require('strider-simple-runner').Runner
, runDocker = require('./lib/run')

var create = function(emitter, config, context, done){
config = config || {}
config.processJob = runDocker
var runner = new Runner(emitter, config)
runner.id = 'docker'
var Runner = require('strider-simple-runner').Runner;
var runDocker = require('./lib/run');

var create = function (emitter, config, context, done) {
config = config || {};
config.processJob = runDocker;
var runner = new Runner(emitter, config);
runner.id = 'docker';

console.log("Overriding runner.processJob");
runner.processJob = function (job, config, next) {
console.log("Running docker job...");

var now = new Date();
var self = this;

var dirs = {
base: "/home/strider/workspace",
data: "/home/strider/workspace",
cache: "/home/strider/workspace"
};

self.jobdata.get(job._id).started = now;
self.emitter.emit('browser.update', job.project.name, 'job.status.started', [job._id, now]);
self.log('[runner:' + self.id + '] Job started. Project: ' + job.project.name + ' Job ID: ' + job._id);
self.plugins(job.project.creator, config, job, dirs, function (err, workers) {
if (err) {
var jobdata = self.jobdata.pop(job._id);
if (!jobdata) return next(null);
jobdata.errored = true;
jobdata.error = {
message: err.message,
stack: err.stack
};
// self.emitter.emit('browser.update', job.project.name, 'job.status.errored', [job._id, jobdata.error])
delete jobdata.data;
jobdata.finished = new Date();
self.emitter.emit('job.done', jobdata);
self.log('[runner:' + self.id + '] Job done with error. Project: ' + job.project.name + ' Job ID: ' + job._id);
next(null);
return
}
var env = {};
if (config.envKeys) {
env.STRIDER_SSH_PUB = config.pubkey;
env.STRIDER_SSH_PRIV = config.privkey
}
self.config.processJob(job, workers.provider, workers.jobplugins, {
cachier: Function.prototype,
baseDir: dirs.base,
dataDir: dirs.data,
cacheDir: dirs.cache,
io: self.config.io,
branchConfig: config,
env: env,
log: console.log,
error: console.error,
logger: console
}, function (err) {
var jobdata = self.jobdata.pop(job._id);
if (!jobdata) return next(null);

if (err) {
jobdata.errored = true;
jobdata.error = {
message: err.message,
stack: err.stack
};
self.emitter.emit('browser.update', job.project.name, 'job.status.errored', [job._id, jobdata.error]);
self.log('[runner:' + self.id + '] Job done with error. Project: ' + job.project.name + ' Job ID: ' + job._id)
}

delete jobdata.data;
jobdata.finished = new Date();
self.emitter.emit('job.done', jobdata);
self.log('[runner:' + self.id + '] Job done without error. Project: ' + job.project.name + ' Job ID: ' + job._id);
next(null)
});
});
};

console.log("Fixing job queue handler");
runner.queue.handler = runner.processJob.bind(runner);

runner.loadExtensions(context.extensionPaths, function (err) {
done(err, runner)
})
}
done(err, runner);
});
};

module.exports = {
create: create,
Expand All @@ -22,4 +98,4 @@ module.exports = {
docker_volumeBinds: String,
docker_links: String
}
}
};

0 comments on commit cd35af4

Please sign in to comment.