aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/send-qa-email
blob: b2406cce0d88df95ce00d02f5391912290ec98d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python3
#
# Send email about the build to prompt QA to begin testing
#

import json
import os
import sys
import subprocess
import errno

import utils


parser = utils.ArgParser(description='Sends an email about the build to prompt QA to begin testing.')

parser.add_argument('send',
                    help="True to send email, otherwise the script will display a message and exit")
parser.add_argument('repojson',
                    help="The json file containing the repositories to use")
parser.add_argument('sharedrepodir',
                    help="The shared repos directory (to resolve the repo revision hashes)")
parser.add_argument('-p', '--publish-dir',
                    action='store',
                    help="Where the artefacts were published")
parser.add_argument('-r', '--release',
                    action='store',
                    help="The build/release 'name' for release purposes (optional)")

args = parser.parse_args()

if args.send.lower() != 'true' or not args.publish_dir or not args.release:
    utils.printheader("Not sending QA email")
    sys.exit(0)

scriptsdir = os.path.dirname(os.path.realpath(__file__))
ourconfig = utils.loadconfig()

with open(args.repojson) as f:
    repos = json.load(f)

buildhashes = ""
for repo in sorted(repos.keys()):
    # Need the finalised revisions (not 'HEAD')
    targetrepodir = "%s/%s" % (args.sharedrepodir, repo)
    revision = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=targetrepodir).decode('utf-8').strip()
    buildhashes += "%s: %s\n" % (repo, revision)

web_root = utils.getconfig('WEBPUBLISH_DIR', ourconfig)
web_url = utils.getconfig('WEBPUBLISH_URL', ourconfig)

email = ""
mailto = utils.getconfig("QAMAIL_TO", ourconfig)
if mailto:
    email += "To: " + mailto + "\n"
mailcc = utils.getconfig("QAMAIL_CC", ourconfig)
if mailcc:
    email += "Cc: " + mailcc + "\n"
mailbcc = utils.getconfig("QAMAIL_BCC", ourconfig)
if mailbcc:
    email += "Bcc: " + mailbcc + "\n"

email += "Subject: " + "QA notification for completed autobuilder build (%s)\n" % args.release
email += '''\n
A build flagged for QA (%s) was completed on the autobuilder and is available at:\n\n
    %s\n\n
Build hash information: \n
%s

\nThis is an automated message from the Yocto Project Autobuilder\nGit: git://git.yoctoproject.org/yocto-autobuilder2\nEmail: richard.purdie@linuxfoundation.org\n

''' % (args.release, args.publish_dir.replace(web_root, web_url), buildhashes)

utils.printheader("Sending QA email")
subprocess.check_call('echo "' + email +' " | sendmail -t', shell=True)