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:
parent
57805ea471
commit
8c8b208088
53
server.js
53
server.js
|
@ -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
|
// Ansible integration
|
||||||
camp.route(/^\/ansible\/(role)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
|
camp.route(/^\/ansible\/(role)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
|
||||||
cache(function(data, match, sendBadge, request) {
|
cache(function(data, match, sendBadge, request) {
|
||||||
|
|
4
try.html
4
try.html
|
@ -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><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>
|
<td><code>https://img.shields.io/jenkins/t/https/jenkins.qa.ubuntu.com/precise-desktop-amd64_default.svg</code></td>
|
||||||
</tr>
|
</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>
|
<tr><th> Coveralls: </th>
|
||||||
<td><img src='/coveralls/jekyll/jekyll.svg' alt=''/></td>
|
<td><img src='/coveralls/jekyll/jekyll.svg' alt=''/></td>
|
||||||
<td><code>https://img.shields.io/coveralls/jekyll/jekyll.svg</code></td>
|
<td><code>https://img.shields.io/coveralls/jekyll/jekyll.svg</code></td>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user