Updated unity actions.

This commit is contained in:
2025-06-27 22:44:07 -07:00
parent 050f1f6918
commit 0232664b05
5 changed files with 149 additions and 27 deletions

View File

@@ -28,6 +28,15 @@ inputs:
description: "Whether or not to use the graphics device when running Unity."
required: false
default: "true"
catchErrors:
description: "Whether or not errors should be handled."
required: false
sshPublicKey:
description: "Public SSH key to use for git package restoration."
required: false
sshPrivateKey:
description: "Private SSH key to use for git package restoration."
required: false
unityBuilder:
description: "Whether or not to use the UnityBuilder instead of a Unity command."
required: false
@@ -71,6 +80,10 @@ runs:
shell: bash
- name: "Run Unity command."
uses: act/unity/unity@master
env:
SSH_PUBLIC_KEY: ${{ inputs.sshPublicKey }}
SSH_PRIVATE_KEY: ${{ inputs.sshPrivateKey }}
CATCH_ERRORS: ${{ inputs.catchErrors }}
with:
serial: ${{ inputs.serial }}
# serial: "activated"

View File

@@ -21,4 +21,10 @@ if [[ -n "$UNITY_BUILDER" ]]; then
else
unity-editor $DEFAULT_ARGS $COMMAND
fi
echo "::endgroup::"
echo "::endgroup::"
echo "exitCode=$RESULT" >> "$GITHUB_OUTPUT"
if [[ "$CATCH_ERRORS" != "true" ]]; then
exit $RESULT
fi

View File

@@ -20,4 +20,4 @@ runs:
#Choose the appropriate container from: https://hub.docker.com/r/unityci/editor
bash ${{ github.action_path }}/get_container.sh "${{ inputs.platform }}" "${{ inputs.version }}"
shell: bash
shell: bash

View File

@@ -0,0 +1,109 @@
name: unity-project-cached
description: "Run a Unity command using a project's version and a build target. Cache the library folder."
inputs:
projectPath:
description: "Path to the Unity project."
required: true
default: "."
platform:
description: "Unity Platform. Options: windows, windows32bit, mac, linux, android"
required: true
serial:
description: "Unity license serial number."
required: false
email:
description: "Unity email."
required: true
password:
description: "Unity password."
required: true
executeMethod:
description: "Unity method to call."
required: false
command:
description: "Additional unity commands."
required: false
noGraphics:
description: "Whether or not to use the graphics device when running Unity."
required: false
default: "true"
buildOnCacheHit:
description: "Whether or not to build if a cache was found. Default: true"
required: false
default: "true"
sshPublicKey:
description: "Public SSH key to use for git package restoration."
required: false
sshPrivateKey:
description: "Private SSH key to use for git package restoration."
required: false
cacheSuffix:
description: "Suffix or hash to use for the cache key."
required: false
default: ${{ github.sha }}
cachePrefix:
description: "Prefix to use for the cache key."
required: false
default: unity-library
releaseBranch:
description: "Release name to use for the middle of the cache key if an exact release match was not found."
required: false
default: release
cachePath:
description: "Cache path. Default: Library"
required: false
default: Library
outputs:
cacheChanged:
description: "Whether or not the cache was changed."
value: ${{ steps.check-cache.outputs.cache-hit != 'true' }}
runs:
using: "composite"
steps:
- name: "Get full cache key and build command."
id: command
run: |
# Get the full cache id.
echo "key=${{ inputs.cachePrefix }}-${{ github.ref_name }}-${{ inputs.cacheSuffix }}" >> "$GITHUB_OUTPUT"
# Get the build command.
COMMAND="${{ inputs.command }}"
if [[ -n "${{ inputs.executeMethod }}" ]]; then
COMMAND="$COMMAND -executeMethod ${{ inputs.executeMethod }}"
fi
echo "command=$COMMAND" >> "$GITHUB_OUTPUT"
shell: bash
- name: "Check if cache exists."
id: check-cache
uses: https://github.com/actions/cache/restore@v3
with:
path: ${{ inputs.cachePath }}
key: ${{ steps.command.outputs.key }}
lookup-only: true
- name: "Restore Library from Cache."
if: ${{ ( inputs.buildOnCacheHit == 'true' || steps.check-cache.outputs.cache-hit != 'true' ) }}
uses: https://github.com/actions/cache/restore@v3
with:
path: ${{ inputs.cachePath }}
key: ${{ steps.command.outputs.key }}
restore-keys: |
${{ inputs.cachePrefix }}-${{ github.ref_name }}
${{ inputs.cachePrefix }}-${{ inputs.releaseBranch }}
${{ inputs.cachePrefix }}
- name: "Build project."
if: ${{ inputs.buildOnCacheHit == 'true' || steps.check-cache.outputs.cache-hit != 'true' }}
uses: act/unity/unity-project@master
with:
platform: ${{ inputs.platform }}
serial: ${{ inputs.serial }}
email: ${{ inputs.email }}
password: ${{ inputs.password }}
sshPublicKey: ${{ inputs.sshPublicKey }}
sshPrivateKey: ${{ inputs.sshPrivateKey }}
command: ${{ steps.command.outputs.command }}
noGraphics: ${{ inputs.noGraphics }}
- name: "Upload Library to Cache."
if: ${{ steps.check-cache.outputs.cache-hit != 'true' }}
uses: https://github.com/actions/cache/save@v3
with:
path: ${{ inputs.cachePath }}
key: ${{ steps.command.outputs.key }}

