From e135c5d2c6c85c6a72e040157e7a42746698bb98 Mon Sep 17 00:00:00 2001 From: febbweiss Date: Wed, 25 Nov 2015 15:13:00 +0000 Subject: [PATCH] Feature: add deployment + deployment logs --- .meteor/packages | 2 + .meteor/release | 2 +- .meteor/versions | 37 +++++++------- client/deployment.service.js | 11 +++++ client/nav.html | 2 +- client/project_details.controller.js | 21 ++++++++ client/project_details.view.html | 55 +++++++++++++++++++++ client/projects.controller.js | 7 +-- client/projects.service.js | 4 ++ client/projects.view.html | 9 +++- lib/routes.js | 25 ++++++++-- server/constants.js | 26 ++++++---- server/jobs/deploy.job.js | 72 ++++++++++++++++++++++++++++ server/lib/command_runner.js | 72 +++++++++++++++++++++++----- server/lib/deployment.service.js | 57 +++++++++++++++++----- server/lib/jobs.service.js | 51 ++++++++++++++++++++ server/lib/projects.methods.js | 16 +++++-- server/lib/projects.service.js | 9 ++-- server/publications.js | 6 ++- 19 files changed, 416 insertions(+), 68 deletions(-) create mode 100644 client/deployment.service.js create mode 100644 client/project_details.controller.js create mode 100644 client/project_details.view.html create mode 100644 server/jobs/deploy.job.js create mode 100644 server/lib/jobs.service.js diff --git a/.meteor/packages b/.meteor/packages index 0d971aa..e5ca64e 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -22,3 +22,5 @@ fortawesome:fontawesome iron:router zenorocha:clipboard simple:reactive-method +vsivsi:job-collection +ogamedia:timer diff --git a/.meteor/release b/.meteor/release index 0f46733..3a05e0a 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@1.2.0.4-logging.0 +METEOR@1.2.1 diff --git a/.meteor/versions b/.meteor/versions index 06a9d43..ea16e41 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,4 +1,4 @@ -autoupdate@1.2.4-logging +autoupdate@1.2.4 babel-compiler@5.8.24_1 babel-runtime@0.1.4 base64@1.0.4 @@ -10,19 +10,20 @@ boilerplate-generator@1.0.4 caching-compiler@1.0.0 caching-html-compiler@1.0.2 callback-hook@1.0.4 -check@1.0.6 +check@1.1.0 +coffeescript@1.0.11 ddp@1.2.2 ddp-client@1.2.1 -ddp-common@1.2.1 -ddp-server@1.2.1 +ddp-common@1.2.2 +ddp-server@1.2.2 deps@1.0.9 diff-sequence@1.0.1 -ecmascript@0.1.5 -ecmascript-collections@0.1.6 +ecmascript@0.1.6 +ecmascript-runtime@0.2.6 ejson@1.0.7 -es5-shim@4.1.13 +es5-shim@4.1.14 fastclick@1.0.7 -fortawesome:fontawesome@4.4.0 +fortawesome:fontawesome@4.4.0_1 geojson-utils@1.0.4 hot-code-push@1.0.0 html-tools@1.0.5 @@ -42,20 +43,23 @@ jquery@1.11.4 launch-screen@1.0.4 livedata@1.0.15 logging@1.0.8 -meteor@1.1.9 +meteor@1.1.10 meteor-base@1.0.1 minifiers@1.1.7 minimongo@1.0.10 mobile-experience@1.0.1 mobile-status-bar@1.0.6 -mongo@1.1.2 +mongo@1.1.3 mongo-id@1.0.1 +mrt:later@1.6.1 +mrt:moment@2.8.1 npm-mongo@1.4.39_1 observe-sequence@1.0.7 +ogamedia:timer@0.0.9 ordered-dict@1.0.4 -promise@0.5.0 -random@1.0.4 -reactive-dict@1.1.2 +promise@0.5.1 +random@1.0.5 +reactive-dict@1.1.3 reactive-var@1.0.6 reload@1.1.4 retry@1.0.4 @@ -64,14 +68,15 @@ session@1.1.1 simple:reactive-method@1.0.2 spacebars@1.0.7 spacebars-compiler@1.0.7 -standard-minifiers@1.0.1 -templating@1.1.4 +standard-minifiers@1.0.2 +templating@1.1.5 templating-tools@1.0.0 tracker@1.0.9 twbs:bootstrap-noglyph@3.3.5 ui@1.0.8 underscore@1.0.4 url@1.0.5 -webapp@1.2.2 +vsivsi:job-collection@1.2.3 +webapp@1.2.3 webapp-hashing@1.0.5 zenorocha:clipboard@1.4.2 diff --git a/client/deployment.service.js b/client/deployment.service.js new file mode 100644 index 0000000..7678215 --- /dev/null +++ b/client/deployment.service.js @@ -0,0 +1,11 @@ +Deployments = new Mongo.Collection('deployments'); + +DeploymentService = { + list: function(id) { + var deployments = Deployments.find(), + altered = deployments.map(function(doc, index, cursor) { + return _.extend(doc, {index: deployments.count() - index}); + }); + return altered; + } +}; \ No newline at end of file diff --git a/client/nav.html b/client/nav.html index 0669f51..253bd8e 100644 --- a/client/nav.html +++ b/client/nav.html @@ -14,7 +14,7 @@ diff --git a/client/project_details.controller.js b/client/project_details.controller.js new file mode 100644 index 0000000..ca078aa --- /dev/null +++ b/client/project_details.controller.js @@ -0,0 +1,21 @@ +Template.deploymentsList.helpers({ + deployments: function () { + return DeploymentService.list(); + } +}); + +Template.deploymentDetails.helpers({ + format: function() { + return this.data.replace(/\n/g, '
'); + }, + running: function() { + var string = this.status; + return string.charAt(0).toUpperCase() + string.slice(1); + } +}); + +Template.deploymentBtn.helpers({ + running: function() { + return this.status === 'pending' ? 'visible' : 'hidden'; + } +}) \ No newline at end of file diff --git a/client/project_details.view.html b/client/project_details.view.html new file mode 100644 index 0000000..e732e73 --- /dev/null +++ b/client/project_details.view.html @@ -0,0 +1,55 @@ + + + + + + + \ No newline at end of file diff --git a/client/projects.controller.js b/client/projects.controller.js index fc87a0c..ab7cbcf 100644 --- a/client/projects.controller.js +++ b/client/projects.controller.js @@ -1,4 +1,4 @@ -Template.management.helpers({ +Template.projects.helpers({ projects: function () { return ProjectService.list(); } @@ -13,10 +13,7 @@ Template.projectForm.events({ event.preventDefault(); var form = event.target; if( form.id.value ) { - Meteor.call('editProject',form.id.value, form.label.value, form.git_url.value, form.public_url.value, form.commands.value, function(errors, result) { - console.log(errors); - console.log(result); - }); + Meteor.call('editProject',form.id.value, form.label.value, form.git_url.value, form.public_url.value, form.commands.value); form.id.value = ''; } else { Meteor.call('addProject', form.label.value, form.git_url.value, form.public_url.value, form.commands.value); diff --git a/client/projects.service.js b/client/projects.service.js index 39d0302..7745398 100644 --- a/client/projects.service.js +++ b/client/projects.service.js @@ -3,5 +3,9 @@ Projects = new Mongo.Collection('projects'); ProjectService = { list: function() { return Projects.find({}, {sort: {label: 1}}); + }, + + get: function(id) { + return Projects.findOne({_id: id}); } }; diff --git a/client/projects.view.html b/client/projects.view.html index ea0ba26..d0d667f 100644 --- a/client/projects.view.html +++ b/client/projects.view.html @@ -1,4 +1,8 @@ -