You've already forked ParticleEffectForUGUI
mirror of
https://github.com/mob-sakai/ParticleEffectForUGUI.git
synced 2026-06-13 15:43:42 +00:00
126 lines
4.4 KiB
YAML
126 lines
4.4 KiB
YAML
# 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: 2020.3
|
|
# EXCLUDE_FILTER: The excluded versions of Unity.
|
|
EXCLUDE_FILTER: "(2017|2018|2023.3)"
|
|
PROJECT_PATH: .
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
usePeriodVersions:
|
|
description: "Use the period versions (.0f1, .10f1, 20f1, ...)."
|
|
required: false
|
|
default: "true"
|
|
push:
|
|
branches:
|
|
- develop
|
|
- "develop-*"
|
|
tags:
|
|
- "!*"
|
|
paths-ignore:
|
|
- "**.md"
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- synchronize
|
|
paths-ignore:
|
|
- "**.md"
|
|
|
|
jobs:
|
|
setup:
|
|
name: ⚙️ Setup
|
|
runs-on: ubuntu-latest
|
|
permissions: {} # No permissions needed for setup job
|
|
outputs:
|
|
unityVersions: ${{ steps.setup.outputs.unityVersions }}
|
|
steps:
|
|
- name: 🔑 Secrets check
|
|
run: |
|
|
if [ -z "$UNITY_EMAIL" ] || [ -z "$UNITY_PASSWORD" ] || [ -z "UNITY_LICENSE" ]; then
|
|
echo "Error: UNITY_EMAIL, UNITY_PASSWORD, and UNITY_LICENSE secrets must be set." | tee -a $GITHUB_STEP_SUMMARY >&2
|
|
echo "Error: See https://game.ci/docs/github/test-runner#basic-setup" | tee -a $GITHUB_STEP_SUMMARY >&2
|
|
echo "Error: Set the secrets at ${{ github.server_url }}/${{ github.repository }}/settings/secrets/actions" | tee -a $GITHUB_STEP_SUMMARY >&2
|
|
exit 1
|
|
fi
|
|
env:
|
|
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
|
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
|
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
|
|
- name: ⚙️ Find target Unity versions
|
|
id: setup
|
|
run: |
|
|
echo "==== Target Unity Versions ===="
|
|
LATEST_VERSIONS=`npx -y unity-changeset@latest list --json --versions --all --latest-patch --ignore-alpha --min ${MINIMUM_VERSION}`
|
|
if [ "${{ inputs.usePeriodVersions }}" = "true" ]; then
|
|
ADDITIONAL_VERSIONS=`npx -y unity-changeset@latest list --json --versions --ignore-alpha --min ${MINIMUM_VERSION} --grep '0f'`
|
|
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: 8
|
|
matrix:
|
|
unityVersion: ${{ fromJson(needs.setup.outputs.unityVersions) }}
|
|
steps:
|
|
- name: 🚚 Checkout ($${{ github.ref }})
|
|
uses: actions/checkout@v6
|
|
|
|
- name: 📥 Cache library
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: ${{ env.PROJECT_PATH }}/Library
|
|
key: ${{ env.PROJECT_PATH }}-Library-${{ matrix.unityVersion }}-${{ github.event.pull_request.head.sha || github.sha }}
|
|
restore-keys: |
|
|
${{ env.PROJECT_PATH }}-Library-${{ matrix.unityVersion }}-
|
|
${{ env.PROJECT_PATH }}-Library-
|
|
|
|
- name: 🛠️ Build Unity Project (Test)
|
|
uses: game-ci/unity-builder@v5
|
|
timeout-minutes: 45
|
|
with:
|
|
customImage: ghcr.io/mob-sakai/unity3d:${{ matrix.unityVersion }}
|
|
targetPlatform: StandaloneLinux64
|
|
allowDirtyBuild: true
|
|
customParameters: -nographics
|
|
projectPath: ${{ env.PROJECT_PATH }}
|
|
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 }}
|
|
projectPath: ${{ env.PROJECT_PATH }}
|
|
env:
|
|
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
|
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
|
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
|