View File

@@ -9,9 +9,8 @@ inputs:
description: "Unity Platform. Options: windows, windows32bit, mac, linux, android"
required: true
serial:
description: "Unity license serial number. Or 'personal' for a personal license."
description: "Unity license serial number."
required: true
default: personal
email:
description: "Unity email."
required: true
@@ -21,39 +20,40 @@ inputs:
command:
description: "Unity command to run."
required: false
unityBuilder:
description: "Whether or not to use the UnityBuilder instead of a Unity command."
required: false
noGraphics:
description: "Whether or not to use the graphics device when running Unity."
required: false
default: "true"
cacheVolume:
description: "Name of the volume to cache the Library folder to."
sshPublicKey:
description: "Public SSH key to use for git package restoration."
required: false
removeContainer:
description: "Remove the mock container after building."
sshPrivateKey:
description: "Private SSH key to use for git package restoration."
required: false
default: "false"
runs:
using: "composite"
steps:
- name: "Replace spaces in project path."
id: path
run: |
PROJECT_PATH=${{ inputs.projectPath }}
PROJECT_PATH=${PROJECT_PATH// /\\ }
echo "projectPath=$PROJECT_PATH" >> "$GITHUB_OUTPUT"
shell: bash
- name: "Get Unity Version."
id: getVersion
uses: act/unity/unity-get-version@master
with:
projectPath: ${{ inputs.projectPath }}
projectPath: ${{ steps.path.outputs.projectPath }}
- name: "Get Unity buildTarget."
id: getTarget
uses: act/unity/unity-get-buildtarget@master
with:
platform: ${{ inputs.platform }}
- name: "Restore the cached Library folder."
if: inputs.cacheVolume != null
uses: act/common/docker/docker-cp@master
- name: "Restore NugetForUnity packages if they exist."
uses: act/dotnet/dotnet-nugetforunity-restore@master
with:
volume: ${{ inputs.cacheVolume }}
toPath: .
projectPath: ${{ steps.path.outputs.projectPath }}
- name: "Run Unity command."
uses: act/unity/unity-command@master
with:
@@ -62,13 +62,7 @@ runs:
serial: ${{ inputs.serial }}
email: ${{ inputs.email }}
password: ${{ inputs.password }}
command: -projectPath ${{ inputs.projectPath }} -buildTarget ${{ steps.getTarget.outputs.buildTarget }} ${{ inputs.command }}
removeContainer: ${{ inputs.removeContainer }}
sshPublicKey: ${{ inputs.sshPublicKey }}
sshPrivateKey: ${{ inputs.sshPrivateKey }}
noGraphics: ${{ inputs.noGraphics }}
- name: "Cache the Library folder."
if: inputs.cacheVolume != null
uses: act/common/docker/docker-cp@master
with:
recreateVolume: true
volume: ${{ inputs.cacheVolume }}
fromPath: Library
command: -projectPath ${{ steps.path.outputs.projectPath }} -buildTarget ${{ steps.getTarget.outputs.buildTarget }} ${{ inputs.command }}