Merge "Add projects.required to zuul vars" into feature/zuulv3
diff --git a/doc/source/user/jobs.rst b/doc/source/user/jobs.rst
index 3d24f5d..6962b8f 100644
--- a/doc/source/user/jobs.rst
+++ b/doc/source/user/jobs.rst
@@ -244,6 +244,11 @@
          The path to the source code, relative to the work dir.  E.g.,
          `src/git.example.com/org/project`.
 
+      .. var:: required
+
+         A boolean indicating whether this project appears in the
+         :attr:`job.required-projects` list for this job.
+
    .. var:: tenant
 
       The name of the current Zuul tenant.
diff --git a/zuul/executor/client.py b/zuul/executor/client.py
index f97d286..eb2bfdf 100644
--- a/zuul/executor/client.py
+++ b/zuul/executor/client.py
@@ -234,6 +234,7 @@
         params['vars'] = copy.deepcopy(job.variables)
         params['zuul'] = zuul_params
         projects = set()
+        required_projects = set()
 
         def make_project_dict(project, override_branch=None):
             project_config = item.current_build_set.layout.project_configs.get(
@@ -260,6 +261,7 @@
                     make_project_dict(project,
                                       job_project.override_branch))
                 projects.add(project)
+                required_projects.add(project)
         for i in all_items:
             if i.change.project not in projects:
                 project = i.change.project
@@ -273,6 +275,7 @@
                 canonical_hostname=p.canonical_hostname,
                 canonical_name=p.canonical_name,
                 src_dir=os.path.join('src', p.canonical_name),
+                required=(p in required_projects),
             ))
 
         build = Build(job, uuid)