autobuild: Add --always-email option.
authorJelmer Vernooij <jelmer@samba.org>
Fri, 1 Oct 2010 09:28:48 +0000 (11:28 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 1 Oct 2010 16:49:39 +0000 (18:49 +0200)
script/autobuild.py

index 40635439c238e322e10e3d0bcafab9713958039d..10dd7a31339b19ac7df01c599216a0704b917c8f 100755 (executable)
@@ -319,6 +319,8 @@ parser.add_option("", "--retry", help="automatically retry if master changes",
                   default=False, action="store_true")
 parser.add_option("", "--email", help="send email to the given address on failure",
                   type='str', default=None)
                   default=False, action="store_true")
 parser.add_option("", "--email", help="send email to the given address on failure",
                   type='str', default=None)
+parser.add_option("", "--always-email", help="always send email, even on success",
+                  action="store_true")
 parser.add_option("", "--daemon", help="daemonize after initial setup",
                   action="store_true")
 
 parser.add_option("", "--daemon", help="daemonize after initial setup",
                   action="store_true")
 
@@ -354,6 +356,35 @@ or you can get full logs of all tasks in this job here:
     s.sendmail(msg['From'], [msg['To']], msg.as_string())
     s.quit()
 
     s.sendmail(msg['From'], [msg['To']], msg.as_string())
     s.quit()
 
+def email_success():
+    '''send an email to options.email about a successful build'''
+    user = os.getenv("USER")
+    text = '''
+Dear Developer,
+
+Your autobuild has succeeded.
+
+'''
+
+    if options.keeplogs:
+        text += '''
+
+you can get full logs of all tasks in this job here:
+
+  http://git.samba.org/%s/samba-autobuild/logs.tar.gz
+
+''' % (user,)
+    msg = MIMEText(text)
+    msg['Subject'] = 'autobuild success'
+    msg['From'] = 'autobuild@samba.org'
+    msg['To'] = options.email
+
+    s = smtplib.SMTP()
+    s.connect()
+    s.sendmail(msg['From'], [msg['To']], msg.as_string())
+    s.quit()
+
+
 (options, args) = parser.parse_args()
 
 if options.retry:
 (options, args) = parser.parse_args()
 
 if options.retry:
@@ -420,6 +451,8 @@ if status == 0:
     if options.keeplogs:
         blist.tarlogs("logs.tar.gz")
         print("Logs in logs.tar.gz")
     if options.keeplogs:
         blist.tarlogs("logs.tar.gz")
         print("Logs in logs.tar.gz")
+    if options.always_email:
+        email_success()
     blist.remove_logs()
     cleanup()
     print(errstr)
     blist.remove_logs()
     cleanup()
     print(errstr)