🧪 Test (develop-preview) #98
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Required secrets | |
# UNITY_LICENSE: The contents of Unity license file | |
# UNITY_EMAIL: Unity user email to login | |
# UNITY_PASSWORD: Unity user password to login | |
name: 🧪 Test | |
run-name: 🧪 Test (${{ github.event.pull_request.title || github.ref_name }}) | |
env: | |
# MINIMUM_VERSION: The minimum version of Unity. | |
MINIMUM_VERSION: 2019.4 | |
# EXCLUDE_FILTER: The excluded versions of Unity. | |
EXCLUDE_FILTER: '(2020.2.0|2021.1|2023.3)' | |
on: | |
workflow_dispatch: | |
inputs: | |
usePeriodVersions: | |
description: 'Use the period versions (.0f1, .10f1, 20f1, ...).' | |
required: false | |
default: 'true' | |
push: | |
branches: | |
- develop | |
- develop-preview | |
tags: | |
- "!*" | |
paths-ignore: | |
- "**.md" | |
pull_request_target: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
paths-ignore: | |
- "**.md" | |
jobs: | |
setup: | |
name: ⚙️ Setup | |
runs-on: ubuntu-latest | |
outputs: | |
unityVersions: ${{ steps.setup.outputs.unityVersions }} | |
steps: | |
- name: ⚙️ Find target Unity versions | |
id: setup | |
run: | | |
echo "==== Target Unity Versions ====" | |
LATEST_VERSIONS=`npx unity-changeset list --versions --latest-patch --min ${MINIMUM_VERSION} --json --all` | |
if [ "${{ inputs.usePeriodVersions }}" = "true" ]; then | |
ADDITIONAL_VERSIONS=`npx unity-changeset list --versions --grep '0f' --min ${MINIMUM_VERSION} --json` | |
else | |
ADDITIONAL_VERSIONS=[] | |
fi | |
VERSIONS=`echo "[${LATEST_VERSIONS}, ${ADDITIONAL_VERSIONS}]" \ | |
| jq -c '[ flatten | sort | unique | .[] | select( test("${{ env.EXCLUDE_FILTER }}") | not ) ]'` | |
echo "unityVersions=${VERSIONS}" | tee $GITHUB_OUTPUT | |
test: | |
name: 🧪 Run tests | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
contents: read | |
needs: setup | |
strategy: | |
fail-fast: false | |
max-parallel: 6 | |
matrix: | |
unityVersion: ${{ fromJson(needs.setup.outputs.unityVersions) }} | |
steps: | |
- name: 🚚 Checkout ($${{ github.ref }}) | |
if: github.event_name == 'push' | |
uses: actions/checkout@v4 | |
- name: 🚚 Checkout pull request (pull_request_target) | |
if: github.event_name == 'pull_request_target' | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
fetch-depth: 0 | |
- name: 🚚 Marge pull request (pull_request_target) | |
if: github.event_name == 'pull_request_target' | |
run: | | |
git config user.name "GitHub Actions" | |
git config user.email "[email protected]" | |
git merge origin/${{ github.event.pull_request.base.ref }} --no-edit | |
- name: 📥 Cache library | |
uses: actions/cache@v4 | |
with: | |
path: Library | |
key: Library-${{ matrix.unityVersion }}-${{ github.event.pull_request.head.sha || github.sha }} | |
restore-keys: | | |
Library-${{ matrix.unityVersion }}- | |
Library- | |
- name: 🛠️ Build Unity Project (Test) | |
uses: game-ci/unity-builder@v4 | |
timeout-minutes: 45 | |
with: | |
customImage: ghcr.io/mob-sakai/unity3d:${{ matrix.unityVersion }} | |
targetPlatform: StandaloneLinux64 | |
allowDirtyBuild: true | |
customParameters: -nographics | |
env: | |
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
# - name: 🧪 Run tests | |
# uses: game-ci/unity-test-runner@v4 | |
# timeout-minutes: 45 | |
# with: | |
# customImage: ghcr.io/mob-sakai/unity3d:${{ matrix.unityVersion }} | |
# # unityVersion: ${{ matrix.unityVersion }} | |
# customParameters: -nographics | |
# checkName: ${{ matrix.unityVersion }} Test Results | |
# githubToken: ${{ github.token }} | |
# coverageOptions: "dontClear;generateHtmlReport;generateBadgeReport;pathFilters:+**/Packages/src/**;assemblyFilters:+<packages>,-*.Editor,-*.Test" |