From 93459535684b847f16c4fdeb043aeb10dae1c852 Mon Sep 17 00:00:00 2001 From: Jarek Potiuk Date: Thu, 10 Nov 2022 23:38:06 +0100 Subject: [PATCH] Only run mypy/flake static tests for providers in main branch (#27608) --- .github/workflows/ci.yml | 1 + scripts/ci/pre_commit/common_precommit_utils.py | 8 ++++++++ scripts/ci/pre_commit/pre_commit_flake8.py | 9 ++++++++- scripts/ci/pre_commit/pre_commit_mypy.py | 9 ++++++++- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc38df8d76023..e391a3748430d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -564,6 +564,7 @@ jobs: SKIP: ${{ needs.build-info.outputs.skip-pre-commits }} COLUMNS: "250" SKIP_GROUP_OUTPUT: "true" + DEFAULT_BRANCH: ${{ needs.build-info.outputs.default-branch }} - name: "Fix ownership" run: breeze ci fix-ownership if: always() diff --git a/scripts/ci/pre_commit/common_precommit_utils.py b/scripts/ci/pre_commit/common_precommit_utils.py index 080904ca1c032..aef6bc3dcea36 100644 --- a/scripts/ci/pre_commit/common_precommit_utils.py +++ b/scripts/ci/pre_commit/common_precommit_utils.py @@ -24,6 +24,14 @@ AIRFLOW_SOURCES_ROOT = Path(__file__).parents[3].resolve() +def filter_out_providers_on_non_main_branch(files: list[str]) -> list[str]: + """When running build on non-main branch do not take providers into account""" + default_branch = os.environ.get("DEFAULT_BRANCH") + if not default_branch or default_branch == "main": + return files + return [file for file in files if not file.startswith(f"airflow{os.sep}providers")] + + def insert_documentation(file_path: Path, content: list[str], header: str, footer: str): text = file_path.read_text().splitlines(keepends=True) replacing = False diff --git a/scripts/ci/pre_commit/pre_commit_flake8.py b/scripts/ci/pre_commit/pre_commit_flake8.py index b775d301c0b15..9c04bc2b481df 100755 --- a/scripts/ci/pre_commit/pre_commit_flake8.py +++ b/scripts/ci/pre_commit/pre_commit_flake8.py @@ -32,11 +32,18 @@ os.environ["SKIP_GROUP_OUTPUT"] = "true" if __name__ == "__main__": + sys.path.insert(0, str(Path(__file__).parent.resolve())) # make sure common_precommit_utils is imported + from common_precommit_utils import filter_out_providers_on_non_main_branch + sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src")) from airflow_breeze.global_constants import MOUNT_SELECTED from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags from airflow_breeze.utils.run_utils import get_ci_image_for_pre_commits, run_command + files_to_test = filter_out_providers_on_non_main_branch(sys.argv[1:]) + if not files_to_test: + print("No files to tests. Quitting") + sys.exit(0) airflow_image = get_ci_image_for_pre_commits() cmd_result = run_command( [ @@ -52,7 +59,7 @@ "never", airflow_image, "/opt/airflow/scripts/in_container/run_flake8.sh", - *sys.argv[1:], + *files_to_test, ], check=False, ) diff --git a/scripts/ci/pre_commit/pre_commit_mypy.py b/scripts/ci/pre_commit/pre_commit_mypy.py index 8cc4b4546d4c4..4b221247628e3 100755 --- a/scripts/ci/pre_commit/pre_commit_mypy.py +++ b/scripts/ci/pre_commit/pre_commit_mypy.py @@ -33,12 +33,19 @@ os.environ["SKIP_GROUP_OUTPUT"] = "true" if __name__ == "__main__": + sys.path.insert(0, str(Path(__file__).parent.resolve())) # make sure common_precommit_utils is imported + from common_precommit_utils import filter_out_providers_on_non_main_branch + sys.path.insert(0, str(AIRFLOW_SOURCES / "dev" / "breeze" / "src")) from airflow_breeze.global_constants import MOUNT_SELECTED from airflow_breeze.utils.docker_command_utils import get_extra_docker_flags from airflow_breeze.utils.path_utils import create_mypy_volume_if_needed from airflow_breeze.utils.run_utils import get_ci_image_for_pre_commits, run_command + files_to_test = filter_out_providers_on_non_main_branch(sys.argv[1:]) + if files_to_test == ["--namespace-packages"]: + print("No files to tests. Quitting") + sys.exit(0) airflow_image = get_ci_image_for_pre_commits() create_mypy_volume_if_needed() cmd_result = run_command( @@ -55,7 +62,7 @@ "never", airflow_image, "/opt/airflow/scripts/in_container/run_mypy.sh", - *sys.argv[1:], + *files_to_test, ], check=False, )