diff --git a/.yamato/_triggers.yml b/.yamato/_triggers.yml index 0b651dfe66..549e90ccdb 100644 --- a/.yamato/_triggers.yml +++ b/.yamato/_triggers.yml @@ -2,42 +2,47 @@ --- # DESCRIPTION-------------------------------------------------------------------------- -# This configuration defines three main CI trigger patterns: -# 1. Pull Request Validation: Validation performed on PR basis -# 2. Nightly Development: Test set run nightly (validates most important test cases) -# 3. Weekly Full Validation: Test set run weekly (validates all test cases to prevent any surprises) -# Each pattern represents different balance between validation depth, execution time and CI resource usage + # This configuration defines three main CI trigger patterns: + # 1. Pull Request Validation: Validation performed on PR basis + # 2. Nightly Development: Test set run nightly (validates most important test cases) + # 3. Weekly Full Validation: Test set run weekly (validates all test cases to prevent any surprises) + # Each pattern represents different balance between validation depth, execution time and CI resource usage # TRIGGER PATTERNS------------------------------------------------------------------- + # Pull Request: -# This test validates Standards, Package tests, Project tests and Desktop standalone tests to ensure that main platforms are covered -# Triggers on PRs to develop, develop, and release branches -# Focuses on critical validation paths that we should validate before merging PRs -# Cancels previous runs on new commits -# Excludes draft PRs + # This test validates Standards, Package tests, Project tests and Desktop standalone tests to ensure that main platforms are covered + # Focuses on critical validation paths that we should validate before merging PRs. It also cancels previous runs on new commits + # By default it's triggered if + # 1) PR targets develop, develop-2.0.0 or release branches + # 2) PR is not a draft + # 3) PR changes files in package or testproject folders (doesn't run on for example DOCS only changes) + + # Note that in other cases you can trigger it by writing a comment "/ci ngo" in the PR thread # Nightly: -# This test validates same subset as pull_request_trigger with addition of mobile/console tests and webgl builds -# Runs daily on develop (local configuration) -# Includes all test types but only on trunk. -# Adds platform-specific and APV validation + # This test validates same subset as pull_request_trigger with addition of mobile/console tests and webgl builds + # Runs daily on develop (local configuration) + # Includes all test types but only on trunk. + # Adds platform-specific and APV validation # Weekly: -# This test validates same subset as develop_nightly but runs per all supported editors as well as executes code coverage test and runs project standards per project -# Runs across all supported editor versions -# Includes code coverage analysis -# Validates all projects and standards + # This test validates same subset as develop_nightly but runs per all supported editors as well as executes code coverage test and runs project standards per project + # Runs across all supported editor versions + # Includes code coverage analysis + # Validates all projects and standards # CONFIGURATION STRUCTURE-------------------------------------------------------------- -# Jobs configurations are generated by ensuring that all dependencies are successful. -# The dependencies are taken from _run-all.yml file where we can gather multiple tests into proper sets + # Jobs configurations are generated by ensuring that all dependencies are successful. + # The dependencies are taken from _run-all.yml file where we can gather multiple tests into proper sets # QUALITY CONSIDERATIONS--------------------------------------------------------------- -# It's important to ensure that all dependencies exist (this can be verified in Yamato) since a modification in parameters may result in a given job not being generated, and thus we will not be able to run such erroneous job. + # It's important to ensure that all dependencies exist (this can be verified in Yamato) since a modification in parameters may result in a given job not being generated, and thus we will not be able to run such erroneous job. #----------------------------------------------------------------------------------- + # Run all relevant tasks when a pull request targeting the develop or release branch is created or updated. # In order to have better coverage we run desktop standalone tests with different configurations which allows to mostly cover for different platforms, scripting backends and editor versions. # This job will FIRST run "run_quick_checks" jobs (defined in _run-all.yml) since it's the dependency of project pack jobs which is on the lowest dependency tier. This runs the fastest checks (like PVP or code standards) and ONLY IF those pass it will run the rest of the tests. @@ -60,15 +65,18 @@ pull_request_trigger: - .yamato/desktop-standalone-tests.yml#desktop_standalone_test_testproject_win_il2cpp_6000.0 - .yamato/cmb-service-standalone-tests.yml#cmb_service_standalone_test_testproject_ubuntu_il2cpp_trunk triggers: + # Note that PR tests will run ONLY if we are changing package/sample code. If changes are let's say docs only no tests will be triggered + # TODO: consider setting up and running tests from Examples/ + # TODO: or docs only changes are spelling/link check + expression: |- + pull_request.comment eq "ngo" OR + ((pull_request.target eq "develop" OR + pull_request.target eq "develop-2.0.0" OR + pull_request.target match "release/*") AND + NOT pull_request.draft AND + (pull_request.changes.any match "com.unity.netcode.gameobjects/**" OR + pull_request.changes.any match "testproject/**")) cancel_old_ci: true - pull_requests: - - targets: - only: - - "develop" - - "develop-2.0.0" - - "/release\/.*/" - - drafts: false - # Run all tests on trunk on nightly basis. # Same subset as pull_request_trigger with addition of mobile/desktop/console tests and webgl builds diff --git a/.yamato/disable-burst-if-requested.py b/.yamato/disable-burst-if-requested.py deleted file mode 100644 index edf84d3f26..0000000000 --- a/.yamato/disable-burst-if-requested.py +++ /dev/null @@ -1,97 +0,0 @@ -# This file was used before for mobiles and Webgl but was removed (around end of January 2025). The file itself was left here for now in case we would need to use it. -# This Python script is used to manage Burst AOT (Ahead-Of-Time) compilation settings for Unity builds. -# An example usage would be "- python .yamato/disable-burst-if-requested.py --project-path {{ project.path }} --platform WebGL" - -import argparse -import json -import os - - -args = None -platform_plugin_definition = None - - -def resolve_target(platform): - resolved_target = platform - if 'StandaloneWindows' in platform: - resolved_target = 'StandaloneWindows' - elif 'StandaloneLinux' in platform: - resolved_target = 'StandaloneLinux64' - - return resolved_target - - -def create_config(settings_path, platform): - config_name = os.path.join(settings_path, 'BurstAotSettings_{}.json'.format(resolve_target(platform))) - monobehaviour = { - 'm_Enabled': True, - 'm_EditorHideFlags': 0, - 'm_Name': "", - 'm_EditorClassIdentifier': 'Unity.Burst.Editor:Unity.Burst.Editor:BurstPlatformAotSettings', - 'DisableOptimisations': False, - 'DisableSafetyChecks': True, - 'DisableBurstCompilation': False - } - - data = {'MonoBehaviour': monobehaviour} - with open(config_name, 'w') as f: - json.dump(data, f) - return config_name - - -def get_or_create_AOT_config(project_path, platform): - settings_path = os.path.join(project_path, 'ProjectSettings') - if not os.path.isdir(settings_path): - os.mkdir(settings_path) - config_names = [os.path.join(settings_path, filename) for filename in os.listdir(settings_path) if filename.startswith("BurstAotSettings_{}".format(resolve_target(platform)))] - if not config_names: - return [create_config(settings_path, platform)] - return config_names - - -def disable_AOT(project_path, platform): - config_names = get_or_create_AOT_config(project_path, platform) - for config_name in config_names: - set_AOT(config_name, True) - - -def enable_AOT(project_path, platform): - config_names = get_or_create_AOT_config(project_path, platform) - for config_name in config_names: - set_AOT(config_name, False) - - -def set_AOT(config_file, status): - config = None - with open(config_file, 'r') as f: - config = json.load(f) - - assert config is not None, 'AOT settings not found; did the burst-enabled build finish successfully?' - - config['MonoBehaviour']['DisableBurstCompilation'] = status - with open(config_file, 'w') as f: - json.dump(config, f) - - -def main(): - enable_burst = os.environ.get('ENABLE_BURST_COMPILATION', 'true').strip().lower() - if enable_burst == 'true': - print('BURST COMPILATION: ENABLED') - elif enable_burst == 'false': - print('BURST COMPILATION: DISABLED') - disable_AOT(args.project_path, args.platform) - else: - sys.exit('BURST COMPILATION: unexpected value: {}'.format(enable_burst)) - - -def parse_args(): - global args - parser = argparse.ArgumentParser(description='This tool disables burst AOT compilation') - parser.add_argument('--project-path', help='Specify the location of the unity project.') - parser.add_argument('--platform', help="Platform to be used to run the build.") - args = parser.parse_args() - - -if __name__ == '__main__': - parse_args() - main() \ No newline at end of file diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md index 82bb8d4830..e2d4d7a36e 100644 --- a/com.unity.netcode.gameobjects/CHANGELOG.md +++ b/com.unity.netcode.gameobjects/CHANGELOG.md @@ -24,7 +24,6 @@ Additional documentation and release notes are available at [Multiplayer Documen - Fixed issue where a client, under above average latency and packet loss conditions, could receive multiple NetworkTransform state updates in one frame and when processing the state updates only the last state update would be applied to the transform if interpolation was disabled. (#3614) - ### Security