Update docs

pull/11/head
Webber 2020-01-31 00:35:41 +01:00 committed by Webber Takken
parent 56b8c04f36
commit c937b9ed6c
3 changed files with 230 additions and 42 deletions

View File

@ -21,17 +21,50 @@ jobs:
- run: yarn build || { echo "build command should always succeed" ; exit 61; } - run: yarn build || { echo "build command should always succeed" ; exit 61; }
- run: yarn build --quiet && git diff --quiet action || { echo "action should be auto generated" ; exit 62; } - run: yarn build --quiet && git diff --quiet action || { echo "action should be auto generated" ; exit 62; }
testAllModesLikeInTheReadme:
name: Test in ${{ matrix.testMode }} on version ${{ matrix.unityVersion }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
projectPath:
- unity-project-with-correct-tests
unityVersion:
- 2019.2.11f1
testMode:
- playmode
- editmode
steps:
- uses: actions/checkout@v2
with:
lfs: true
- uses: actions/cache@v1.1.0
with:
path: ${{ matrix.projectPath }}/Library
key: Library-${{ matrix.projectPath }}
restore-keys: |
Library-
- uses: ./
id: tests
with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }}
artifactsPath: ${{ matrix.testMode }}-artifacts
- uses: actions/upload-artifact@v1
with:
name: Test results for ${{ matrix.testMode }}
path: ${{ steps.tests.outputs.artifactsPath }}
testRunnerInAllModes: testRunnerInAllModes:
name: Test all modes ✨ name: Test all modes ✨
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
unityVersion:
# - 2018.4.15f1 # need a way to use multiple licenses, using matrix.include referencing env
- 2019.2.11f1
projectPath: projectPath:
- unity-project-with-correct-tests - unity-project-with-correct-tests
unityVersion:
- 2019.2.11f1
steps: steps:
# Checkout repository (required to test local actions) # Checkout repository (required to test local actions)
- name: Checkout repository - name: Checkout repository
@ -53,9 +86,9 @@ jobs:
id: allTests id: allTests
uses: ./ uses: ./
with: with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }} unityVersion: ${{ matrix.unityVersion }}
testMode: all testMode: all
projectPath: ${{ matrix.projectPath }}
# Test implicit artifactsPath, by not setting it # Test implicit artifactsPath, by not setting it
# Upload artifacts # Upload artifacts
@ -96,9 +129,9 @@ jobs:
id: editMode id: editMode
uses: ./ uses: ./
with: with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }} unityVersion: ${{ matrix.unityVersion }}
testMode: editmode testMode: editmode
projectPath: ${{ matrix.projectPath }}
artifactsPath: artifacts/editmode artifactsPath: artifacts/editmode
# Upload artifacts # Upload artifacts
@ -114,10 +147,10 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
unityVersion:
- 2019.2.11f1
projectPath: projectPath:
- unity-project-with-correct-tests - unity-project-with-correct-tests
unityVersion:
- 2019.2.11f1
steps: steps:
# Checkout repository (required to test local actions) # Checkout repository (required to test local actions)
- name: Checkout repository - name: Checkout repository
@ -139,9 +172,9 @@ jobs:
id: playMode id: playMode
uses: ./ uses: ./
with: with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }} unityVersion: ${{ matrix.unityVersion }}
testMode: playmode testMode: playmode
projectPath: ${{ matrix.projectPath }}
artifactsPath: artifacts/playmode artifactsPath: artifacts/playmode
# Upload artifacts # Upload artifacts
@ -151,7 +184,7 @@ jobs:
name: Test results (play mode) name: Test results (play mode)
path: ${{ steps.playMode.outputs.artifactsPath }} path: ${{ steps.playMode.outputs.artifactsPath }}
testRunnerInEachModeSeparately: testEachModeSequentially:
name: Test each mode sequentially 👩‍👩‍👧‍👦 # don't try this at home (it's much slower) name: Test each mode sequentially 👩‍👩‍👧‍👦 # don't try this at home (it's much slower)
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
@ -181,18 +214,18 @@ jobs:
- name: Tests in editmode 📝 - name: Tests in editmode 📝
uses: ./ uses: ./
with: with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }} unityVersion: ${{ matrix.unityVersion }}
testMode: editmode testMode: editmode
projectPath: ${{ matrix.projectPath }}
artifactsPath: artifacts/editmode artifactsPath: artifacts/editmode
# Configure second test runner # Configure second test runner
- name: Tests in playmode 📺 - name: Tests in playmode 📺
uses: ./ uses: ./
with: with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }} unityVersion: ${{ matrix.unityVersion }}
testMode: playmode testMode: playmode
projectPath: ${{ matrix.projectPath }}
artifactsPath: artifacts/playmode artifactsPath: artifacts/playmode
# Upload combined artifacts # Upload combined artifacts

215
README.md
View File

