Skip to content

Commit 530c379

Browse files
committed
Comments pass 1
1 parent e772cd7 commit 530c379

11 files changed

+296
-55
lines changed

.yamato/_run-all.yml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,45 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Defines aggregation jobs that group related test executions
6+
# Provides both full validation (all editors) and trunk-only variants
7+
# Groups tests by type (package, project) and platform (desktop, mobile, console)
8+
# Enables efficient test execution for different validation scenarios
9+
10+
# AGGREGATION PATTERNS---------------------------------------------------------------
11+
# Two main patterns for each test type:
12+
# 1. Complete Validation: All supported Unity Editor versions
13+
# 2. Trunk Validation: Only latest Unity Editor version
14+
#
15+
# Test Types:
16+
# - Package Tests: NGO package validation
17+
# - Project Tests: Project-specific validation
18+
# - Standards Tests: Code standards verification
19+
# - Platform Tests: Platform-specific builds and tests
20+
# * Desktop (Windows, macOS, Linux)
21+
# * Mobile (iOS, Android)
22+
# * Console (PS4, PS5, Switch, Xbox)
23+
# * WebGL (build-only validation)
24+
25+
# USAGE GUIDELINES------------------------------------------------------------------
26+
# Complete Validation:
27+
# - Use for release validation
28+
# - Weekly automated runs
29+
# - Major version updates
30+
#
31+
# Trunk Validation:
32+
# - Use for quick verification
33+
# - Daily automated runs
34+
# - PR validation
35+
#
36+
# Platform-Specific:
37+
# - Use when targeting specific platform changes
38+
# - Hardware-dependent validation
39+
# - Platform certification requirements
40+
41+
#-----------------------------------------------------------------------------------
42+
443
# Runs all package tests
544
run_all_package_tests:
645
name: Run All Package Tests

.yamato/_triggers.yml

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,33 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Defines three main CI trigger patterns:
6+
# 1. Pull Request Validation: Basic validation for PR changes
7+
# 2. Nightly Development: Comprehensive testing on trunk
8+
# 3. Weekly Full Validation: Complete testing across all editor versions
9+
# Each pattern represents different balance between validation depth and execution time
10+
11+
# TRIGGER PATTERNS-------------------------------------------------------------------
12+
# Pull Request:
13+
# - Triggers on PRs to develop, develop-2.0.0, and release branches
14+
# - Focuses on critical validation paths
15+
# - Cancels previous runs on new commits
16+
# - Excludes draft PRs
17+
#
18+
# Nightly:
19+
# - Runs daily on develop-2.0.0
20+
# - Includes all test types but only on trunk
21+
# - Adds platform-specific and APV validation
22+
#
23+
# Weekly:
24+
# - Most comprehensive validation
25+
# - Runs across all supported editor versions
26+
# - Includes code coverage analysis
27+
# - Validates all projects and standards
28+
29+
#-----------------------------------------------------------------------------------
30+
431
# Run all relevant tasks when a pull request targeting the develop or release branch is created or updated.
532
pull_request_trigger:
633
name: Pull Request Trigger (develop, develop-2.0.0, & release branches)

.yamato/console-standalone-test.yml

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Builds a player on console standalone platform and executes RuntimeTests (equivalent to PlayMode tests) of the NGO package in the Standalone build.
5-
# Default project (testptoject) in this case is used as a context.
6-
# Builds/Tests are made on each console platform (PS4, PS5, Switch, XboxOne, XboxSeriesX) as in project.metafile declaration
7-
# Builds/Tests are made on each supported editor as in project.metafile declaration
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Console platform validation for NGO package using standalone builds
6+
# Executes runtime tests (PlayMode equivalent) in standalone console builds
7+
# Uses split build/run approach due to console-specific requirements
8+
# Covers PS4, PS5, Switch, XboxOne, and XboxSeriesX platforms
89

