Pages

Wednesday, September 13, 2017

Create HTML dashboard of Jenkins jobs status


Perl script to fetch live jobs' status from Jenkins server and generate and display HTML dashboard from it.

use strict;
use warnings;
use autodie;
use REST::Client;
use MIME::Base64;
use JSON;

my $api_proto = 'http';               #HTTP/HTTPS
my $api_url = 'localhost';       #Server IP
my $api_port = '8080';                #Port number
my $api_user = 'admin';           #Jenkins account username
my $api_pass = 'password';          #Jenkins account password
my $client = REST::Client->new();    #Perl Rest Client Object

$client->addHeader('Authorization', 'Basic '.encode_base64($api_user . ':' . $api_pass));
$client->GET($api_proto.'://'.$api_url.':'.$api_port.'/api/json?tree=jobs[name,color,url]');

my $html = "";
$html = $html."<!DOCTYPE html><html><head><title></title></head><body><table style='width:100%'>";
$html = $html."<tr><th>NAME</th><th>COLOR</th><th>URL</th></tr>";

if ($client->responseCode() == 200)
{
    my $data = decode_json($client->responseContent());
    my @jobs = @{$data->{'jobs'}};
    print("\nTotal ".scalar(@jobs)." jobs found..\n\n");
   
    foreach my $job (@jobs)
    {
        $html = $html."<tr>";
        $html = $html."<td><font color='".$job->{'color'}."'>".$job->{'name'}."</font></td>";
        $html = $html."<td><font color='".$job->{'color'}."'>".$job->{'color'}."</font></td>";
        $html = $html."<td><a href=".$job->{'url'}."><font color='".$job->{'color'}."'>".$job->{'url'}."</font></a></td>";
        $html = $html."</tr>";
    }
}

else
{
    print("\ncould not connect to jenkins server... :( :(\n");
    print("\n".$client->responseContent()."\n");
}

$html = $html."</table></body></html>";

open (my $fh, ">Jenkins Dashboard.html") or die("Could not open file. $!");
print $fh $html;
close $fh;

system("Jenkins Dashboard.html");

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.