show build data at the client

This commit is contained in:
oleg 2015-05-04 01:58:04 +03:00
parent ce9dccba5d
commit 4c6f55b445
4 changed files with 29 additions and 3 deletions

View File

@ -17,6 +17,9 @@ function Distributor(params) {
self.onBuildUpdate = params.onBuildUpdate || function(build, callback) { self.onBuildUpdate = params.onBuildUpdate || function(build, callback) {
callback(null, build); callback(null, build);
}; };
self.onBuildData = params.onBuildData || function(build, data) {
};
} }
exports.Distributor = Distributor; exports.Distributor = Distributor;
@ -62,7 +65,7 @@ Distributor.prototype._runNext = function(callback) {
}); });
executor.on('data', function(data) { executor.on('data', function(data) {
console.log('>>> executor`s data = ', data); self.onBuildData(build, data);
}); });
}, },
callback callback

View File

@ -6,7 +6,8 @@
"rev": "default" "rev": "default"
}, },
"steps": [ "steps": [
{"type": "shell", "cmd": "echo 11"}, {"type": "shell", "cmd": "echo \"hello, cur dir is `pwd`\""},
{"type": "shell", "cmd": "sleep 3"},
{"type": "shell", "cmd": "echo 1 > 1.txt"}, {"type": "shell", "cmd": "echo 1 > 1.txt"},
{"type": "shell", "cmd": "echo 2 > 2.txt"} {"type": "shell", "cmd": "echo 2 > 2.txt"}
] ]

View File

@ -19,16 +19,28 @@ project.loadAll('projects', function(err, loadedProjects) {
}); });
module.exports = function(app) { module.exports = function(app) {
var buildsSequnce = 0;
var distributor = new Distributor({ var distributor = new Distributor({
nodes: [{type: 'local', maxExecutorsCount: 1}], nodes: [{type: 'local', maxExecutorsCount: 1}],
onBuildUpdate: function(build, callback) { onBuildUpdate: function(build, callback) {
var buildsResource = app.dataio.resource('builds'); var buildsResource = app.dataio.resource('builds');
if (build.status === 'waiting') {
build.id = ++buildsSequnce;
// create resource for build data
var buildDataResource = app.dataio.resource('build' + build.id);
buildDataResource.on('connection', function(client) {
client.emit('sync', 'data', '< collected data >');
});
}
buildsResource.clientEmitSync( buildsResource.clientEmitSync(
build.status === 'waiting' ? 'create' : 'update', build.status === 'waiting' ? 'create' : 'update',
build build
); );
callback(null, build); callback(null, build);
},
onBuildData: function(build, data) {
app.dataio.resource('build' + build.id).clientEmitSync('data', data);
} }
}); });

View File

@ -28,6 +28,16 @@ define([
}); });
builds.subscribe(function(data, action) { builds.subscribe(function(data, action) {
$('#content').append(action.action + ': ' + JSON.stringify(data)); $('#content').append(
action.action + ': ' + JSON.stringify(data) + '<br>'
);
if (action.action === 'create') {
var name = 'build' + data.id;
connect.resource(name).subscribe(function(data, action) {
$('#content').append(
'<br>' + name + ': ' + data + '<br>'
);
});
}
}); });
}); });