9-
# For SOME of the console devices it's necessary to split build and run phases so it was split for all
10-
# For all consoles we need to use il2cpp scripting backend (so no testing with mono)
11-
# Switch works only with ARM64 and the rest with x64 architectures
12-
# For now all platforms used for building are windows based
10+
# PLATFORM SPECIFICS-----------------------------------------------------------------
11+
# Common Requirements:
12+
# - All consoles require IL2CPP scripting backend
13+
# - Windows-based build machines required
14+
# - Platform-specific SDK environment variables
15+
#
16+
# Platform-Specific:
17+
# - Switch: ARM64 architecture only
18+
# - Other Consoles: x64 architecture
19+
# - Each console requires specific SDK paths and tools
20+
# - Some consoles require specific hardware models for testing
1321

14-
# Builds are made with x64 architecture machines since those are compatible to run on ARM64 devices
22+
# TECHNICAL CONSTRAINTS--------------------------------------------------------------
23+
# Build Phase:
24+
# - Windows build agents required
25+
# - Platform-specific SDK installations
26+
# - IL2CPP only (no Mono support)
27+
# - Architecture varies by console
28+
#
29+
# Run Phase:
30+
# - Requires specific console hardware
31+
# - Platform-specific environment setup
32+
# - Direct hardware access needed
33+
# - Specific SDK versions required
34+
35+
#-----------------------------------------------------------------------------------
36+
1537
{% for project in projects.default -%}
1638
{% for platform in test_platforms.console_build -%}
1739
{% for editor in validation_editors.all -%}

.yamato/desktop-standalone-tests.yml

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,32 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Builds a player on desktop standalone platform and executes RuntimeTests (equivalent to PlayMode tests) of the NGO package in the Standalone build.
5-
# Default project (testptoject) in this case is used as a context.
6-
# Builds are made on each desktop platform as in project.metafile declaration
7-
# Builds are made on each supported editor as in project.metafile declaration
8-
# Builds are made with different scripting backends as in project.metafile declaration
9-
# ARM64 architectures are for now not considered since Windows_arm64 is recommended to use only after builds (would require separation here) and when it comes to macOS_arm64 there is problem with OpenCL not being available
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Desktop platform validation for NGO package using standalone builds
6+
# Executes runtime tests (PlayMode equivalent) in standalone player builds
7+
# Uses split build and run approach for better resource utilization
8+
# Covers all supported desktop platforms with various configurations
109

