From fef58737287889feefe8b0efafa366a3a4477125 Mon Sep 17 00:00:00 2001 From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Mon, 21 Apr 2014 11:34:17 +0400 Subject: [PATCH] Implemented release ZIP creation --- BuildServer/app.js | 1 + BuildServer/package.json | 3 ++- BuildServer/routes/index.js | 1 + BuildServer/routes/release.js | 25 +++++++++++++++++++++++++ BuildServer/views/status.jade | 3 +++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 BuildServer/routes/release.js diff --git a/BuildServer/app.js b/BuildServer/app.js index 9b8f4d2..c1652e2 100644 --- a/BuildServer/app.js +++ b/BuildServer/app.js @@ -42,6 +42,7 @@ app.get('/manual', routes.manual.get); app.post('/manual', routes.manual.post); app.get('/status/:owner/:reponame/:branch/:rev?', routes.status.page); app.get('/status.svg', routes.status.image); +app.get('/release/:owner/:reponame/:branch/:rev', routes.release); app.get('/artifact/:owner/:reponame/:branch/:rev/*', routes.artifact); http.createServer(app).listen(app.get('port'), function(){ diff --git a/BuildServer/package.json b/BuildServer/package.json index 19ce2a9..b5eb287 100644 --- a/BuildServer/package.json +++ b/BuildServer/package.json @@ -14,6 +14,7 @@ "request": "~2.27.0", "glob": "~3.2.7", "nodemailer": "~0.6.0", - "mustache": "~0.8.1" + "mustache": "~0.8.1", + "adm-zip": "~0.4.4" } } diff --git a/BuildServer/routes/index.js b/BuildServer/routes/index.js index 70bf72b..12a0ca7 100644 --- a/BuildServer/routes/index.js +++ b/BuildServer/routes/index.js @@ -11,3 +11,4 @@ exports.postreceive = require('./postreceive'); exports.manual = require('./manual'); exports.status = require('./status'); exports.artifact = require('./artifact'); +exports.release = require('./release'); diff --git a/BuildServer/routes/release.js b/BuildServer/routes/release.js new file mode 100644 index 0000000..d0581f2 --- /dev/null +++ b/BuildServer/routes/release.js @@ -0,0 +1,25 @@ +"use strict"; + +var path = require('path'); +var Zip = require('adm-zip'); + +module.exports = function(req, res, next) { + var options = { + owner: req.params.owner, + reponame: req.params.reponame, + branchName: req.params.branch, + branch: "/refs/heads/" + req.params.branch, + rev: req.params.rev + }; + + var zip = new Zip(), + releasePath = path.normalize(req.app.get('releasepath') + "/" + options.owner + "/" + options.reponame + "/" + options.branch + "/" + options.rev + "/"); + + zip.addLocalFolder(releasePath); + zip.toBuffer(function (buffer) { + res.attachment(options.reponame + '.' + options.rev + '.zip', '.'); + res.send(buffer); + }, function (error) { + next(error); + }, function () { }, function () { }); +}; diff --git a/BuildServer/views/status.jade b/BuildServer/views/status.jade index fc51be1..2e77b8c 100644 --- a/BuildServer/views/status.jade +++ b/BuildServer/views/status.jade @@ -24,6 +24,9 @@ block content if file[file.length-1] != "/" li a(href="/artifact/" + [owner, reponame, branchName, rev, file].join("/")) #{file} + + p: b: a(href="/release/" + [owner, reponame, branchName, rev].join("/")) Download all artifacts as ZIP + if (report && report.result && report.result.messages && report.result.messages.$allMessages) h2 Build output pre