Merge remote-tracking branch 'origin/master' into flake

This commit is contained in:
Eelco Dolstra
2019-08-15 13:56:00 +02:00
22 changed files with 239 additions and 227 deletions

View File

@ -76,7 +76,7 @@ sub latestbuilds : Chained('api') PathPart('latestbuilds') Args(0) {
sub jobsetToHash {
my ($jobset) = @_;
return {
project => $jobset->project->name,
project => $jobset->get_column('project'),
name => $jobset->name,
nrscheduled => $jobset->get_column("nrscheduled"),
nrsucceeded => $jobset->get_column("nrsucceeded"),
@ -206,12 +206,12 @@ sub scmdiff : Path('/api/scmdiff') Args(0) {
sub triggerJobset {
my ($self, $c, $jobset, $force) = @_;
print STDERR "triggering jobset ", $jobset->project->name . ":" . $jobset->name, "\n";
print STDERR "triggering jobset ", $jobset->get_column('project') . ":" . $jobset->name, "\n";
txn_do($c->model('DB')->schema, sub {
$jobset->update({ triggertime => time });
$jobset->update({ forceeval => 1 }) if $force;
});
push @{$c->{stash}->{json}->{jobsetsTriggered}}, $jobset->project->name . ":" . $jobset->name;
push @{$c->{stash}->{json}->{jobsetsTriggered}}, $jobset->get_column('project') . ":" . $jobset->name;
}

View File

@ -142,7 +142,7 @@ sub release : Chained('evalChain') PathPart('release') Args(0) {
$releaseName ||= $_->releasename foreach @builds;
# If no release name has been defined by any of the builds, compose one of the project name and evaluation id
$releaseName = $eval->project->name."-".$eval->id unless defined $releaseName;
$releaseName = $eval->get_column('project') . "-" . $eval->id unless defined $releaseName;
my $release;

View File

@ -60,9 +60,9 @@ sub getNextBuild {
(my $nextBuild) = $c->model('DB::Builds')->search(
{ finished => 1
, system => $build->system
, project => $build->project->name
, jobset => $build->jobset->name
, job => $build->job->name
, project => $build->get_column('project')
, jobset => $build->get_column('jobset')
, job => $build->get_column('job')
, 'me.id' => { '>' => $build->id }
}, {rows => 1, order_by => "me.id ASC"});
@ -77,9 +77,9 @@ sub getPreviousSuccessfulBuild {
(my $prevBuild) = $c->model('DB::Builds')->search(
{ finished => 1
, system => $build->system
, project => $build->project->name
, jobset => $build->jobset->name
, job => $build->job->name
, project => $build->get_column('project')
, jobset => $build->get_column('jobset')
, job => $build->get_column('job')
, buildstatus => 0
, 'me.id' => { '<' => $build->id }
}, {rows => 1, order_by => "me.id DESC"});
@ -289,7 +289,7 @@ sub parseJobsetName {
sub showJobName {
my ($build) = @_;
return $build->project->name . ":" . $build->jobset->name . ":" . $build->job->name;
return $build->get_column('project') . ":" . $build->get_column('jobset') . ":" . $build->get_column('job');
}

View File

@ -12,11 +12,15 @@ sub new {
return $self;
}
sub isEnabled {
return 1;
}
sub instantiate {
my ($class, %args) = @_;
my $plugins = [];
$args{plugins} = $plugins;
push @$plugins, $class->plugins(%args);
push @$plugins, grep { $_->isEnabled } $class->plugins(%args);
return @$plugins;
}

View File

@ -7,6 +7,11 @@ use JSON;
use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
sub isEnabled {
my ($self) = @_;
return $self->{config}->{enable_bitbucket_status} == 1;
}
sub toBitBucketState {
my ($buildStatus) = @_;
if ($buildStatus == 0) {

View File

@ -7,6 +7,11 @@ use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
use JSON;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{circleci};
}
sub buildFinished {
my ($self, $build, $dependents) = @_;
my $cfg = $self->{config}->{circleci};

View File

@ -6,6 +6,11 @@ use File::Basename;
use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{coverityscan};
}
sub buildFinished {
my ($self, $b, $dependents) = @_;

View File

@ -9,6 +9,10 @@ use Hydra::Helper::Nix;
use Hydra::Helper::CatalystUtils;
use Hydra::Helper::Email;
sub isEnabled {
my ($self) = @_;
return $self->{config}->{email_notification} == 1;
}
my $template = <<EOF;
Hi,
@ -44,8 +48,6 @@ EOF
sub buildFinished {
my ($self, $build, $dependents) = @_;
return unless $self->{config}->{email_notification} // 0;
die unless $build->finished;
# Figure out to whom to send notification for each build. For
@ -98,7 +100,7 @@ sub buildFinished {
, dependents => [grep { $_->id != $build->id } @builds]
, baseurl => getBaseUrl($self->{config})
, showJobName => \&showJobName, showStatus => \&showStatus
, showSystem => index($build->job->name, $build->system) == -1
, showSystem => index($build->get_column('job'), $build->system) == -1
, nrCommits => $nrCommits
, authorList => $authorList
};
@ -117,9 +119,9 @@ sub buildFinished {
sendEmail(
$self->{config}, $to, $subject, $body,
[ 'X-Hydra-Project' => $build->project->name,
, 'X-Hydra-Jobset' => $build->jobset->name,
, 'X-Hydra-Job' => $build->job->name,
[ 'X-Hydra-Project' => $build->get_column('project'),
, 'X-Hydra-Jobset' => $build->get_column('jobset'),
, 'X-Hydra-Job' => $build->get_column('job'),
, 'X-Hydra-System' => $build->system
]);
}

View File

@ -8,6 +8,11 @@ use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
use List::Util qw(max);
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{githubstatus};
}
sub toGithubState {
my ($buildStatus) = @_;
if ($buildStatus == 0) {

View File

@ -16,6 +16,11 @@ use List::Util qw(max);
# - gitlab_project_id => ID of the project in Gitlab, i.e. in the above
# case the ID in gitlab of "nixexprs"
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{gitlab_authorization};
}
sub toGitlabState {
my ($status, $buildStatus) = @_;
if ($status == 0) {
@ -50,7 +55,7 @@ sub common {
state => $state,
target_url => "$baseurl/build/" . $b->id,
description => "Hydra build #" . $b->id . " of $jobName",
name => "Hydra " . $b->job->name,
name => "Hydra " . $b->get_column('job'),
});
while (my $eval = $evals->next) {
my $gitlabstatusInput = $eval->jobsetevalinputs->find({ name => "gitlab_status_repo" });

View File

@ -5,6 +5,11 @@ use parent 'Hydra::Plugin';
use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{hipchat};
}
sub buildFinished {
my ($self, $build, $dependents) = @_;
@ -54,7 +59,7 @@ sub buildFinished {
my $msg = "";
$msg .= "<img src='$img'/> ";
$msg .= "Job <a href='$baseurl/job/${\$build->project->name}/${\$build->jobset->name}/${\$build->job->name}'>${\showJobName($build)}</a>";
$msg .= "Job <a href='$baseurl/job/${\$build->get_column('project')}/${\$build->get_column('jobset')}/${\$build->get_column('job')}'>${\showJobName($build)}</a>";
$msg .= " (and ${\scalar @deps} others)" if scalar @deps > 0;
$msg .= ": <a href='$baseurl/build/${\$build->id}'>" . showStatus($build) . "</a>";

View File

@ -7,6 +7,11 @@ use HTTP::Request;
use LWP::UserAgent;
# use Hydra::Helper::CatalystUtils;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{influxdb};
}
sub toBuildStatusDetailed {
my ($buildStatus) = @_;
if ($buildStatus == 0) {
@ -99,10 +104,10 @@ sub buildFinished {
my $tagSet = {
status => toBuildStatusClass($b->buildstatus),
result => toBuildStatusDetailed($b->buildstatus),
project => $b->project->name,
jobset => $b->jobset->name,
repo => ($b->jobset->name =~ /^(.*)\.pr-/) ? $1 : $b->jobset->name,
job => $b->job->name,
project => $b->get_column('project'),
jobset => $b->get_column('jobset'),
repo => ($b->get_column('jobset') =~ /^(.*)\.pr-/) ? $1 : $b->get_column('jobset'),
job => $b->get_column('job'),
system => $b->system,
cached => $b->iscachedbuild ? "true" : "false",
};

View File

@ -5,6 +5,11 @@ use parent 'Hydra::Plugin';
use experimental 'smartmatch';
use JSON;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{runcommand};
}
sub configSectionMatches {
my ($name, $project, $jobset, $job) = @_;

View File

@ -14,6 +14,11 @@ use Nix::Store;
use Hydra::Model::DB;
use Hydra::Helper::CatalystUtils;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{s3backup};
}
my $client;
my %compressors = (
xz => "| $Nix::Config::xz",

View File

@ -7,6 +7,11 @@ use LWP::UserAgent;
use Hydra::Helper::CatalystUtils;
use JSON;
sub isEnabled {
my ($self) = @_;
return defined $self->{config}->{slack};
}
sub renderDuration {
my ($build) = @_;
my $duration = $build->stoptime - $build->starttime;
@ -76,7 +81,7 @@ sub buildFinished {
"danger";
my $text = "";
$text .= "Job <$baseurl/job/${\$build->project->name}/${\$build->jobset->name}/${\$build->job->name}|${\showJobName($build)}>";
$text .= "Job <$baseurl/job/${\$build->get_column('project')}/${\$build->get_column('jobset')}/${\$build->get_column('job')}|${\showJobName($build)}>";
$text .= " (and ${\scalar @deps} others)" if scalar @deps > 0;
$text .= ": <$baseurl/build/${\$build->id}|" . showStatus($build) . ">". " in " . renderDuration($build);