X-Git-Url: https://git.exim.org/buildfarm-server.git/blobdiff_plain/aedede4030eba1aea92af8cacd0f09dc8ec26169..a78d9bf85e4e91b05abc18852c06e3ba65aff0aa:/cgi-bin/eximstatus.pl diff --git a/cgi-bin/eximstatus.pl b/cgi-bin/eximstatus.pl index e911e6b..0184ae8 100755 --- a/cgi-bin/eximstatus.pl +++ b/cgi-bin/eximstatus.pl @@ -9,6 +9,7 @@ See accompanying License file for license details =cut use strict; +use URI::Escape; use vars qw($dbhost $dbname $dbuser $dbpass $dbport $all_stat $fail_stat $change_stat $green_stat @@ -30,8 +31,10 @@ use Mail::Send; use Time::ParseDate; use Storable qw(thaw); -require "$ENV{BFConfDir}/BuildFarmWeb.pl"; -my $buildlogs = "$ENV{BFConfDir}/buildlogs"; +use FindBin qw($RealBin); +require "$RealBin/../BuildFarmWeb.pl"; + +my $buildlogs = "$RealBin/../buildlogs"; die "no dbname" unless $dbname; die "no dbuser" unless $dbuser; @@ -74,7 +77,7 @@ if (open($brhandle,"../htdocs/branches_of_interest.txt")) my $content = - "branch=$branch&res=$res&stage=$stage&animal=$animal&". + 'branch=' . uri_escape($branch) . "&res=$res&stage=$stage&animal=$animal&". "ts=$ts&log=$log&conf=$conf"; my $extra_content = @@ -189,7 +192,7 @@ if ($log =~/Last file mtime in snapshot: (.*)/) if ($snaptime < ($last_branch_time - 86400)) { print "Status: 493 snapshot too old: $1\nContent-Type: text/plain\n\n"; - print "snapshot to old: $1\n"; + print "snapshot too old: $1\n"; $db->disconnect; exit; } @@ -227,7 +230,7 @@ if ($log_archive) chomp $githeadref; close $githead; } - # unlink $archname; + unlink $archname; } my $config_flags; @@ -297,6 +300,10 @@ if (@config_flags) @config_flags = grep {! m/=/ } @config_flags; map {s/\s+//g; $_=qq("$_"); } @config_flags; push @config_flags,'git' if $client_conf->{scm} eq 'git'; + push(@config_flags, 'doc') + if (defined $client_conf->{'optional_steps'}->{'make-doc'}); + push(@config_flags, 'test') + if (defined $client_conf->{'optional_steps'}->{'test'}); $config_flags = '{' . join(',',@config_flags) . '}' ; } @@ -305,10 +312,10 @@ my $scmurl = $client_conf->{scm_url}; my $logst = <do("delete from dashboard_mat"); $db->do("insert into dashboard_mat select * from dashboard_mat_data"); $db->commit; -if ($stage ne 'OK') -{ - $db->begin_work; - # prevent occasional duplication by forcing serialization of this operation - $db->do("lock table nrecent_failures in share row exclusive mode"); - $db->do("delete from nrecent_failures"); - $db->do("insert into nrecent_failures select bs.sysname, bs.snapshot, bs.branch from build_status bs where bs.stage <> 'OK' and bs.snapshot > now() - interval '90 days'"); - $db->commit; -} + +#if ($stage ne 'OK') # On Exim build farm nrecent_failures is a view, not table... comment out +#{ +# $db->begin_work; +# # prevent occasional duplication by forcing serialization of this operation +# $db->do("lock table nrecent_failures in share row exclusive mode"); +# $db->do("delete from nrecent_failures"); +# $db->do("insert into nrecent_failures select bs.sysname, bs.snapshot, bs.branch from build_status bs where bs.stage <> 'OK' and bs.snapshot > now() - interval '90 days'"); +# $db->commit; +#} $db->disconnect; @@ -560,6 +568,19 @@ EOMAIL $fh->close; +use HTTP::Tiny; +use JSON::PP; +HTTP::Tiny->new(timeout => 5)->post( + 'http://127.0.0.1:2567/api/message', { + headers => {'content-type' => 'application/json'}, + content => encode_json({ + gateway => 'exim-builds', + username => '', + text => "$animal [$branch]: @{[lc $stat_type]}: @{[lc $stage]}; commit: https://git.exim.org/@{[substr $githeadref, 0, 10]}", + }), + } +); + exit if ($stage eq $prev_stat); $mailto = [@$change_stat]; @@ -597,3 +618,14 @@ For more information, see $url/cgi-bin/show_history.pl?nm=$animal&br=$branch EOMAIL $fh->close; + +HTTP::Tiny->new(timeout => 5)->post( + 'http://127.0.0.1:2567/api/message', { + headers => {'content-type' => 'application/json'}, + content => encode_json({ + gateway => 'exim-builds', + username => '', + text => "$animal [$branch]: status @{[lc $stat_type]}; $url/cgi-bin/show_history.pl?nm=$animal&br=$branch", + }), + } +);