Skip to content

Commit 0d0ef5a

Browse files
committed
Added ci README file
1 parent 1945b64 commit 0d0ef5a

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

.yamato/CI_README.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Netcode for GameObjects CI Documentation
2+
3+
## Overview
4+
This document provides an overview of the Continuous Integration (CI) implementation for Netcode for GameObjects.
5+
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.
6+
7+
## Test Configurations
8+
CI related files are present inside .yamato/ folder and we can distinguish specific tests
9+
10+
### Helper jobs
11+
- `.yamato/package-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
12+
- `.yamato/project-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing. This packs all packages of a given project.
13+
- `.yamato/_run-all.yml` responsible for grouping tests into groups for easier management (for example "all console tests").
14+
- `.yamato/_triggers.yml` responsible for defining triggers (PR, nightly, weekly etc.) and defining which tests to run.
15+
- `disable-burst-if-requested.py` responsible for helping to disable burst if needed.
16+
- `.yamato/project.metafile` being the central configuration file defining test environments, platforms, projects, editors and other parameters used.
17+
18+
### In-Editor Tests
19+
- `.yamato/package-tests.yml` responsible for running package tests.
20+
- `.yamato/project-tests.yml` responsible for running project tests.
21+
- `.yamato/project-updated-dependencies-test.yml` responsible for running tests after updating dependencies to latest ones.
22+
- `.yamato/project-standards.yml` responsible for running standards check on a package.
23+
- `.yamato/code-coverage.yml` responsible for running code coverage analysis.
24+
- `.yamato/performance-tests.yml` responsible for running performance tests.
25+
- `.yamato/webgl-build.yml` responsible for making a build for webgl platform.
26+
27+
### Standalone Tests
28+
- `.yamato/desktop-standalone-tests.yml` responsible for running tests on standalone desktops.
29+
- `.yamato/console-standalone-test.yml` responsible for running tests on standalone consoles.
30+
- `.yamato/mobile-standalone-test.yml` responsible for running tests on standalone mobiles.
31+
32+
### Wrench jobs
33+
This file is auto generated by wrench and used for automating release process.
34+
Those tests can also be used by our CI as dependencies.
35+
- `.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)
36+
- `.yamato/wrench/package-pack-jobs.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
37+
- `.yamato/wrench/preview-a-p-v.yml` responsible for validating PVP (Package Verification Profiles) standards for the package.
38+
- `.yamato/wrench/promotion-jobs.yml` responsible for publishing.
39+
- `.yamato/wrench/publish-trigger.yml` responsible for defining jobs that need to pass in order to publish.
40+
- `.yamato/wrench/recipe-regeneration.yml` responsible for verifying regeneration of wrench recipes (no manual changes).
41+
- `.yamato/wrench/validation-jobs.yml` responsible for running package tests.
42+
- `.yamato/wrench/wrench_config.json` this is the configuration file for wrench.
43+
- `.yamato/generated-scripts/` is a collection of infrastructure instability detection tools.
44+
45+
## Jobs Configuration Structure
46+
This section explains some configuration details that may be confusing while looking at .yml files.
47+
48+
### Job Generation
49+
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.
50+
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.
51+
52+
### Job Naming Convention
53+
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:
54+
- Display Name (in Yamato): `Build testproject - [win, 6000.0, il2cpp]`
55+
- Internal Job Name (used when adding dependency for example): `console_standalone_build_testproject_win_6000.0`
56+
57+
## Platform Support
58+
Currently, the CI implementation supports the following platforms:
59+
1. Console Platforms:
60+
- Switch
61+
- PS4
62+
- PS5
63+
- Xbox360
64+
- XboxOne
65+
2. Mobile Platforms:
66+
- Android
67+
- iOS
68+
3. Desktop Platforms:
69+
- Windows
70+
- Ubuntu
71+
- macOS
72+
4. Unity Editor Versions
73+
- Supports NGOv1.X (2021.3+ editors)
74+
5. Architectures
75+
- x64
76+
- ARM64 (This is present for consoles/mobiles but will be extended. More information is present in specific standalone test files)
77+
78+
## Design Considerations
79+
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.
80+
The downside of our current approach is that it can sometimes impact readability due to the use of nested if and for statements.

0 commit comments

Comments
 (0)