#!/usr/bin/env python3 # # Iterate over a set of configurations from json.conf, calling setup-config for each one, then running the build. # # Called with $1 - The json file containing the repositories to use # $2 - Where the artefacts were published # $3 - The build/release 'name' for release purposes # $4 - The shared repos directory (to resolve the repo revision hashes) # import json import os import sys import subprocess import errno import utils if len(sys.argv) != 6: print("Incorrect number of parameters, please call as %s " % sys.argv[0]) sys.exit(1) send = sys.argv[1] repojson = sys.argv[2] publish = sys.argv[3] rel_name = sys.argv[4] repodir = sys.argv[5] if send != "True" or publish == "None" or rel_name == "None": utils.printheader("Not sending QA email") sys.exit(0) scriptsdir = os.path.dirname(os.path.realpath(__file__)) ourconfig = utils.loadconfig(__file__) with open(repojson) as f: repos = json.load(f) buildhashes = "" for repo in sorted(repos.keys()): # Need the finalised revisions (not 'HEAD') targetrepodir = "%s/%s" % (repodir, repo) revision = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=targetrepodir).decode('utf-8').strip() buildhashes += "%s: %s\n" % (repo, revision) web_root = ourconfig.get('WEBPUBLISH_DIR') web_url = ourconfig.get('WEBPUBLISH_URL') email = "" mailto = ourconfig.get("QAMAIL_TO") if mailto: email += "To: " + mailto + "\n" mailcc = ourconfig.get("QAMAIL_CC") if mailcc: email += "Cc: " + mailcc + "\n" mailbcc = ourconfig.get("QAMAIL_BCC") if mailbcc: email += "Bcc: " + mailbcc + "\n" email += "Subject: " + "QA notification for completed autobuilder build (%s)\n" % rel_name 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 ''' % (rel_name, publish.replace(web_root, web_url), buildhashes) utils.printheader("Sending QA email") subprocess.check_call('echo "' + email +' " | sendmail -t', shell=True)