Add route for Jenkins code coverage

The route looks like http://img.shields.io/jenkins/c/https/jenkins.qa.ubuntu.com/precise-desktop-amd64_default.svg
This commit is contained in:
Yannick Galatol 2015-11-29 13:06:48 +01:00
parent 57805ea471
commit 8c8b208088
2 changed files with 57 additions and 0 deletions

View File

@ -3360,6 +3360,59 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Jenkins coverage integration
camp.route(/^\/jenkins(-ci)?\/c\/(http(s)?)\/((?:[^\/]+)(?:\/.+?)?)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var scheme = match[2]; // http(s)
var host = match[4]; // jenkins.qa.ubuntu.com
var job = match[5]; // precise-desktop-amd64_default
var format = match[6];
var options = {
json: true,
uri: scheme + '://' + host + '/job/' + job
+ '/lastBuild/cobertura/api/json?tree=results[elements[name,denominator,numerator,ratio]]'
};
if (serverSecrets && serverSecrets.jenkins_user) {
options.auth = {
user: serverSecrets.jenkins_user,
pass: serverSecrets.jenkins_pass
};
}
var badgeData = getBadgeData('coverage', data);
request(options, function(err, res, json) {
if (err !== null) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
try {
var coverageObject = json.results.elements.filter(function (obj) {
return obj.name === 'Lines';
})[0];
if (coverageObject === undefined) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
var coverage = coverageObject.ratio;
if (+coverage !== +coverage) {
badgeData.text[1] = 'unknown';
sendBadge(format, badgeData);
return;
}
badgeData.text[1] = coverage.toFixed(0) + '%';
badgeData.colorscheme = coveragePercentageColor(coverage);
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// Ansible integration
camp.route(/^\/ansible\/(role)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

View File

@ -136,6 +136,10 @@ Pixel-perfect   Retina-ready   Fast   Consistent   Hackable
<td><img src='/jenkins/t/https/jenkins.qa.ubuntu.com/precise-desktop-amd64_default.svg' alt=''/></td>
<td><code>https://img.shields.io/jenkins/t/https/jenkins.qa.ubuntu.com/precise-desktop-amd64_default.svg</code></td>
</tr>
<tr><th> Jenkins coverage: </th>
<td><img src='/jenkins/c/https/jenkins.qa.ubuntu.com/address-book-service-utopic-i386-ci.svg' alt=''/></td>
<td><code>https://img.shields.io/jenkins/c/https/jenkins.qa.ubuntu.com/address-book-service-utopic-i386-ci.svg</code></td>
</tr>
<tr><th> Coveralls: </th>
<td><img src='/coveralls/jekyll/jekyll.svg' alt=''/></td>
<td><code>https://img.shields.io/coveralls/jekyll/jekyll.svg</code></td>