diff --git a/.github/workflows/ci_nightly.yml b/.github/workflows/ci_nightly.yml index 0e4553620..e15f5e887 100644 --- a/.github/workflows/ci_nightly.yml +++ b/.github/workflows/ci_nightly.yml @@ -53,6 +53,8 @@ concurrency: jobs: setup: uses: ./.github/workflows/setup.yml + with: + build_variant: "release" linux_build_and_test: name: Linux::${{ matrix.variant.family }}::${{ matrix.variant.build_variant_label }} diff --git a/build_tools/github_actions/amdgpu_family_matrix.py b/build_tools/github_actions/amdgpu_family_matrix.py index 8fe5750a4..58cad7062 100644 --- a/build_tools/github_actions/amdgpu_family_matrix.py +++ b/build_tools/github_actions/amdgpu_family_matrix.py @@ -3,6 +3,14 @@ * Each entry determines which families and test runners are available to use * Each group determines which entries run by default on workflow triggers + +For presubmit, postsubmit and nightly family selection: + +- presubmit runs the targets from presubmit dictionary on pull requests +- postsubmit runs the targets from presubmit and postsubmit dictionaries on pushes to main branch +- nightly runs targets from presubmit, postsubmit and nightly dictionaries + +TODO(#2200): clarify AMD GPU family selection """ all_build_variants = { @@ -49,10 +57,11 @@ "sanity_check_only_for_family": True, }, "windows": { - "test-runs-on": "", + "test-runs-on": "windows-gfx110X-gpu-rocm", "family": "gfx110X-all", "bypass_tests_for_releases": True, "build_variants": ["release"], + "sanity_check_only_for_family": True, }, }, "gfx1151": { @@ -148,19 +157,6 @@ "expect_pytorch_failure": True, }, }, - "gfx110x": { - "linux": { - "test-runs-on": "linux-gfx1101-gpu-rocm", - "family": "gfx110X-all", - "build_variants": ["release"], - "sanity_check_only_for_family": True, - }, - "windows": { - "test-runs-on": "windows-gfx110X-gpu-rocm", - "family": "gfx110X-all", - "build_variants": ["release"], - }, - }, "gfx1150": { "linux": { "test-runs-on": "", @@ -205,8 +201,6 @@ def get_all_families_for_trigger_types(trigger_types): for trigger_type in trigger_types: if trigger_type in matrix_map: for family_name, family_config in matrix_map[trigger_type].items(): - # Only add if not already present (first occurrence wins) - if family_name not in result: - result[family_name] = family_config + result[family_name] = family_config return result diff --git a/build_tools/github_actions/configure_ci.py b/build_tools/github_actions/configure_ci.py index 15ec89ed0..7a2e0b3c0 100755 --- a/build_tools/github_actions/configure_ci.py +++ b/build_tools/github_actions/configure_ci.py @@ -288,7 +288,7 @@ def matrix_generator( if is_push and base_args.get("branch_name") == "main": active_trigger_types.extend(["presubmit", "postsubmit"]) if is_schedule: - active_trigger_types.append("nightly") + active_trigger_types.extend(["presubmit", "postsubmit", "nightly"]) # Get the appropriate family matrix based on active triggers # For workflow_dispatch and PR labels, we need to check all matrices @@ -382,10 +382,23 @@ def matrix_generator( if is_schedule: print(f"[SCHEDULE] Generating build matrix with {str(base_args)}") - # Add _only_ nightly targets. - for key in amdgpu_family_info_matrix_nightly: + # For nightly runs, we run all builds and full tests + amdgpu_family_info_matrix_all = ( + amdgpu_family_info_matrix_presubmit + | amdgpu_family_info_matrix_postsubmit + | amdgpu_family_info_matrix_nightly + ) + for key in amdgpu_family_info_matrix_all: selected_target_names.append(key) + for key in lookup_matrix: + if ( + platform in lookup_matrix[key] + and "sanity_check_only_for_family" in lookup_matrix[key][platform] + ): + # For nightly runs, we want to run full tests regardless of limited machines, so we delete the sanity_check_only_for_family option + del lookup_matrix[key][platform]["sanity_check_only_for_family"] + # Ensure the lists are unique unique_target_names = list(set(selected_target_names)) unique_test_names = list(set(selected_test_names)) @@ -492,9 +505,10 @@ def main(base_args, linux_families, windows_families): test_type = "smoke" - # In the case of a scheduled run, we always want to build + # In the case of a scheduled run, we always want to build and we want to run full tests if is_schedule: enable_build_jobs = True + test_type = "full" else: modified_paths = get_modified_paths(base_ref) print("modified_paths (max 200):", modified_paths[:200])