133 lines
4.5 KiB
YAML
133 lines
4.5 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: "Configure find parameters."
|
|
id: configure_find
|
|
run: |
|
|
# Configure the pattern and type based on the platform. Android is case insensitive.
|
|
shopt -s nocasematch
|
|
if [[ "${{ inputs.platform }}" = "android" ]]; then
|
|
echo "pattern=*.apk" >> "$GITHUB_OUTPUT"
|
|
echo "type=f" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "pattern=*" >> "$GITHUB_OUTPUT"
|
|
echo "type=d" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
shopt -u nocasematch
|
|
shell: bash
|
|
- name: "Find Output Directory."
|
|
id: find_output_dir
|
|
uses: act/common/utils/find-first@master
|
|
with:
|
|
path: Build
|
|
pattern: "${{ steps.configure_find.outputs.pattern }}"
|
|
type: "${{ steps.configure_find.outputs.type }}"
|
|
minDepth: 1
|
|
maxDepth: 2
|
|
- name: "Upload Artifacts."
|
|
uses: https://github.com/ChristopherHX/gitea-upload-artifact@v4
|
|
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 }}
|