From e0f9ce9218fe3151fe6e395038bcd088dbafad2a Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 8 Jan 2011 01:44:59 -0800 Subject: Add ability to disable perlbrew This option comes in handy for those that want to run long test suites on just one version of Perl and/or those using local::lib (which doesn't play nice with perlbrew with XS modules). --- config.yml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'config.yml') diff --git a/config.yml b/config.yml index e4144c3..91e7265 100644 --- a/config.yml +++ b/config.yml @@ -18,6 +18,8 @@ jitterbug: build_process: builder: ./scripts/capsule.sh on_failure: ./scripts/build-failed.sh + options: + perlbrew: 1 plugins: DBIC: -- cgit 1.4.1 From b1a5bddc4c42308942d007ad71654f4bf4c0f282 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 10 Jan 2011 14:08:27 -0800 Subject: Add the ability to CC an email when builds fail --- config.yml | 1 + lib/jitterbug/Builder.pm | 4 +++- scripts/build-failed.sh | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'config.yml') diff --git a/config.yml b/config.yml index 91e7265..6230cf7 100644 --- a/config.yml +++ b/config.yml @@ -18,6 +18,7 @@ jitterbug: build_process: builder: ./scripts/capsule.sh on_failure: ./scripts/build-failed.sh + on_failure_email: alice@example.com options: perlbrew: 1 diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm index 6441c0d..0d24620 100644 --- a/lib/jitterbug/Builder.pm +++ b/lib/jitterbug/Builder.pm @@ -142,7 +142,9 @@ sub run_task { my $sha = $desc->{'id'}; my $on_failure = $conf->{'jitterbug'}{'build_process'}{'on_failure'}; - my $failure_cmd = "$on_failure $commiter $message $output $sha"; + my $on_failure_email = + $conf->{'jitterbug'}{'build_process'}{'on_failure_email'}; + my $failure_cmd = "$on_failure $commiter $message $output $sha $on_failure_email"; debug("Running failure command: $failure_cmd"); `$failure_cmd`; } diff --git a/scripts/build-failed.sh b/scripts/build-failed.sh index 43463b3..644e35f 100755 --- a/scripts/build-failed.sh +++ b/scripts/build-failed.sh @@ -2,10 +2,11 @@ COMMITER=$1 MESSAGE=$2 OUTPUT=$3 SHA=$4 +CC_EMAIL=$5 echo " Message: $MESSAGE $OUTPUT -" | mail -s "[jitterbug] BUILD FAILED $SHA" $COMMITER +" | mail -c "$CC_EMAIL" -s "[jitterbug] BUILD FAILED $SHA" $COMMITER -- cgit 1.4.1 From b3a31c9d5ac670a7e04602bb8e7e4e3018535e35 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 11 Jan 2011 16:39:51 -0500 Subject: Make failure email more customizable, start new jitterbug::Emailer in perl --- Build.PL | 1 + config.yml | 4 +++- lib/jitterbug/Builder.pm | 4 ++-- lib/jitterbug/Emailer.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ t/005_builder.t | 42 +++++++++++++++++++++++++++++++++++++----- 5 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 lib/jitterbug/Emailer.pm (limited to 'config.yml') diff --git a/Build.PL b/Build.PL index 7218a16..62f0cb4 100644 --- a/Build.PL +++ b/Build.PL @@ -27,6 +27,7 @@ my $builder = Module::Build->new( 'Digest::MD5' => 0, 'App::perlbrew' => 0, 'Dist::Zilla' => 0, + 'Email::Stuff' => 0, }, add_to_cleanup => [ 'jitterbug-' ], create_makefile_pl => 'traditional', diff --git a/config.yml b/config.yml index 6230cf7..4b88a9c 100644 --- a/config.yml +++ b/config.yml @@ -18,7 +18,9 @@ jitterbug: build_process: builder: ./scripts/capsule.sh on_failure: ./scripts/build-failed.sh - on_failure_email: alice@example.com + on_failure_cc_email: alice@example.com + on_failure_from_email: donotreply@example.com + on_failure_subject_prefix: "[jitterbug] FAIL " options: perlbrew: 1 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 = <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; diff --git a/t/005_builder.t b/t/005_builder.t index 15795d6..84e13ef 100644 --- a/t/005_builder.t +++ b/t/005_builder.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test::Most tests => 7; +use Test::Most tests => 9; use Data::Dumper; use jitterbug::Builder; @@ -30,13 +30,45 @@ use jitterbug::Builder; my $b = jitterbug::Builder->new(); isa_ok($b, 'jitterbug::Builder'); is($b->{'configfile'}, 't/data/test.yml'); - #warn Dumper [ $b ]; is($b->run, 0, '->run returns 0 in cron mode'); cmp_deeply($b->{'conf'}, { - 'configfile' => 't/data/test.yml', - 'cron' => 1, - 'sleep' => undef + 'engines' => { + 'xslate' => { + 'type' => 'text', + 'path' => '/', + 'cache' => '0' + } + }, + 'plugins' => { + 'DBIC' => { + 'schema' => { + 'connect_info' => [ + 'dbi:SQLite:dbname=jitterbug.db' + ], + 'pckg' => 'jitterbug::Schema', + 'skip_automake' => '1' + } + } + }, + 'jitterbug' => { + 'build_process' => { + 'on_failure' => './scripts/build-failed.sh', + 'builder' => './scripts/capsule.sh' + }, + 'builder' => {}, + 'reports' => { + 'dir' => '/tmp/jitterbug' + }, + 'build' => { + 'dir' => '/tmp/build' + } + }, + 'template' => 'xslate', + 'appname' => 'jitterbug', + 'layout' => 'main', + 'logger' => 'file', + 'builds_per_feed' => '5' }); -- cgit 1.4.1 From af6972d660d074f2971636c3b7384b7a75928fe7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 12 Jan 2011 16:02:00 -0800 Subject: Allow a header and footer for failure emails to be specified --- config.yml | 2 ++ lib/jitterbug/Emailer.pm | 6 ++++++ 2 files changed, 8 insertions(+) (limited to 'config.yml') diff --git a/config.yml b/config.yml index 4b88a9c..bf9bd23 100644 --- a/config.yml +++ b/config.yml @@ -21,6 +21,8 @@ jitterbug: on_failure_cc_email: alice@example.com on_failure_from_email: donotreply@example.com on_failure_subject_prefix: "[jitterbug] FAIL " + on_failure_header: + on_failure_footer: options: perlbrew: 1 diff --git a/lib/jitterbug/Emailer.pm b/lib/jitterbug/Emailer.pm index 4bf2e51..2af7590 100644 --- a/lib/jitterbug/Emailer.pm +++ b/lib/jitterbug/Emailer.pm @@ -25,9 +25,15 @@ sub run { my $sha1 = $task->commit->sha256; my $desc = JSON::decode_json( $task->commit->content ); my $email = $desc->{'author'}{'email'}; + my $header = $buildconf->{'on_failure_header'}; + my $footer = $buildconf->{'on_failure_footer'}; my $body = <from($buildconf->{'on_failure_from_email'}) -- cgit 1.4.1