diff --git a/ci/jobgenerator.py b/ci/jobgenerator.py index 6d078fb..b7e7a5a 100755 --- a/ci/jobgenerator.py +++ b/ci/jobgenerator.py @@ -107,6 +107,36 @@ class Generator: return server + def load_config(self, job_type, data): + """Return a template that is a result of loading the data + + This makes it easier to standardize several types of jobs + """ + + # The template name should always correspond with the job type + # Regardless of the job type, there should always be a template + with open("templates/" + job_type + ".xml") as templatef: + template = "" + for text in templatef.readlines(): + template += text + template = Template(template) + + if job_type == "package": + url = data["packaging_url"] + branch = data["packaging_branch"] + upstream = data["upstream_url"] + upload_target = data["upload_target"] + package_config = template.render(PACKAGING_URL=url, + PACKAGING_BRANCH=branch, + UPSTREAM_URL=upstream, + NAME=package["name"], + RELEASE=release, + UPLOAD_TARGET=upload_target) + else: + raise ValueError("Invalid job type") + + return package_config + def create_jenkins_jobs(self): """Interface with Jenkins to create the jobs required @@ -124,11 +154,6 @@ class Generator: server = self.auth_jenkins_server() # Assign the packagebuild template to a variable - with open("templates/packagebuild.xml") as templatef: - template = "" - for text in templatef.readlines(): - template += text - template = Template(template) # Iterate through the packages we have in our metadata and update the # job config for each if they match. If there's no existing job found, @@ -143,18 +168,8 @@ class Generator: for package in metadata: for release in package["releases"]: job_name = release + "_" + package["name"] - url = package["packaging_url"] - branch = package["packaging_branch"] - upstream = package["upstream_url"] - upload_target = package["upload_target"] - # TODO: This is just a dummy command to run in order to test - # the config updating - package_config = template.render(PACKAGING_URL=url, - PACKAGING_BRANCH=branch, - UPSTREAM_URL=upstream, - NAME=package["name"], - RELEASE=release, - UPLOAD_TARGET=upload_target) + # Load the config given the current data + package_config = self.load_config("package", package) if job_name in jobs: job = server.get_job(job_name) job.update_config(package_config)