diff --git a/doc/configuration_options.rst b/doc/configuration_options.rst index 12f356cb8..eb475ecdc 100644 --- a/doc/configuration_options.rst +++ b/doc/configuration_options.rst @@ -199,6 +199,11 @@ The following options are valid in version ``2`` (beside the generic options): * ``jenkins_source_job_priority``: the job priority of *source* jobs. * ``jenkins_source_job_timeout``: the job timeout for *source* jobs. +* ``jenkins_binary_job_weight_override``: per-package override of the number of + executors on a worker which are required to execute a job. + All jobs default to ``1``. + Uses the Jenkins Heavy Job plugin. + * ``notifications``: a dictionary with the following keys: * ``emails``: a list of static email addresses. diff --git a/ros_buildfarm/config/release_build_file.py b/ros_buildfarm/config/release_build_file.py index 76df34b6d..e50b8bd37 100644 --- a/ros_buildfarm/config/release_build_file.py +++ b/ros_buildfarm/config/release_build_file.py @@ -69,6 +69,11 @@ def __init__(self, name, data): # noqa: D107 self.jenkins_source_job_timeout = \ int(data['jenkins_source_job_timeout']) + self.jenkins_binary_job_weight_overrides = {} + if 'jenkins_binary_job_weight_overrides' in data: + self.jenkins_binary_job_weight_overrides = data['jenkins_binary_job_weight_overrides'] + assert isinstance(self.jenkins_binary_job_weight_overrides, dict) + self.package_whitelist = [] if 'package_whitelist' in data and data['package_whitelist']: self.package_whitelist = data['package_whitelist'] diff --git a/ros_buildfarm/release_job.py b/ros_buildfarm/release_job.py index c156153a0..caf4965ab 100644 --- a/ros_buildfarm/release_job.py +++ b/ros_buildfarm/release_job.py @@ -719,6 +719,7 @@ def _get_binarydeb_job_config( 'github_url': get_github_project_url(release_repository.url), 'job_priority': build_file.jenkins_binary_job_priority, + 'job_weight': build_file.jenkins_binary_job_weight_overrides.get(pkg_name), 'node_label': get_node_label( build_file.jenkins_binary_job_label, get_default_node_label('%s_%s%s_%s' % ( diff --git a/ros_buildfarm/templates/release/deb/binarypkg_job.xml.em b/ros_buildfarm/templates/release/deb/binarypkg_job.xml.em index 38aefbfaa..c547ca8e3 100644 --- a/ros_buildfarm/templates/release/deb/binarypkg_job.xml.em +++ b/ros_buildfarm/templates/release/deb/binarypkg_job.xml.em @@ -40,6 +40,7 @@ but disabled since the package is blacklisted (or not whitelisted) in the config ))@ @(SNIPPET( 'property_job-weight', + weight=job_weight, ))@ @(SNIPPET(