Plugins: Add isEnabled method

Plugins are now disabled at startup time unless there is some relevant
configuration in hydra.conf. This avoids hydra-notify having to do a
lot of redundant work (a lot of plugins did a lot of database queries
*before* deciding they were disabled).

Note: BitBucketStatus users will need to add 'enable_bitbucket_status
= 1' to hydra.conf.
This commit is contained in:
Eelco Dolstra 2019-08-13 17:20:16 +02:00
parent f49a089fc0
commit 16811d3e78
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
12 changed files with 59 additions and 3 deletions

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

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) {

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) = @_;

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) {

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;