forked from lix-project/hydra
Add endpoint to generate a shields.io badge
This commit is contained in:
parent
bde8d81876
commit
f64230b45e
|
@ -384,6 +384,41 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Error'
|
$ref: '#/components/schemas/Error'
|
||||||
|
|
||||||
|
/job/{project-id}/{jobset-id}/{job-id}/shield:
|
||||||
|
get:
|
||||||
|
summary: Generate data for a shields.io badge
|
||||||
|
parameters:
|
||||||
|
- name: project-id
|
||||||
|
in: path
|
||||||
|
description: project identifier
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- name: jobset-id
|
||||||
|
in: path
|
||||||
|
description: jobset identifier
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- name: job-id
|
||||||
|
in: path
|
||||||
|
description: job identifier
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: see <a href="https://shields.io/endpoint">https://shields.io/endpoint</a> on how to use this
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
examples:
|
||||||
|
shield-success:
|
||||||
|
value:
|
||||||
|
color: green
|
||||||
|
schemaVersion: 1
|
||||||
|
label: hydra build
|
||||||
|
message: passing
|
||||||
|
|
||||||
/build/{build-id}:
|
/build/{build-id}:
|
||||||
get:
|
get:
|
||||||
summary: Retrieves a single build of a jobset by id
|
summary: Retrieves a single build of a jobset by id
|
||||||
|
|
|
@ -28,6 +28,40 @@ sub job : Chained('/') PathPart('job') CaptureArgs(3) {
|
||||||
$c->stash->{project} = $c->stash->{jobset}->project;
|
$c->stash->{project} = $c->stash->{jobset}->project;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub shield :Chained('job') PathPart('shield') Args(0) {
|
||||||
|
my ($self, $c) = @_;
|
||||||
|
|
||||||
|
my $job = $c->stash->{job};
|
||||||
|
|
||||||
|
my $lastBuild = $c->stash->{jobset}->builds->find(
|
||||||
|
{ job => $job, finished => 1 },
|
||||||
|
{ order_by => 'id DESC', rows => 1, columns => [@buildListColumns] }
|
||||||
|
);
|
||||||
|
notFound($c, "No latest build for job ‘$job’.") unless defined $lastBuild;
|
||||||
|
|
||||||
|
my $color =
|
||||||
|
$lastBuild->buildstatus == 0 ? "green" :
|
||||||
|
$lastBuild->buildstatus == 4 ? "yellow" :
|
||||||
|
"red";
|
||||||
|
my $message =
|
||||||
|
$lastBuild->buildstatus == 0 ? "passing" :
|
||||||
|
$lastBuild->buildstatus == 4 ? "cancelled" :
|
||||||
|
"failing";
|
||||||
|
|
||||||
|
$c->response->content_type('application/json');
|
||||||
|
$c->stash->{'plain'} = {
|
||||||
|
data => scalar (JSON::Any->objToJson(
|
||||||
|
{
|
||||||
|
schemaVersion => 1,
|
||||||
|
label => "hydra build",
|
||||||
|
color => $color,
|
||||||
|
message => $message,
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
$c->forward('Hydra::View::Plain');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sub prometheus : Chained('job') PathPart('prometheus') Args(0) {
|
sub prometheus : Chained('job') PathPart('prometheus') Args(0) {
|
||||||
my ($self, $c) = @_;
|
my ($self, $c) = @_;
|
||||||
my $prometheus = Net::Prometheus->new;
|
my $prometheus = Net::Prometheus->new;
|
||||||
|
|
Loading…
Reference in a new issue