Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a5df3df
Update labels in issue templates
michalChrobot Mar 18, 2025
daed839
docs: [NGOv1.X] Update of API Reference link (#3354)
michalChrobot Mar 19, 2025
12dd5bd
ci: [NGOv1.X] Corrections of CI setup issues (#3326)
michalChrobot Mar 21, 2025
ced4384
docs: [1.X] fixes of PVP exceptions (#3300)
michalChrobot Mar 24, 2025
d0f73d4
fix: Add OnPreShutdown to NetworkManager (#3358)
jonathanhertz Mar 26, 2025
02128fa
fix: Sync transform position on spawn (#3361)
EmandM Mar 26, 2025
3417c47
Add PR-3358 changelog entry
NoelStephensUnity Mar 29, 2025
36dd3ac
chore(deps): update dependency recipeengine.modules.wrench to 0.10.45…
unity-renovate[bot] Mar 31, 2025
d17d98b
ci: [1.X] disabling WebGL Build job on macOS due to "Light baking cou…
michalChrobot Mar 31, 2025
b0863ca
chore: [1.x] Add NetworkTransform parenting test (#3367)
EmandM Mar 31, 2025
7d20da4
chore: [1.X] Updated CODEOWNERS file (#3371)
michalChrobot Apr 1, 2025
b6d32f0
fix: network time system tests should use double fixed delta time (#3…
NoelStephensUnity Apr 1, 2025
f2a9e9f
chore: Add action to auto update labels on comments (#3194)
EmandM Apr 1, 2025
d115d00
chore: add small corrections to stale GitHub action (#3378)
michalChrobot Apr 1, 2025
f6d498d
chore: corrected IF statement for conversation GitHub Action (#3379)
michalChrobot Apr 2, 2025
c7996c6
fix: [BACKPORT] android time test failures due to edge case float pre…
michalChrobot Apr 2, 2025
011bd55
chore: Issues marked by "stat:import" OR "stat:imported" labels won't…
michalChrobot Apr 3, 2025
9728a78
Corrected github action syntax typo
michalChrobot Apr 3, 2025
56a2f20
fix: NetworkAnimator logging error when a state has no destination in…
NoelStephensUnity Apr 7, 2025
24be0bb
some changes
michalChrobot Apr 8, 2025
83322e8
bacport-verification
michalChrobot Apr 8, 2025
de8ccaf
corrected message
michalChrobot Apr 8, 2025
4d80ab0
Running test on edited PRs
michalChrobot Apr 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
# Order is important; the last matching pattern takes the most precedence.

* @Unity-Technologies/multiplayer-sdk
*.asmdef @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
package.json @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
AssemblyInfo.cs @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
.editorconfig @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
.gitignore @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
.github/ @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
.yamato/ @miniwolf @NoelStephensUnity @fluong6 @michalChrobot @EmandM
*.asmdef @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
package.json @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
AssemblyInfo.cs @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
.editorconfig @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
.gitignore @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
.github/ @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
.yamato/ @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Bug report
about: Create a report to help us improve
title: ''
labels: stat:awaiting triage, type:bug
labels: stat:awaiting-triage, stat:reply-needed, type:bug
assignees: ''

---
Expand Down Expand Up @@ -39,4 +39,4 @@ If applicable, add screenshots to help explain your problem.

### Additional Context

Add any other context about the problem here. Logs, code snippets would be useful here but please also consider attaching a minimal Unity project that reproduces the issue.
Add any other context about the problem here. Logs, code snippets would be useful here but please also consider attaching a minimal Unity project that reproduces the issue.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Feature Request
about: Suggest an idea for this project
title: ''
labels: stat:awaiting triage, type:feature
labels: stat:awaiting-triage, stat:reply-needed, type:feature
assignees: ''

---
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feedback.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Feedback
about: Provide feedback to the Netcode for GameObjects team
title: ''
labels: stat:awaiting triage, type:feedback
labels: stat:awaiting-triage, stat:reply-needed, type:feedback
assignees: ''

---
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/other-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Other Issues
about: Use this template for any other non-support related issues
title: ''
labels: stat:awaiting triage
labels: stat:awaiting-triage, stat:reply-needed
assignees: ''

---
Expand Down
10 changes: 0 additions & 10 deletions .github/ISSUE_TEMPLATE/rfc-tracking-issue.md

This file was deleted.

2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/support.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Support
about: Have a question or need help with anything?
title: ''
labels: stat:awaiting triage, type:support
labels: stat:awaiting-triage, stat:reply-needed, type:support
assignees: ''

---
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/backport-verification.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: "NGO - Backport Verification"

on:
pull_request:
types: [opened, edited]
branches:
- develop
- develop-2.0.0

jobs:
backport-verification:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Check PR description
uses: actions/github-script@v6
with:
script: |
const pr = context.payload.pull_request;
const body = pr.body || '';

if (!body.includes('## Backport')) {
core.setFailed('PR description must include a "## Backport" section. Please add this section and provide information about this PR backport to develop or develop-2.0.0 branch or explain why backport is not needed.');
}
80 changes: 80 additions & 0 deletions .yamato/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Netcode for GameObjects CI Documentation

## Overview
This document provides an overview of the Continuous Integration (CI) implementation for Netcode for GameObjects.
Specifics of each test are described within related files (for example .yamato/package-tests.yml) and this file present high level overview related to overall implementation.

## Test Configurations
CI related files are present inside .yamato/ folder and we can distinguish specific tests

### Helper jobs
- `.yamato/package-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
- `.yamato/project-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing. This packs all packages of a given project.
- `.yamato/_run-all.yml` responsible for grouping tests into groups for easier management (for example "all console tests").
- `.yamato/_triggers.yml` responsible for defining triggers (PR, nightly, weekly etc.) and defining which tests to run.
- `disable-burst-if-requested.py` responsible for helping to disable burst if needed.
- `.yamato/project.metafile` being the central configuration file defining test environments, platforms, projects, editors and other parameters used.

### In-Editor Tests
- `.yamato/package-tests.yml` responsible for running package tests.
- `.yamato/project-tests.yml` responsible for running project tests.
- `.yamato/project-updated-dependencies-test.yml` responsible for running tests after updating dependencies to latest ones.
- `.yamato/project-standards.yml` responsible for running standards check on a package.
- `.yamato/code-coverage.yml` responsible for running code coverage analysis.
- `.yamato/performance-tests.yml` responsible for running performance tests.
- `.yamato/webgl-build.yml` responsible for making a build for webgl platform.

### Standalone Tests
- `.yamato/desktop-standalone-tests.yml` responsible for running tests on standalone desktops.
- `.yamato/console-standalone-test.yml` responsible for running tests on standalone consoles.
- `.yamato/mobile-standalone-test.yml` responsible for running tests on standalone mobiles.

### Wrench jobs
This file is auto generated by wrench and used for automating release process.
Those tests can also be used by our CI as dependencies.
- `.yamato/wrench/api-validation-jobs.yml` responsible for validating api for a given package version (for example if there are no breaking changes when updating patch version)
- `.yamato/wrench/package-pack-jobs.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
- `.yamato/wrench/preview-a-p-v.yml` responsible for validating PVP (Package Verification Profiles) standards for the package.
- `.yamato/wrench/promotion-jobs.yml` responsible for publishing.
- `.yamato/wrench/publish-trigger.yml` responsible for defining jobs that need to pass in order to publish.
- `.yamato/wrench/recipe-regeneration.yml` responsible for verifying regeneration of wrench recipes (no manual changes).
- `.yamato/wrench/validation-jobs.yml` responsible for running package tests.
- `.yamato/wrench/wrench_config.json` this is the configuration file for wrench.
- `.yamato/generated-scripts/` is a collection of infrastructure instability detection tools.

## Jobs Configuration Structure
This section explains some configuration details that may be confusing while looking at .yml files.

### Job Generation
Our configuration uses a dynamic job generation approach based on the `.yamato/project.metafile` configuration. While it may appear that only one job is defined per file, the system (Yamato) actually generates multiple jobs through nested loops.
Usually only 1 job is defined and then generated with multiple configurations/parameters but in case of standalone tests 2 jobs are defined which are responsible for building and then testing.

### Job Naming Convention
Because the jobs are being generated their names will be filled by given parameters from project.metfaile. For example jobs from .yamato/console-standalone-test may have names like:
- Display Name (in Yamato): `Build testproject - [win, 6000.0, il2cpp]`
- Internal Job Name (used when adding dependency for example): `console_standalone_build_testproject_win_6000.0`

## Platform Support
Currently, the CI implementation supports the following platforms:
1. Console Platforms:
- Switch
- PS4
- PS5
- Xbox360
- XboxOne
2. Mobile Platforms:
- Android
- iOS
3. Desktop Platforms:
- Windows
- Ubuntu
- macOS
4. Unity Editor Versions
- Supports NGOv1.X (2021.3+ editors)
5. Architectures
- x64
- ARM64 (This is present for consoles/mobiles but will be extended. More information is present in specific standalone test files)

## Design Considerations
In theory, we could manually write jobs for every configuration. However, this approach would be more error-prone, especially when modifications or fixes are needed, as it would require keeping track of all configurations.
The downside of our current approach is that it can sometimes impact readability due to the use of nested if and for statements.
45 changes: 23 additions & 22 deletions .yamato/_run-all.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
{% metadata_file .yamato/project.metafile %}
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---

# DESCRIPTION--------------------------------------------------------------------------
# Those jobs group together related test as dependencies to allow to easily manage running a given set of tests.
# This enables efficient test execution for different validation scenarios

# 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.

#-----------------------------------------------------------------------------------


# Runs all package tests
run_all_package_tests:
name: Run All Package Tests
Expand Down Expand Up @@ -92,9 +102,11 @@ run_all_webgl_builds:
dependencies:
{% for project in projects.default -%}
{% for platform in test_platforms.desktop -%}
{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
{% for editor in validation_editors.all -%}
- .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endif -%}
{% endfor -%}
{% endfor -%}

Expand All @@ -105,9 +117,11 @@ run_all_webgl_builds_trunk:
dependencies:
{% for project in projects.default -%}
{% for platform in test_platforms.desktop -%}
{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
{% for editor in validation_editors.default -%}
- .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endif -%}
{% endfor -%}
{% endfor -%}

Expand All @@ -117,7 +131,9 @@ run_all_webgl_builds_2021:
dependencies:
{% for project in projects.default -%}
{% for platform in test_platforms.desktop -%}
{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
- .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_2021.3
{% endif -%}
{% endfor -%}
{% endfor -%}

Expand All @@ -130,13 +146,7 @@ run_all_project_tests_desktop_standalone:
{% for platform in test_platforms.desktop -%}
{% for editor in validation_editors.all -%}
{% for backend in scripting_backends -%}
# There is an error 'No usable version of libssl' when it comes to building with combination of ubuntu and 2021 editor. It's not really worth to address it since
# 1) The 2021 editor will soon be out of support
# 2) We still have the same coverage by using mac and ubuntu is used in a whole bunch of different tests, so I'm quite sure it won't lead to any bug leaks
# 3) The solution could be to manually install libss1.1 (since image has libssl3 and this causes conflicts on 2021 editor related to dotnet versions and support). There were several threads on this topic which can be looked on
{% if editor != "2021.3" or platform.name != "ubuntu" %}
- .yamato/desktop-standalone-tests.yml#desktop_standalone_test_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}
{% endif -%}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand Down Expand Up @@ -164,13 +174,7 @@ run_all_project_tests_desktop_standalone_2021:
{% for project in projects.default -%}
{% for platform in test_platforms.desktop -%}
{% for backend in scripting_backends -%}
# There is an error 'No usable version of libssl' when it comes to building with combination of ubuntu and 2021 editor. It's not really worth to address it since
# 1) The 2021 editor will soon be out of support
# 2) We still have the same coverage by using mac and ubuntu is used in a whole bunch of different tests, so I'm quite sure it won't lead to any bug leaks
# 3) The solution could be to manually install libss1.1 (since image has libssl3 and this causes conflicts on 2021 editor related to dotnet versions and support). There were several threads on this topic which can be looked on
{% if platform.name != "ubuntu" %}
- .yamato/desktop-standalone-tests.yml#desktop_standalone_test_{{ project.name }}_{{ platform.name }}_{{ backend }}_2021.3
{% endif -%}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand All @@ -182,7 +186,7 @@ run_all_project_tests_mobile_standalone:
{% for project in projects.default -%}
{% for platform in test_platforms.mobile_test -%}
{% for editor in validation_editors.all -%}
- .yamato/mobile-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_{{ editor }}
- .yamato/mobile-standalone-test.yml#mobile_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand All @@ -195,7 +199,7 @@ run_all_project_tests_mobile_standalone_trunk:
{% for project in projects.default -%}
{% for platform in test_platforms.mobile_test -%}
{% for editor in validation_editors.default -%}
- .yamato/mobile-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_{{ editor }}
- .yamato/mobile-standalone-test.yml#mobile_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand All @@ -206,7 +210,7 @@ run_all_project_tests_mobile_standalone_2021:
dependencies:
{% for project in projects.default -%}
{% for platform in test_platforms.mobile_test -%}
- .yamato/mobile-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_2021.3
- .yamato/mobile-standalone-test.yml#mobile_standalone_test_{{ project.name }}_{{ platform.name }}_2021.3
{% endfor -%}
{% endfor -%}

Expand All @@ -218,10 +222,7 @@ run_all_project_tests_console_standalone:
{% for project in projects.default -%}
{% for platform in test_platforms.console_test -%}
{% for editor in validation_editors.all -%}
# When building consoles with 2023 editor there are errors related to SDK version or uninstalled components. I will disable those for now and will add to my investigation list
{% if editor != "2023.3" %}
- .yamato/console-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_{{ editor }}
{% endif -%}
- .yamato/console-standalone-test.yml#console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand All @@ -234,7 +235,7 @@ run_all_project_tests_console_standalone_trunk:
{% for project in projects.default -%}
{% for platform in test_platforms.console_test -%}
{% for editor in validation_editors.default -%}
- .yamato/console-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_{{ editor }}
- .yamato/console-standalone-test.yml#console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
Expand All @@ -245,6 +246,6 @@ run_all_project_tests_console_standalone_2021:
dependencies:
{% for project in projects.default -%}
{% for platform in test_platforms.console_test -%}
- .yamato/console-standalone-test.yml#run_{{ project.name }}_tests_{{ platform.name }}_2021.3
- .yamato/console-standalone-test.yml#console_standalone_test_{{ project.name }}_{{ platform.name }}_2021.3
{% endfor -%}
{% endfor -%}
42 changes: 41 additions & 1 deletion .yamato/_triggers.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,43 @@
{% metadata_file .yamato/project.metafile %}
{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---

# 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

# 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

# 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

# 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

# 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

# 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.


#-----------------------------------------------------------------------------------

# Run all relevant tasks when a pull request targeting the develop or release branch is created or updated.
pull_request_trigger:
name: Pull Request Trigger (develop, develop-2.0.0, & release branches)
Expand Down Expand Up @@ -66,6 +103,9 @@ develop_nightly:
# Build player for webgl platform on trunk and 2021 editors
- .yamato/project-updated-dependencies-test.yml#updated-dependencies_testproject_NGO_ubuntu_trunk
- .yamato/project-updated-dependencies-test.yml#updated-dependencies_testproject_NGO_win_2021.3
# Clean import test
- .yamato/clean-import-job.yml#clean_import_testproject_trunk
- .yamato/clean-import-job.yml#clean_import_testproject_2021.3


# Run all tests on weekly bases
Expand Down
Loading
Loading