11-
# Build phase
10+
# CONFIGURATION MATRIX---------------------------------------------------------------
11+
# Tests are executed across multiple dimensions:
12+
# 1. Desktop Platforms: Windows, macOS, Linux
13+
# 2. Unity Editor Versions: All supported versions
14+
# 3. Scripting Backends: IL2CPP and Mono
15+
# Note: ARM64 architectures are currently excluded because:
16+
# - Windows ARM64 is post-build only
17+
# - macOS ARM64 has OpenCL availability issues
18+
19+
# TECHNICAL CONSTRAINTS--------------------------------------------------------------
20+
# - GPU requirement varies by platform (required for Windows/Linux, optional for macOS)
21+
# - Default project used as test context
22+
# - Null graphics API used for test execution
23+
# - Separate build and run phases for better resource management
24+
# - 30-minute timeout for both build and run phases
25+
26+
#-----------------------------------------------------------------------------------
27+
28+
29+
# Build phase--------------------------------------------------------------------------
1230
{% for project in projects.default -%}
1331
{% for platform in test_platforms.desktop -%}
1432
{% for editor in validation_editors.all -%}
@@ -43,7 +61,7 @@ desktop_standalone_build_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{
4361

4462

4563

46-
# Run phase
64+
# Run phase--------------------------------------------------------------------------------
4765
{% for project in projects.default -%}
4866
{% for platform in test_platforms.desktop -%}
4967
{% for editor in validation_editors.all -%}

.yamato/mobile-standalone-test.yml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
3+
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Mobile platform validation for NGO package consisting of two phases:
6+
# 1. Build Phase: Creates standalone players for mobile platforms
7+
# 2. Run Phase: Executes runtime tests on actual mobile devices
8+
# Uses default project as test context for consistency
9+
# Covers both iOS and Android platforms with platform-specific requirements
10+
11+
# PLATFORM SPECIFICS-----------------------------------------------------------------
12+
# iOS Requirements:
13+
# - Must use IL2CPP scripting backend
14+
# - Only supports ARM64 architecture
15+
# - Builds on macOS agents only
16+
#
17+
# Android Requirements:
18+
# - Uses IL2CPP scripting backend (recommended over Mono)
19+
# - Supports both ARM64 and ARMv7 architectures
20+
# - Builds on any desktop platform
21+
#
22+
# Note: All builds use x64 machines for compatibility with ARM64 target devices
323

4-
# Builds a player on mobile standalone platform and executes RuntimeTests (equivalent to PlayMode tests) of the NGO package in the Standalone build.
5-
# Default project (testptoject) in this case is used as a context.
6-
# Builds/Tests are made on each mobile platform (Android and iOS) as in project.metafile declaration
7-
# Builds/Tests are made on each supported editor as in project.metafile declaration
8-
9-
# For mobile devices it's necessary to split build and run phases
10-
# For iOS we need to use il2cpp. For android we could use both but il2cpp is recommended so for now we will only use il2cpp as scripting backend
11-
# iOS works only with ARM64 and Android is tested with both ARM64 and ARMv7
1224

13-
# Builds are made with x64 architecture machines since those are compatible to run on ARM64 devices
1425
{% for project in projects.default -%}
1526
{% for platform in test_platforms.mobile_build -%}
1627
{% for editor in validation_editors.all -%}

.yamato/package-pack.yml

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,31 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Packs Netcode for GameObjects together with performing initial checks.
5-
# For this job no specific platform support and no running Unity instance is required so small agent (as per project.metafile definition) could be used to save resources and speed up the process.
6-
# If everyone adheres to this rule it can create bottlenecks (since everyone would use this machine) so we decided to pack with the same platform as the given job runs on
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Packages Netcode for GameObjects (NGO) and performs initial validation checks
6+
# Uses Package Verification Pipeline (PVP) for both packaging and validation
7+
# Includes x-ray validation for quick package structure verification
8+
# Distributed across platforms to prevent resource bottlenecks
9+
# Note: This is the first step in the package validation pipeline
10+
11+
# CONFIGURATION STRUCTURE--------------------------------------------------------------
12+
# Jobs are generated for each desktop platform:
13+
# - Windows, Ubuntu, macOS
14+
# While packaging doesn't require specific platforms, distribution helps:
15+
# - Prevent bottlenecks on minimal VMs
16+
# - Balance workload across available resources
17+
# - Maintain consistent environment with dependent jobs
18+
19+
# TECHNICAL CONSTRAINTS---------------------------------------------------------------
20+
# - No Unity Editor instance required
21+
# - Quick execution (15 minute timeout)
22+
# - Supports custom validation exceptions via pvpExceptions.json
23+
# - Uses PVP x-ray for lightweight validation
24+
# - Generates both package artifacts and validation results
25+
# - Allows missing checks (--allow-missing) for x-ray phase
26+
27+
#------------------------------------------------------------------------------------
28+
729
{% for platform in test_platforms.desktop -%}
830
package_pack_-_ngo_{{ platform.name }}:
931
name: Package Pack (and x-ray) - NGO [{{ platform.name }}]

.yamato/package-tests.yml

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Executes PlayMode and EditMode tests of the NGO package in the Editor context
5-
# Those tests run in the editor so we don't need to consider different scripting backends or architectures
6-
# Tests are executed for all supported editors on each desktop platform as in project.metafile declaration
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Executes NGO package validation and testing in Editor context
6+
# Combines Package Verification Pipeline (PVP) validation with UTR testing
7+
# Validates package structure, API compatibility, and runtime behavior
8+
# Covers both PlayMode and EditMode tests for the package
9+
# Note: Performance tests are explicitly excluded from this validation
10+
11+
# CONFIGURATION STRUCTURE--------------------------------------------------------------
12+
# Jobs are generated using nested loops through:
13+
# 1. All desktop platforms (Windows, Ubuntu, macOS)
14+
# 2. All supported Unity Editor versions
15+
# Package testing is comprehensive across environments because:
16+
# - Different platforms may expose platform-specific issues
17+
# - Editor versions may have different compatibility requirements
18+
# - API compatibility needs validation across all supported versions
19+
20+
# TECHNICAL CONSTRAINTS---------------------------------------------------------------
21+
# - Runs in Editor context only (no player builds)
22+
# - No scripting backend variations needed
23+
# - Requires successful package pack job
24+
# - Uses PVP for package validation
25+
# - Requires specific display configuration for Ubuntu
26+
# - Supports custom validation profiles via pvpExceptions.json
27+
# - Extended logging enabled via UNITY_EXT_LOGGING
28+
29+
#------------------------------------------------------------------------------------
30+
731
{% for platform in test_platforms.desktop -%}
832
{% for editor in validation_editors.all -%}
933
package_test_-_ngo_{{ editor }}_{{ platform.name }}:

.yamato/performance-tests.yml

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Performance tests for the `com.unity.netcode.gameobjects` package. No performance data will be reported.
5-
# Performance tests are executed within editor on desktop platforms in context of default project (testproject)
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Executes performance tests for NGO package without data reporting
6+
# Tests run in Editor context using default project configuration
7+
# Focuses on validating performance test execution rather than metrics collection
8+
# Serves as a validation step to ensure performance tests are functioning correctly
9+
# Note: This configuration explicitly disables performance data reporting
10+
11+
# CONFIGURATION STRUCTURE--------------------------------------------------------------
12+
# Jobs are generated using nested loops through:
13+
# 1. All desktop platforms (Windows, Ubuntu, macOS)
14+
# 2. All supported Unity Editor versions
15+
# 3. Default project only (testproject)
16+
# Comprehensive platform/editor coverage ensures test stability
17+
# Uses default project to maintain consistent test environment
18+
19+
# TECHNICAL CONSTRAINTS---------------------------------------------------------------
20+
# - Requires Unity Editor installation
21+
# - Tests run in Editor context only
22+
# - 3600 second (1 hour) timeout limit
23+
# - Focuses on Unity.NetCode.* assemblies
24+
# - Performance category tests only
25+
# - Disables package manager traces
26+
# - Includes extensive log collection
27+
# - No performance metrics are reported to monitoring systems
28+
29+
#------------------------------------------------------------------------------------
30+
631
{% for platform in test_platforms.desktop -%}
732
{% for editor in validation_editors.all -%}
833
{% for project in projects.default -%}

.yamato/project-standards.yml

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
1-
{% metadata_file .yamato/project.metafile %}
1+
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
22
---
33

4-
# Project standards are being checked for package (in project context).
5-
# It should be enough to perform the test on default project (testproject) but to make sure that all projects conform to our standards job for each of them will be available.
6-
# Tests are executed for default editor (trunk) on default platform (ubuntu) as in project.metafile declaration since results would be the same across editors and platforms.
4+
# DESCRIPTION--------------------------------------------------------------------------
5+
# Validates project compliance with NGO coding standards and conventions
6+
# While testproject validation would be sufficient, all projects are checked
7+
# to ensure consistent code quality across the entire codebase
8+
# Standards validation includes:
9+
# - Code formatting compliance
10+
# - Project structure validation
11+
# - Coding convention adherence
12+
# - Solution file synchronization
13+
14+
# CONFIGURATION STRUCTURE--------------------------------------------------------------
15+
# Jobs are generated using nested loops through:
16+
# 1. All projects (comprehensive validation)
17+
# 2. Default platform only (Ubuntu for efficiency)
18+
# 3. Default editor version (trunk)
19+
# Results are consistent across platforms/editors, so default configurations
20+
# are used to optimize CI resource usage
21+
22+
# TECHNICAL CONSTRAINTS---------------------------------------------------------------
23+
# - Requires .NET SDK installation
24+
# - Needs Unity Editor for solution synchronization
25+
# - Uses custom standards validation tool (netcode.standards)
26+
# - Platform/editor independent validation
27+
# - Generates no test artifacts (pass/fail only)
28+
29+
#------------------------------------------------------------------------------------
30+
731
{% for project in projects.all -%}
832
{% for platform in test_platforms.default -%}
933
{% for editor in validation_editors.default -%}
@@ -14,7 +38,7 @@ standards_{{ platform.name }}_{{ project.name }}_{{ editor }}:
1438
image: {{ platform.image }}
1539
flavor: {{ platform.flavor }}
1640
commands:
17-
# .NET environment setup
41+
# .NET environment setup. Ensures required .NET SDK and formatting tools are available
1842
- dotnet --version
1943
- dotnet format --version
2044

0 commit comments

Comments
 (0)