Add ZUUL_VOTING parameter
So that jobs, but especially post-processing such as elastic-recheck,
can tell whether Zuul considers a job voting or not.
Change-Id: I40746bb77aab900c1dd2637f940c14f72a904a61
diff --git a/doc/source/launchers.rst b/doc/source/launchers.rst
index b95354f..0a1e0e7 100644
--- a/doc/source/launchers.rst
+++ b/doc/source/launchers.rst
@@ -66,6 +66,11 @@
**LOG_PATH**
zuul also suggests a unique path for logs to the worker. This is
"BASE_LOG_PATH/pipeline-name/job-name/uuid"
+**ZUUL_VOTING**
+ Whether Zuul considers this job voting or not. Note that if Zuul is
+ reconfigured during the run, the voting status of a job may change
+ and this value will be out of date. Values are '1' if voting, '0'
+ otherwise.
Change related parameters
~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index 61a2d09..4955de6 100755
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -111,6 +111,9 @@
self.assertReportedStat(
'zuul.pipeline.gate.org.project.total_changes', value='1|c')
+ for build in self.builds:
+ self.assertEqual(build.parameters['ZUUL_VOTING'], '1')
+
def test_initial_pipeline_gauges(self):
"Test that each pipeline reported its length on start"
pipeline_names = self.sched.layout.pipelines.keys()
@@ -1256,6 +1259,9 @@
self.getJobFromHistory('nonvoting-project-test2').result,
'FAILURE')
+ for build in self.builds:
+ self.assertEqual(build.parameters['ZUUL_VOTING'], '0')
+
def test_check_queue_success(self):
"Test successful check queue jobs."
diff --git a/zuul/launcher/gearman.py b/zuul/launcher/gearman.py
index 828e2a9..4c39775 100644
--- a/zuul/launcher/gearman.py
+++ b/zuul/launcher/gearman.py
@@ -277,6 +277,7 @@
ZUUL_PROJECT=item.change.project.name)
params['ZUUL_PIPELINE'] = pipeline.name
params['ZUUL_URL'] = item.current_build_set.zuul_url
+ params['ZUUL_VOTING'] = job.voting and '1' or '0'
if hasattr(item.change, 'refspec'):
changes_str = '^'.join(
['%s:%s:%s' % (i.change.project.name, i.change.branch,