Files
unity/unity-project-cached-artifacts/action.yaml
2025-07-09 15:48:45 -07:00

119 lines
4.0 KiB
YAML

name: unity-project-cached-artifacts
description: "Run a Unity command using a project's version and a build target. Cache the library folder. Upload artifacts after the build."
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. Or 'personal' for a personal license."
required: true
default: personal
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"
unityBuilder:
description: "Whether or not to use the UnityBuilder instead of a Unity command."
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
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
compressionLevel:
description: "Compression level for the artifacts."
required: false
default: "9"
artifactSuffix:
description: "Suffix for the artifact name."
required: false
default: build
outputs:
cacheChanged:
description: "Whether or not the cache was changed."
value: ${{ steps.check-cache.outputs.cache-hit != 'true' }}
artifactName:
description: "Name of the uploaded artifact."
value: "${{ steps.get_product_name.outputs.nameShort }}_${{ inputs.artifactSuffix }}"
artifactPath:
description: "Path to the uploaded artifact."
value: "${{ steps.find_output_dir.outputs.fullPath }}"
runs:
using: "composite"
steps:
- name: "Build Unity Project"
uses: act/unity/unity-project-cached@master
with:
projectPath: ${{ inputs.projectPath }}
platform: ${{ inputs.platform }}
serial: ${{ inputs.serial }}
email: ${{ inputs.email }}
password: ${{ inputs.password }}
executeMethod: ${{ inputs.executeMethod }}
command: ${{ inputs.command }}
noGraphics: ${{ inputs.noGraphics }}
buildOnCacheHit: ${{ inputs.buildOnCacheHit }}
unityBuilder: ${{ inputs.unityBuilder }}
sshPublicKey: ${{ inputs.sshPublicKey }}
sshPrivateKey: ${{ inputs.sshPrivateKey }}
cacheSuffix: ${{ inputs.cacheSuffix }}
cachePrefix: ${{ inputs.cachePrefix }}
releaseBranch: ${{ inputs.releaseBranch }}
cachePath: ${{ inputs.cachePath }}
- name: "Get product name."
id: get_product_name
uses: act/unity/unity-get-product-name@master
- name: "Find Output Directory"
id: find_output_dir
uses: act/common/utils/find-first@master
with:
path: Build
pattern: "*"
type: d
minDepth: 1
maxDepth: 1
- name: "Upload Artifacts"
uses: https://github.com/actions/upload-artifact@v3
with:
name: "${{ steps.get_product_name.outputs.nameShort }}_${{ inputs.artifactSuffix }}"
path: "${{ steps.find_output_dir.outputs.fullPath }}"
if-no-files-found: error
compression-level: ${{ inputs.compressionLevel }}