summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/jitterbug/Builder.pm4
-rw-r--r--lib/jitterbug/Emailer.pm43
2 files changed, 45 insertions, 2 deletions
diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm
index 376b98c..4a8451f 100644
--- a/lib/jitterbug/Builder.pm
+++ b/lib/jitterbug/Builder.pm
@@ -141,10 +141,10 @@ sub run_task {
my $output = $lines;
my $sha = $desc->{'id'};
my $on_failure = $conf->{'jitterbug'}{'build_process'}{'on_failure'};
- my $on_failure_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_email'};
+ my $on_failure_cc_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_email'};
$message =~ s/'/\\'/g; $commiter =~ s/'/\\'/g; $output =~ s/'/\\'/g;
- my $failure_cmd = sprintf("%s '%s' %s '%s' '%s' %s %s", $on_failure, $commiter, $task->project->name, $message, $output, $sha, $on_failure_email);
+ my $failure_cmd = sprintf("%s '%s' %s '%s' '%s' %s %s", $on_failure, $commiter, $task->project->name, $message, $output, $sha, $on_failure_cc_email);
debug("Running failure command: $failure_cmd");
`$failure_cmd`;
}
diff --git a/lib/jitterbug/Emailer.pm b/lib/jitterbug/Emailer.pm
new file mode 100644
index 0000000..97ec640
--- /dev/null
+++ b/lib/jitterbug/Emailer.pm
@@ -0,0 +1,43 @@
+package jitterbug::Emailer;
+
+use strict;
+use warnings;
+use Email::Stuff;
+
+sub new {
+ my $self = bless {} => shift;
+ my ($conf,$task,$tap_output) = @_;
+ # smelly
+ $self->{'conf'} = $conf;
+ $self->{'task'} = $task;
+ $self->{'tap_output'} = $tap_output;
+
+ return $self;
+}
+
+sub run {
+ my $self = shift;
+ my $buildconf = $conf->{'jitterbug'}{'build_process'};
+ my $project = $task->project->name;
+
+ my $sha1 = $task->commit->sha256;
+ my $body = <<BODY;
+$tap_output
+BODY
+
+ Email::Stuff->from($buildconf->{'on_failure_from_email')
+ ->to($buildconf->{'on_failure_to_email'})
+ ->cc($buildconf->{'on_failure_cc_email'})
+ ->text_body($body)
+ ->subject(
+ $buildconf->{'on_failure_subject_prefix'} . "$project @ $sha1"
+ )
+ # Should we attach a build log for convenience?
+ # ->attach(io('dead_bunbun_faked.gif')->all,
+ # filename => 'dead_bunbun_proof.gif')
+ ->send;
+
+ return $self;
+}
+
+1;