forked from lix-project/hydra
Merge branch 'circleci-plugin'
This commit is contained in:
commit
86aa851d8d
44
src/lib/Hydra/Plugin/CircleCINotification.pm
Normal file
44
src/lib/Hydra/Plugin/CircleCINotification.pm
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package Hydra::Plugin::CircleCINotification;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use parent 'Hydra::Plugin';
|
||||||
|
use HTTP::Request;
|
||||||
|
use LWP::UserAgent;
|
||||||
|
use Hydra::Helper::CatalystUtils;
|
||||||
|
use JSON;
|
||||||
|
|
||||||
|
sub buildFinished {
|
||||||
|
my ($self, $build, $dependents) = @_;
|
||||||
|
my $cfg = $self->{config}->{circleci};
|
||||||
|
my @config = defined $cfg ? ref $cfg eq "ARRAY" ? @$cfg : ($cfg) : ();
|
||||||
|
|
||||||
|
# Figure out to which branches to send notification.
|
||||||
|
my %branches;
|
||||||
|
foreach my $b ($build, @{$dependents}) {
|
||||||
|
my $prevBuild = getPreviousBuild($b);
|
||||||
|
my $jobName = showJobName $b;
|
||||||
|
|
||||||
|
foreach my $branch (@config) {
|
||||||
|
my $force = $branch->{force};
|
||||||
|
next unless $jobName =~ /^$branch->{jobs}$/;
|
||||||
|
|
||||||
|
# If build is failed, don't trigger circleci
|
||||||
|
next if ! $force && $b->buildstatus != 0;
|
||||||
|
|
||||||
|
my $fullUrl = "https://circleci.com/api/v1.1/project/" . $branch->{vcstype} . "/" . $branch->{username} . "/" . $branch->{project} . "/tree/" . $branch->{branch} . "?circle-token=" . $branch->{token};
|
||||||
|
$branches{$fullUrl} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return if scalar keys %branches == 0;
|
||||||
|
|
||||||
|
# Trigger earch branch
|
||||||
|
my $ua = LWP::UserAgent->new();
|
||||||
|
foreach my $url (keys %branches) {
|
||||||
|
my $req = HTTP::Request->new('POST', $url);
|
||||||
|
$req->header('Content-Type' => 'application/json');
|
||||||
|
$ua->request($req);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
Loading…
Reference in a new issue