From 26470f1656e0fda30761a0ce96a46753c740f391 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 8 Oct 2013 14:47:24 -0400 Subject: [PATCH] Check all inputs for blame but only email selected inputs Signed-off-by: Shea Levy --- src/lib/Hydra/Controller/Jobset.pm | 3 +-- src/lib/Hydra/Helper/AddBuilds.pm | 6 +++--- src/lib/Hydra/Helper/CatalystUtils.pm | 6 ++++-- src/lib/Hydra/Plugin/EmailNotification.pm | 6 ++---- src/lib/Hydra/Schema/BuildInputs.pm | 8 ++++---- src/lib/Hydra/Schema/JobsetInputs.pm | 8 ++++---- src/lib/Hydra/Schema/Jobsets.pm | 12 ++---------- src/root/edit-jobset.tt | 14 +++----------- src/script/hydra-evaluator | 2 +- src/sql/hydra.sql | 5 ++--- src/sql/upgrade-23.sql | 5 ++--- 11 files changed, 28 insertions(+), 47 deletions(-) diff --git a/src/lib/Hydra/Controller/Jobset.pm b/src/lib/Hydra/Controller/Jobset.pm index 0fa18717..75f1738a 100644 --- a/src/lib/Hydra/Controller/Jobset.pm +++ b/src/lib/Hydra/Controller/Jobset.pm @@ -206,7 +206,6 @@ sub updateJobset { , nixexprinput => $nixExprInput , enabled => $enabled ? 1 : 0 , enableemail => defined $c->stash->{params}->{enableemail} ? 1 : 0 - , emailresponsible => defined $c->stash->{params}->{emailresponsible} ? 1 : 0 , emailoverride => trim($c->stash->{params}->{emailoverride}) || "" , hidden => defined $c->stash->{params}->{visible} ? 0 : 1 , keepnr => int(trim($c->stash->{params}->{keepnr})) @@ -232,7 +231,7 @@ sub updateJobset { my $input = $jobset->jobsetinputs->create({ name => $name, type => $type, - checkresponsible => $c->stash->{params}->{"input-$baseName-checkresponsible"} + emailresponsible => defined $c->stash->{params}->{"input-$baseName-emailresponsible"} ? 1 : 0 }); # Set the values for this input. diff --git a/src/lib/Hydra/Helper/AddBuilds.pm b/src/lib/Hydra/Helper/AddBuilds.pm index d8b1af8b..99f1b85e 100644 --- a/src/lib/Hydra/Helper/AddBuilds.pm +++ b/src/lib/Hydra/Helper/AddBuilds.pm @@ -148,7 +148,7 @@ sub fetchInputSystemBuild { } sub fetchInput { - my ($plugins, $db, $project, $jobset, $name, $type, $value, $checkresponsbile) = @_; + my ($plugins, $db, $project, $jobset, $name, $type, $value, $emailresponsible) = @_; my @inputs; if ($type eq "build") { @@ -179,7 +179,7 @@ sub fetchInput { foreach my $input (@inputs) { $input->{type} = $type; - $input->{checkresponsible} = $checkresponsible; + $input->{emailresponsible} = $emailresponsible; } return @inputs; @@ -545,7 +545,7 @@ sub checkBuild { , uri => $input->{uri} , revision => $input->{revision} , value => $input->{value} - , checkresponsible => $input->{checkresponsible} + , emailresponsible => $input->{emailresponsible} , dependency => $input->{id} , path => $input->{storePath} || "" # !!! temporary hack , sha256hash => $input->{sha256hash} diff --git a/src/lib/Hydra/Helper/CatalystUtils.pm b/src/lib/Hydra/Helper/CatalystUtils.pm index 08ca5587..296f3118 100644 --- a/src/lib/Hydra/Helper/CatalystUtils.pm +++ b/src/lib/Hydra/Helper/CatalystUtils.pm @@ -259,10 +259,11 @@ sub getResponsibleAuthors { my $nrCommits = 0; my %authors; + my @emailable_authors; if ($prevBuild) { foreach my $curInput ($build->buildinputs_builds) { - next unless (($curInput->type eq "git" || $curInput->type eq "hg") && $curInput->checkresponsible); + next unless ($curInput->type eq "git" || $curInput->type eq "hg"); my $prevInput = $prevBuild->buildinputs_builds->find({ name => $curInput->name }); next unless defined $prevInput; @@ -278,12 +279,13 @@ sub getResponsibleAuthors { foreach my $commit (@commits) { #print STDERR "$commit->{revision} by $commit->{author}\n"; $authors{$commit->{author}} = $commit->{email}; + push @emailable_authors, $commit->{email} if $curInput->emailresponsible; $nrCommits++; } } } - return (\%authors, $nrCommits); + return (\%authors, $nrCommits, \@emailable_authors); } diff --git a/src/lib/Hydra/Plugin/EmailNotification.pm b/src/lib/Hydra/Plugin/EmailNotification.pm index f18a6569..e30f48af 100644 --- a/src/lib/Hydra/Plugin/EmailNotification.pm +++ b/src/lib/Hydra/Plugin/EmailNotification.pm @@ -79,14 +79,12 @@ sub buildFinished { } } - my ($authors, $nrCommits) = getResponsibleAuthors($build, $self->{plugins}); + my ($authors, $nrCommits, $emailable_authors) = getResponsibleAuthors($build, $self->{plugins}); my $authorList; if (scalar keys %{authors} > 0) { my @x = map { "$_ <$authors->{$_}>" } (sort keys %{$authors}); $authorList = join(" or ", scalar @x > 1 ? join(", ", @[0..scalar @x - 2]): (), $x[-1]); - if ($build->jobset->emailresponsible) { - $addresses{$authors->{$_}} = { builds => [ $build ] } foreach (keys %{$authors}); - } + $addresses{$_} = { builds => [ $build ] } foreach (@{$emailable_authors}); } # Send an email to each interested address. diff --git a/src/lib/Hydra/Schema/BuildInputs.pm b/src/lib/Hydra/Schema/BuildInputs.pm index 3c2bb0fb..dafae860 100644 --- a/src/lib/Hydra/Schema/BuildInputs.pm +++ b/src/lib/Hydra/Schema/BuildInputs.pm @@ -72,7 +72,7 @@ __PACKAGE__->table("BuildInputs"); data_type: 'text' is_nullable: 1 -=head2 checkresponsible +=head2 emailresponsible data_type: 'integer' default_value: 0 @@ -111,7 +111,7 @@ __PACKAGE__->add_columns( { data_type => "text", is_nullable => 1 }, "value", { data_type => "text", is_nullable => 1 }, - "checkresponsible", + "emailresponsible", { data_type => "integer", default_value => 0, is_nullable => 0 }, "dependency", { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, @@ -176,7 +176,7 @@ __PACKAGE__->belongs_to( ); -# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-07 14:04:49 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ks8PxHXTwtG+Zco0CAzECg +# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-08 13:08:15 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OaJPzRM+8XGsu3eIkqeYEw 1; diff --git a/src/lib/Hydra/Schema/JobsetInputs.pm b/src/lib/Hydra/Schema/JobsetInputs.pm index f1773693..c6dafde1 100644 --- a/src/lib/Hydra/Schema/JobsetInputs.pm +++ b/src/lib/Hydra/Schema/JobsetInputs.pm @@ -57,7 +57,7 @@ __PACKAGE__->table("JobsetInputs"); data_type: 'text' is_nullable: 0 -=head2 checkresponsible +=head2 emailresponsible data_type: 'integer' default_value: 0 @@ -74,7 +74,7 @@ __PACKAGE__->add_columns( { data_type => "text", is_nullable => 0 }, "type", { data_type => "text", is_nullable => 0 }, - "checkresponsible", + "emailresponsible", { data_type => "integer", default_value => 0, is_nullable => 0 }, ); @@ -150,7 +150,7 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-07 14:04:49 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OvSrNdXWqco666sy+rvsKw +# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-08 13:06:15 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+mZZqLjQNwblb/EWW1alLQ 1; diff --git a/src/lib/Hydra/Schema/Jobsets.pm b/src/lib/Hydra/Schema/Jobsets.pm index 2953b063..8ca9d174 100644 --- a/src/lib/Hydra/Schema/Jobsets.pm +++ b/src/lib/Hydra/Schema/Jobsets.pm @@ -95,12 +95,6 @@ __PACKAGE__->table("Jobsets"); default_value: 1 is_nullable: 0 -=head2 emailresponsible - - data_type: 'integer' - default_value: 0 - is_nullable: 0 - =head2 hidden data_type: 'integer' @@ -160,8 +154,6 @@ __PACKAGE__->add_columns( { data_type => "integer", default_value => 1, is_nullable => 0 }, "enableemail", { data_type => "integer", default_value => 1, is_nullable => 0 }, - "emailresponsible", - { data_type => "integer", default_value => 0, is_nullable => 0 }, "hidden", { data_type => "integer", default_value => 0, is_nullable => 0 }, "emailoverride", @@ -295,7 +287,7 @@ __PACKAGE__->belongs_to( ); -# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-07 14:04:49 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:hJ41oHEb9PjzluvL7f/ypw +# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-08 13:06:15 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BjT60mlrN7bnljqCMHbPEw 1; diff --git a/src/root/edit-jobset.tt b/src/root/edit-jobset.tt index 47213f11..383bbea9 100644 --- a/src/root/edit-jobset.tt +++ b/src/root/edit-jobset.tt @@ -26,7 +26,7 @@ [% IF edit %][% END %] - + [% END %] @@ -34,7 +34,7 @@ [% BLOCK renderJobsetInputs %] - + [% FOREACH input IN jobset.jobsetinputs %] @@ -118,14 +118,6 @@ -
-
- -
-
-
@@ -167,7 +159,7 @@ var x = $("#input-template").clone(true).attr("id", "").insertBefore($(this).parents("tr")).show(); $("#input-template-name", x).attr("name", newid + "-name"); $("#input-template-type", x).attr("name", newid + "-type"); - $("#input-template-checkresponsible", x).attr("name", newid + "-checkresponsible"); + $("#input-template-emailresponsible", x).attr("name", newid + "-emailresponsible"); $("#input-template", x).attr("id", newid); return false; }); diff --git a/src/script/hydra-evaluator b/src/script/hydra-evaluator index 1fb0461c..baf7162e 100755 --- a/src/script/hydra-evaluator +++ b/src/script/hydra-evaluator @@ -34,7 +34,7 @@ sub fetchInputs { foreach my $input ($jobset->jobsetinputs->all) { foreach my $alt ($input->jobsetinputalts->all) { push @{$$inputInfo{$input->name}}, $_ - foreach fetchInput($plugins, $db, $project, $jobset, $input->name, $input->type, $alt->value, $input->checkresponsible); + foreach fetchInput($plugins, $db, $project, $jobset, $input->name, $input->type, $alt->value, $input->emailresponsible); } } } diff --git a/src/sql/hydra.sql b/src/sql/hydra.sql index 2df03620..8717614a 100644 --- a/src/sql/hydra.sql +++ b/src/sql/hydra.sql @@ -57,7 +57,6 @@ create table Jobsets ( triggerTime integer, -- set if we were triggered by a push event enabled integer not null default 1, enableEmail integer not null default 1, - emailResponsible integer not null default 0, -- whether to email committers responsible for a build change hidden integer not null default 0, emailOverride text not null, keepnr integer not null default 3, @@ -78,7 +77,7 @@ create table JobsetInputs ( jobset text not null, name text not null, type text not null, -- "svn", "path", "uri", "string", "boolean", "nix" - checkResponsible integer not null default 0, -- whether this input should be checked for responsbile commits + emailResponsible integer not null default 0, -- whether to email committers to this input who change a build primary key (project, jobset, name), foreign key (project, jobset) references Jobsets(project, name) on delete cascade on update cascade ); @@ -259,7 +258,7 @@ create table BuildInputs ( uri text, revision text, value text, - checkResponsible integer not null default 0, + emailResponsible integer not null default 0, dependency integer, -- build ID of the input, for type == 'build' path text, diff --git a/src/sql/upgrade-23.sql b/src/sql/upgrade-23.sql index 2a53fe85..585711e6 100644 --- a/src/sql/upgrade-23.sql +++ b/src/sql/upgrade-23.sql @@ -1,3 +1,2 @@ -alter table Jobsets add column emailResponsible integer not null default 0; -alter table JobsetInputs add column checkResponsible integer not null default 0; -alter table BuildInputs add column checkResponsible integer not null default 0; +alter table JobsetInputs add column emailResponsible integer not null default 0; +alter table BuildInputs add column emailResponsible integer not null default 0;
Input nameTypeValuesCheck for responsible commits?
Input nameTypeValuesNotify committers