test_editors: - version: 2018.4 # 2018.4 doesn't support code-coverage enableCodeCoverage: !!bool false # We want some scene tests to run in the DevProject, but packages there only support 2019+ testProject: Project - version: 2019.4 enableCodeCoverage: !!bool true testProject: DevProject - version: 2020.1 enableCodeCoverage: !!bool true testProject: DevProject - version: 2020.2 enableCodeCoverage: !!bool true testProject: DevProject trunk_editor: - version: trunk enableCodeCoverage: !!bool true testProject: DevProject test_platforms: - name: win type: Unity::VM image: package-ci/win10:stable flavor: b1.large - name: mac type: Unity::VM::osx image: package-ci/mac:stable flavor: b1.small - name: linux type: Unity::VM image: package-ci/ubuntu:stable flavor: b1.medium packages: - name: com.unity.ml-agents assembly: Unity.ML-Agents minCoveragePct: 72 - name: com.unity.ml-agents.extensions assembly: Unity.ML-Agents.Extensions minCoveragePct: 75 --- all_package_tests: name: Run All Combinations of Editors/Platforms Tests dependencies: {% for editor in test_editors %} {% for platform in test_platforms %} - .yamato/com.unity.ml-agents-test.yml#test_com.unity.ml-agents_{{ platform.name }}_{{ editor.version }} {% endfor %} {% endfor %} {% for editor in trunk_editor %} {% for platform in test_platforms %} - .yamato/com.unity.ml-agents-test.yml#test_com.unity.ml-agents_{{ platform.name }}_{{ editor.version }} {% endfor %} {% endfor %} triggers: cancel_old_ci: true recurring: - branch: master frequency: daily {% for package in packages %} {% for editor in test_editors %} {% for platform in test_platforms %} {% if editor.enableCodeCoverage %} {% capture coverageOptions %} --enable-code-coverage --code-coverage-options 'generateHtmlReport;assemblyFilters:+{{ package.assembly }}'{% endcapture %} {% else %} {% assign coverageOptions = "" %} {% endif %} test_{{ package.name }}_{{ platform.name }}_{{ editor.version }}: name : {{ package.name }} test {{ editor.version }} on {{ platform.name }} agent: type: {{ platform.type }} image: {{ platform.image }} flavor: {{ platform.flavor}} commands: - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm - upm-ci project test -u {{ editor.version }} --project-path {{ editor.testProject }} --package-filter {{ package.name }} {{ coverageOptions }} --extra-utr-arg "reruncount=2" {% if editor.enableCodeCoverage %} - python3 ml-agents/tests/yamato/check_coverage_percent.py upm-ci~/test-results/ {{ package.minCoveragePct }} {% endif %} artifacts: logs: paths: - "upm-ci~/test-results/**/*" dependencies: - .yamato/com.unity.ml-agents-pack.yml#pack triggers: cancel_old_ci: true {% if platform.name == "mac" %} # TODO remove develop-hybrid trigger before merging to master expression: | (pull_request.target eq "master" OR pull_request.target match "develop-hybrid.+" OR pull_request.target match "release.+") AND NOT pull_request.draft AND (pull_request.changes.any match "com.unity.ml-agents/**" OR pull_request.changes.any match " {{ editor.testProject }}/**" OR {% if package.name == "com.unity.ml-agents.extensions" %} pull_request.changes.any match "com.unity.ml-agents.extensions/**" OR {% endif %} pull_request.changes.any match ".yamato/com.unity.ml-agents-test.yml") {% endif %} {% endfor %} {% endfor %} {% endfor %} {% for package in packages %} {% for editor in trunk_editor %} {% for platform in test_platforms %} {% if editor.enableCodeCoverage %} {% capture coverageOptions %} --enable-code-coverage --code-coverage-options 'generateHtmlReport;assemblyFilters:+{{ package.assembly }}'{% endcapture %} {% else %} {% assign coverageOptions = "" %} {% endif %} test_{{ package.name }}_{{ platform.name }}_trunk: name : {{ package.name }} test {{ editor.version }} on {{ platform.name }} agent: type: {{ platform.type }} image: {{ platform.image }} flavor: {{ platform.flavor}} commands: - python -m pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple --upgrade - unity-downloader-cli -u trunk -c editor --wait --fast - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm - upm-ci project test -u {{ editor.version }} --project-path {{ editor.testProject }} --package-filter {{ package.name }} {{ coverageOptions }} --extra-utr-arg "reruncount=2" {% if editor.enableCodeCoverage %} - python3 ml-agents/tests/yamato/check_coverage_percent.py upm-ci~/test-results/ {{ package.minCoveragePct }} {% endif %} artifacts: logs: paths: - "upm-ci~/test-results/**/*" dependencies: - .yamato/com.unity.ml-agents-pack.yml#pack triggers: cancel_old_ci: true {% endfor %} {% endfor %} {% endfor %}