Add Docker Hub build status (#856)

This commit is contained in:
Eddie Webb 2017-04-07 08:07:26 -04:00 committed by Paul Melnikow
parent 3febfe234e
commit b791ffda09
2 changed files with 48 additions and 0 deletions

View File

@ -5101,6 +5101,50 @@ cache(function(data, match, sendBadge, request) {
});
}));
// Docker Hub automated integration, most recent build's status (passed, pending, failed)
camp.route(/^\/docker\/build\/([^\/]+)\/([^\/]+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var user = match[1]; // eg, jrottenberg
var repo = match[2]; // eg, ffmpeg
var format = match[3];
if (user === '_') {
user = 'library';
}
var path = user + '/' + repo;
var url = 'https://registry.hub.docker.com/v2/repositories/' + path + '/buildhistory';
var badgeData = getBadgeData('docker build', data);
request(url, function(err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
try {
if (res.statusCode == 404) {
badgeData.text[1] = 'repo not found';
sendBadge(format, badgeData);
return;
}
var data = JSON.parse(buffer);
var most_recent_status = data.results[0].status;
if (most_recent_status == 10) {
badgeData.text[1] = 'passing';
badgeData.colorscheme = 'brightgreen';
} else if (most_recent_status < 0) {
badgeData.text[1] = 'failing';
badgeData.colorscheme = 'red';
} else {
badgeData.text[1] = 'building';
badgeData.colorB = '#008bb8';
}
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// Twitter integration.
camp.route(/^\/twitter\/url\/([^\/]+)\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {

View File

@ -855,6 +855,10 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/docker/automated/jrottenberg/ffmpeg.svg' alt=''/></td>
<td><code>https://img.shields.io/docker/automated/jrottenberg/ffmpeg.svg</code></td>
</tr>
<tr><th data-keywords='docker build status'> Docker Build Status </th>
<td><img src='/docker/build/jrottenberg/ffmpeg.svg' alt=''/></td>
<td><code>https://img.shields.io/docker/build/jrottenberg/ffmpeg.svg</code></td>
</tr>
<tr><th data-keywords='imagelayers'> ImageLayers Size: </th>
<td><img src='/imagelayers/image-size/_/ubuntu/latest.svg' alt=''/></td>
<td><code>https://img.shields.io/imagelayers/image-size/_/ubuntu/latest.svg</code></td>