From 33d2cd3c926702b59a183ce0e291194122deeac3 Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Tue, 14 Jan 2014 19:51:00 +0400 Subject: [PATCH] Mail notification implemented --- BuildServer/lib/builder.js | 40 ++++++++++++++++++++++++---------- BuildServer/lib/mail-sender.js | 12 ++++++++++ BuildServer/package.json | 3 ++- 3 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 BuildServer/lib/mail-sender.js diff --git a/BuildServer/lib/builder.js b/BuildServer/lib/builder.js index 7635c15..78a2465 100644 --- a/BuildServer/lib/builder.js +++ b/BuildServer/lib/builder.js @@ -6,6 +6,7 @@ var async = require('async'); var request = require('request'); var gitLoader = require('./git-loader'); var processor = require('./task-processor'); +var mailSender = require('./mail-sender'); var settings = require('../settings'); var notifyStatus = function (options, callback) { @@ -70,13 +71,30 @@ var build = function (options, callback) { fs.writeFile(release + "/report.json", JSON.stringify({err: err, result: result}), function (writeErr) { statusQueue.push(function (callback) { - notifyStatus({ - state: err ? "error" : "success", - description: errorMessage || warnMessage || infoMessage || "Success", - owner: owner, - reponame: reponame, - hash: rev - }, callback); + async.parallel([ + function (callback) { + notifyStatus({ + state: err ? "error" : "success", + description: errorMessage || warnMessage || infoMessage || "Success", + owner: owner, + reponame: reponame, + hash: rev + }, callback); + }, + function (callback) { + mailSender.send({ + from: 'Micro Build Server ', + to: '"Receiver Name" ', + subject: (err ? "Build failed for " : "Successfully built ") + owner + "/" + reponame + "/" + branch, + headers: { + 'X-Laziness-level': 1000 + }, + text: ("Build status URL: https://mbs.pos/status/" + owner + "/" + reponame + "/" + rev + "\r\n\r\n") + + (err ? ("Error message: " + err + "\r\n\r\n") : "") + + ((!result.messages || !result.messages.$allMessages) ? JSON.stringify(result, null, 4) : result.messages.$allMessages.map(function (msg) { return msg.prefix + "\t" + msg.message; }).join("\r\n")) + }, callback); + } + ], callback); }); if (writeErr) { @@ -91,7 +109,7 @@ var build = function (options, callback) { local: local, branch: branch, hash: rev, - exported: tmp + "/code", + exported: tmp + "/code" }, function(err) { if (err) { console.log(err); @@ -110,9 +128,9 @@ var build = function (options, callback) { var task; try { task = JSON.parse(data); - } catch(err) { + } catch(ex) { console.log("Malformed data: " + data); - return done(err, "MBSMalformed"); + return done(ex, "MBSMalformed"); } processor.processTask(task, { @@ -133,6 +151,6 @@ var build = function (options, callback) { }); }); }); -} +}; exports.build = build; diff --git a/BuildServer/lib/mail-sender.js b/BuildServer/lib/mail-sender.js new file mode 100644 index 0000000..b53a1ac --- /dev/null +++ b/BuildServer/lib/mail-sender.js @@ -0,0 +1,12 @@ +"use strict"; + +var nodemailer = require('nodemailer'); +var settings = require('../settings'); + +exports.send = function (message, callback) { + var transport = nodemailer.createTransport("SMTP", settings.smtp); + transport.sendMail(message, function(err, result) { + transport.close(); + callback(err, result); + }); +}; \ No newline at end of file diff --git a/BuildServer/package.json b/BuildServer/package.json index 9d81f07..93f05fb 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -12,6 +12,7 @@ "fs-extra": "~0.8.1", "git-node": "~0.1.1", "request": "~2.27.0", - "glob": "~3.2.7" + "glob": "~3.2.7", + "nodemailer": "~0.6.0" } }