[CI] Exclude docs directories from triggering rebuilds

Currently when someone touches a docs directory in a subproject, it is
treated as if the source code of that project got touched, so the
project is built, it is tested, and the same for all of its enumerated
dependents. This is wasteful, particularly for patches just touching
docs in places like LLVM where we might spend an hour of node time to do
nothing useful given changes in the docs shouldn't cause test failures
and there is already another workflow that tests the documentation build
completes successfully.

Reviewers: Keenuts, tstellar, lnihlen

Reviewed By: tstellar

Pull Request: https://github.com/llvm/llvm-project/pull/133185
This commit is contained in:
Aiden Grossman 2025-03-28 22:30:41 -07:00 committed by GitHub
parent 34d858635f
commit 21eeca3db0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 0 deletions

View File

@ -194,6 +194,12 @@ def _compute_runtime_check_targets(runtimes_to_test: Set[str]) -> Set[str]:
def _get_modified_projects(modified_files: list[str]) -> Set[str]: def _get_modified_projects(modified_files: list[str]) -> Set[str]:
modified_projects = set() modified_projects = set()
for modified_file in modified_files: for modified_file in modified_files:
path_parts = pathlib.Path(modified_file).parts
# Exclude files in the docs directory. They do not impact an test
# targets and there is a separate workflow used for ensuring the
# documentation builds.
if len(path_parts) > 2 and path_parts[1] == "docs":
continue
modified_projects.add(pathlib.Path(modified_file).parts[0]) modified_projects.add(pathlib.Path(modified_file).parts[0])
return modified_projects return modified_projects

View File

@ -170,6 +170,15 @@ class TestComputeProjects(unittest.TestCase):
self.assertEqual(env_variables["runtimes_to_build"], "") self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "") self.assertEqual(env_variables["runtimes_check_targets"], "")
def test_exclude_docs(self):
env_variables = compute_projects.get_env_variables(
["llvm/docs/CIBestPractices.rst"], "Linux"
)
self.assertEqual(env_variables["projects_to_build"], "")
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()