yocto-autobuilder-helper/scripts/send-qa-email
Paul Eggleton d7d1a2b345 scripts: use argparse for command line parsing
[RP: Minor tweaks made to adpat to buildbot and option naming

Fixed shared-repo-unpack for publishing when no cache-dir supplied]

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-08-30 14:36:07 +01:00

2.5 KiB
Executable File

#!/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)