@ -26,50 +26,209 @@ collection repository for workflow documentation and reference implementation.
## Usage ## Usage
#### Setup test runner
By default the test runner will run all your playmode and editmode tests.
Create or edit the file called `.github/workflows/main.yml` and add a job to it. Create or edit the file called `.github/workflows/main.yml` and add a job to it.
```yaml ##### Personal License
name: Test project
on: [push]
jobs:
testRunnerInAllModes:
name: Test all modes ✨
runs-on: ubuntu-latest
steps:
```
Configure the test runner as follows: Personal licenses require a one-time manual activation step (per unity version).
Make sure you
[acquire and activate](https://github.com/marketplace/actions/unity-request-activation-file)
your license file and add it as a secret.
Then, define the test step as follows:
```yaml ```yaml
# Configure test runner - uses: webbertakken/unity-test-runner@v1.2
- name: Run tests
id: myTestStep id: myTestStep
uses: webbertakken/unity-test-runner@v1.1
env: env:
# Choose: "all", "playmode", "editmode" UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
TEST_MODE: all with:
projectPath: path/to/your/project
# Optional: Path to your project, leave blank for "./" unityVersion: 20XX.X.XXXX
PROJECT_PATH: relative/path/to/your/project
# Optional: Artifacts path, leave blank for "artifacts"
ARTIFACTS_PATH: store/artifacts/here
``` ```
You use the id to **upload the artifacts** like so: ##### Professional license
Professional licenses do not need any manual steps.
Instead, three variables will need to be set.
- `UNITY_EMAIL` (should contain the email address for your Unity account)
- `UNITY_PASSWORD` (the password that you use to login to Unity)
- `UNITY_SERIAL` (the serial provided by Unity)
Define the test step as follows:
```yaml ```yaml
# Upload artifacts - uses: webbertakken/unity-test-runner@v1.2
- name: Upload test results id: myTestStep
uses: actions/upload-artifact@v1 env:
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}
with:
projectPath: path/to/your/project
unityVersion: 20XX.X.XXXX
```
That is all you need to test your project.
#### Storing test results
To be able to access the test results,
they need to be uploaded as artifacts.
To do this it is recommended to use Github Actions official
[upload artifact action](https://github.com/marketplace/actions/upload-artifact)
after any test action.
###### Using defaults
By default, Test Runner outputs it's results to a folder named `artifacts`.
Example:
```yaml
- uses: actions/upload-artifact@v1
with:
name: Test results
path: artifacts
```
Test results can now be downloaded as Artifacts in the Actions tab.
###### Specifying artifacts folder
If a different `artifactsPath` was specified in the test runner,
you can reference this path using the `id` of the test step.
Example:
```yaml
- uses: actions/upload-artifact@v1
with: with:
name: Test results name: Test results
path: ${{ steps.myTestStep.outputs.artifactsPath }} path: ${{ steps.myTestStep.outputs.artifactsPath }}
``` ```
#### Caching
In order to make test runs (and builds) faster,
you can cache Library files from previous runs.
To do so, simply add Github Actions' official
[cache action](https://github.com/marketplace/actions/cache)
before any unity steps.
Example:
```yaml
- uses: actions/cache@v1.1.0
with:
path: path/to/your/project/Library
key: Library-MyProjectName-TargetPlatform
restore-keys: |
Library-MyProjectName-
Library-
```
This simple addition could speed up your test runs by more than 50%.
#### Complete example
A complete workflow that tests all modes separately could look like this:
```yaml
name: Build project
on:
pull_request: {}
push: { branches: [master] }
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
jobs:
testAllModes:
name: Test in ${{ matrix.testMode }} on version ${{ matrix.unityVersion }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
projectPath:
- path/to/your/project
unityVersion:
- 2019.2.11f1
testMode:
- playmode
- editmode
steps:
- uses: actions/checkout@v2
with:
lfs: true
- uses: actions/cache@v1.1.0
with:
path: ${{ matrix.projectPath }}/Library
key: Library-${{ matrix.projectPath }}
restore-keys: |
Library-
- uses: webbertakken/unity-test-runner@v1.2
id: tests
with:
projectPath: ${{ matrix.projectPath }}
unityVersion: ${{ matrix.unityVersion }}
artifactsPath: ${{ matrix.testMode }}-artifacts
- uses: actions/upload-artifact@v1
with:
name: Test results for ${{ matrix.testMode }}
path: ${{ steps.tests.outputs.artifactsPath }}
```
> **Note:** _Environment variables are set for all jobs in the workflow like this._
## Configuration options
Below options can be specified under `with:` for the `unity-test-runner` action.
#### projectPath
Specify the path to your Unity project to be tested.
The path should be relative to the root of your project.
_**required:** `false`_
_**default:** `<your project root>`_
#### unityVersion
Version of Unity to use for testing the project.
_**required:** `false`_
_**default:** `2019.2.1f11`_
#### testMode
The type of tests to be run by the test runner.
Options are: "all", "playmode", "editmode"
_**required:** `false`_
_**default:** `all`_
#### artifactsPath
Path where the test results should be stored.
In this folder a folder will be created for every test mode.
_**required:** `false`_
_**default:** `artifacts`_
#### customParameters #### customParameters
Custom parameters to configure the test run. Custom parameters to configure the test runner.
Parameters must start with a hyphen (`-`) and may be followed by a value (without hyphen). Parameters must start with a hyphen (`-`) and may be followed by a value (without hyphen).
@ -86,10 +245,6 @@ _**example:**_
_**required:** `false`_ _**required:** `false`_
_**default:** ""_ _**default:** ""_
#### Save your workflow
Commit and push your workflow definition.
## More actions ## More actions
Visit Visit

View File

@ -11,7 +11,7 @@ echo "Using project path \"$UNITY_PROJECT_PATH\"."
# Set and display the artifacts path # Set and display the artifacts path
# #
echo "Using build path \"$ARTIFACTS_PATH\" to save test results." echo "Using artifacts path \"$ARTIFACTS_PATH\" to save test results."
FULL_ARTIFACTS_PATH=$GITHUB_WORKSPACE/$ARTIFACTS_PATH FULL_ARTIFACTS_PATH=$GITHUB_WORKSPACE/$ARTIFACTS_PATH
# #