about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan "Duke" Leto <jonathan@leto.net>2011-02-01 09:33:37 -0800
committerJonathan "Duke" Leto <jonathan@leto.net>2011-02-01 09:33:37 -0800
commite67fff9ed6fc5f0ed7be6d74de819a02bf5debdd (patch)
treea5066d500165ba47c1c0ce0dd6d4e8ebd55ac31d
parentTeach capsule.sh about plain Makefile-based projects (diff)
downloadjitterbug-e67fff9ed6fc5f0ed7be6d74de819a02bf5debdd.tar.gz
Add ability to optionally send emails when the build passes
-rw-r--r--config.yml7
-rw-r--r--lib/jitterbug/Builder.pm17
-rw-r--r--scripts/build-pass.sh14
3 files changed, 37 insertions, 1 deletions
diff --git a/config.yml b/config.yml
index a0095fe..99ef6d6 100644
--- a/config.yml
+++ b/config.yml
@@ -24,8 +24,15 @@ jitterbug:
     on_failure_subject_prefix: "[jitterbug] FAIL "
     on_failure_header:
     on_failure_footer:
+    on_pass: ./scripts/build-passed.sh
+    on_pass_cc_email: alice@example.com
+    on_pass_subject_prefix: "[jitterbug] PASS "
+    on_pass_from_email: donotreply@example.com
+    on_pass_header:
+    on_pass_footer:
   options:
     perlbrew: 1
+    email_on_pass: 0
 
 plugins:
   DBIC:
diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm
index 26b25e5..4d439ec 100644
--- a/lib/jitterbug/Builder.pm
+++ b/lib/jitterbug/Builder.pm
@@ -142,7 +142,7 @@ sub run_task {
             my $output           = $lines;
             my $sha              = $desc->{'id'};
             my $on_failure       = $conf->{'jitterbug'}{'build_process'}{'on_failure'};
-            my $on_failure_cc_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_email'};
+            my $on_failure_cc_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_cc_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_cc_email);
@@ -156,6 +156,21 @@ sub run_task {
             } else {
                 system($failure_cmd);
             }
+        } elsif ($conf->{'options'}{'email_on_pass'}) {
+            $result = "PASS";
+            my $message          = $desc->{'message'};
+            my $commiter         = $desc->{'author'}{'email'};
+            my $output           = $lines;
+            my $sha              = $desc->{'id'};
+            my $on_pass          = $conf->{'jitterbug'}{'build_process'}{'on_pass'};
+            my $on_pass_cc_email = $conf->{'jitterbug'}{'build_process'}{'on_pass_cc_email'};
+
+            $message  =~ s/'/\\'/g; $commiter =~ s/'/\\'/g; $output =~ s/'/\\'/g;
+            my $pass_cmd = sprintf("%s '%s' %s '%s' '%s' %s %s", $on_pass, $commiter, $task->project->name, $message, $output, $sha, $on_pass_cc_email);
+            debug("Running pass command: $pass_cmd");
+
+            # TODO: create perl pass emailer
+            system($pass_cmd);
         }
         $desc->{'build'}{'version'}{$name} = $result;
         close $fh;
diff --git a/scripts/build-pass.sh b/scripts/build-pass.sh
new file mode 100644
index 0000000..9f6f2b8
--- /dev/null
+++ b/scripts/build-pass.sh
@@ -0,0 +1,14 @@
+COMMITER=$1
+PROJECT=$2
+MESSAGE=$3
+OUTPUT=$4
+SHA=$5
+CC_EMAIL=$6
+
+echo "
+Message:
+$MESSAGE
+
+Test Output:
+$OUTPUT
+" | mail -c "$CC_EMAIL" -s "[jitterbug] PASS $PROJECT @ $SHA" $COMMITER