forked from kireol/jenkinsFailReminder
/
jenkinsFailReminder.php
49 lines (39 loc) · 1.6 KB
/
jenkinsFailReminder.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
date_default_timezone_set('America/Detroit');
require 'vendor/autoload.php';
$PROJROOT = dirname(__FILE__) . "/";
require_once $PROJROOT . "src/Utils.php";
require_once $PROJROOT . "src/Hipchat.php";
$CONFIG = getConfig($PROJROOT);
$channels = $CONFIG['channels'];
$outputString = "";
foreach ($channels as $channel) {
$hipchat = new Hipchat($channel);
$jenkinsserver = $channel['jenkinsserver'];
echo "Connecting to " . $jenkinsserver . "\n";
$jenkins = new \JenkinsApi\Jenkins($jenkinsserver);
$viewToWatch = $channel['jenkinsview'];
echo "Loading jobs for view " . $viewToWatch . "\n";
$view = $jenkins->getView($viewToWatch);
$outputString = getBrokenBuildOutputText($view, $jenkins, $channel, $outputString);
if (strlen($outputString) > 0) {
$outputString = getGreeting() . "\n" . $outputString;
$hipchat->postOutput($outputString);
}
}
function getBrokenBuildOutputText($view, \JenkinsApi\Jenkins $jenkins, $channel, $outputString)
{
foreach ($view->jobs as $job) {
if ($job->buildable == true) {
if (strcmp($job->color, "red") == 0) {
$failedJob = $jenkins->getJob($job->name);
if ($failedJob->builds[0]->timestamp / 1000 < strtotime($channel['alerttimestring'])) {
$outputString .= "<a href=\"" . $job->url . "\">" . $job->name .
"</a> appears to have been broken since " .
getPrettyDateFromTimestamp($failedJob->builds[0]->timestamp / 1000) . " " . "\n";
}
}
}
}
return $outputString;
}