name: 'Unity - Builder' author: Webber Takken description: 'Build Unity projects for different platforms.' inputs: targetPlatform: required: true default: '' description: 'Platform that the build should target.' unityVersion: required: false default: 'auto' description: 'Version of unity to use for building the project. Use "auto" to get from your ProjectSettings/ProjectVersion.txt' customImage: required: false default: '' description: 'Specific docker image that should be used for building the project' projectPath: required: false default: '' description: 'Path to the project to be built, relative to the repository root.' buildProfile: required: false default: '' description: 'Path to the build profile to activate, relative to the project root.' buildName: required: false default: '' description: 'Name of the build. Should not include a file extension.' buildsPath: required: false default: '' description: 'Path where the builds should be stored.' buildMethod: required: false default: '' description: 'Path to a Namespace.Class.StaticMethod to run to perform the build.' manualExit: required: false default: '' description: 'Suppresses `-quit`. Exit your build method using `EditorApplication.Exit(0)` instead.' enableGpu: required: false default: '' description: 'Launches unity without specifying `-nographics`.' customParameters: required: false default: '' description: 'Custom parameters to configure the build.' versioning: required: false default: 'Semantic' description: 'The versioning scheme to use when building the project' version: required: false default: '' description: 'The version, when used with the "Custom" versioning scheme' androidVersionCode: required: false default: '' description: 'The android versionCode' androidExportType: required: false default: 'androidPackage' description: 'The android export type. Should be androidPackage for apk, androidAppBundle for aab, or androidStudioProject for an android studio project.' androidKeystoreName: required: false default: '' description: 'The android keystoreName' androidKeystoreBase64: required: false default: '' description: 'The base64 contents of the android keystore file' androidKeystorePass: required: false default: '' description: 'The android keystorePass' androidKeyaliasName: required: false default: '' description: 'The android keyaliasName' androidKeyaliasPass: required: false default: '' description: 'The android keyaliasPass' androidTargetSdkVersion: required: false default: '' description: 'The android target API level.' androidSymbolType: required: false default: 'none' description: 'The android symbol type to export. Should be "none", "public" or "debugging".' sshAgent: required: false default: '' description: 'SSH Agent path to forward to the container' sshPublicKeysDirectoryPath: required: false default: '' description: 'Path to a directory containing SSH public keys to forward to the container.' gitPrivateToken: required: false default: '' description: '[CloudRunner] Github private token to pull from github' githubOwner: required: false default: '' description: '[CloudRunner] GitHub owner name or organization/team name' runAsHostUser: required: false default: 'false' description: 'Whether to run as a user that matches the host system or the default root container user. Only applicable to Linux hosts and containers. This is useful for fixing permission errors on Self-Hosted runners.' chownFilesTo: required: false default: '' description: 'User and optionally group (user or user:group or uid:gid) to give ownership of the resulting build artifacts' dockerCpuLimit: required: false default: '' description: 'Number of CPU cores to assign the docker container. Defaults to all available cores on all platforms.' dockerMemoryLimit: required: false default: '' description: 'Amount of memory to assign the docker container. Defaults to 95% of total system memory rounded down to the nearest megabyte on Linux and 80% on Windows. On unrecognized platforms, defaults to 75% of total system memory. To manually specify a value, use the format , where unit is either m or g. ie: 512m = 512 megabytes' dockerIsolationMode: required: false default: 'default' description: 'Isolation mode to use for the docker container. Can be one of process, hyperv, or default. Default will pick the default mode as described by Microsoft where server versions use process and desktop versions use hyperv. Only applicable on Windows' containerRegistryRepository: required: false default: 'unityci/editor' description: 'Container registry and repository to pull image from. Only applicable if customImage is not set.' containerRegistryImageVersion: required: false default: '3' description: 'Container registry image version. Only applicable if customImage is not set.' allowDirtyBuild: required: false default: '' description: '[CloudRunner] Allows the branch of the build to be dirty, and still generate the build.' postBuildSteps: required: false default: '' description: '[CloudRunner] run a post build job in yaml format with the keys image, secrets (name, value object array), command string' preBuildSteps: required: false default: '' description: '[CloudRunner] Run a pre build job after the repository setup but before the build job (in yaml format with the keys image, secrets (name, value object array), command line string)' containerHookFiles: required: false default: '' description: '[CloudRunner] Specify the names (by file name) of custom steps to run before or after cloud runner jobs, must match a yaml step file inside your repo in the folder .game-ci/steps/' customHookFiles: required: false default: '' description: '[CloudRunner] Specify the names (by file name) of custom hooks to run before or after cloud runner jobs, must match a yaml step file inside your repo in the folder .game-ci/hooks/' customCommandHooks: required: false default: '' description: '[CloudRunner] Specify custom commands and trigger hooks (injects commands into jobs)' customJob: required: false default: '' description: '[CloudRunner] Run a custom job instead of the standard build automation for cloud runner (in yaml format with the keys image, secrets (name, value object array), command line string)' awsStackName: default: 'game-ci' required: false description: '[CloudRunner] The Cloud Formation stack name that must be setup before using this option.' providerStrategy: default: 'local' required: false description: '[CloudRunner] Either local, k8s or aws can be used to run builds on a remote cluster. Additional parameters must be configured.' containerCpu: default: '' required: false description: '[CloudRunner] Amount of CPU time to assign the remote build container' containerMemory: default: '' required: false description: '[CloudRunner] Amount of memory to assign the remote build container' readInputFromOverrideList: default: '' required: false description: '[CloudRunner] Comma separated list of input value names to read from "input override command"' readInputOverrideCommand: default: '' required: false description: '[CloudRunner] Extend game ci by specifying a command to execute to pull input from external source e.g cloud provider secret managers' kubeConfig: default: '' required: false description: '[CloudRunner] Supply a base64 encoded kubernetes config to run builds on kubernetes and stream logs until completion.' kubeVolume: default: '' required: false description: '[CloudRunner] Supply a Persistent Volume Claim name to use for the Unity build.' kubeStorageClass: default: '' required: false description: '[CloudRunner] Kubernetes storage class to use for cloud runner jobs, leave empty to install rook cluster.' kubeVolumeSize: default: '5Gi' required: false description: '[CloudRunner] Amount of disc space to assign the Kubernetes Persistent Volume' cacheKey: default: '' required: false description: '[CloudRunner] Cache key to indicate bucket for cache' watchToEnd: default: 'true' required: false description: '[CloudRunner] Whether or not to watch the build to the end. Can be used for especially long running jobs e.g imports or self-hosted ephemeral runners.' cacheUnityInstallationOnMac: default: 'false' required: false description: 'Whether to cache the Unity hub and editor installation on MacOS' unityHubVersionOnMac: default: '' required: false description: 'The version of Unity Hub to install on MacOS (e.g. 3.4.0). Defaults to latest available on brew if empty string or nothing is specified.' unityLicensingServer: default: '' required: false description: 'The Unity licensing server address to use for activating Unity.' dockerWorkspacePath: default: '/github/workspace' required: false description: 'The path to mount the workspace inside the docker container. For windows, leave out the drive letter. For example c:/github/workspace should be defined as /github/workspace' skipActivation: default: 'false' required: false description: 'Skip the activation/deactivation of Unity. This assumes Unity is already activated.' outputs: volume: description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes' buildVersion: description: 'The generated version used for the Unity build' androidVersionCode: description: 'The generated versionCode used for the Android Unity build' engineExitCode: description: 'Returns the exit code from the build scripts. This code is 0 if the build was successful. If there was an error during activation, the code is from the activation step. If activation is successful, the code is from the project build step.' branding: icon: 'box' color: 'gray-dark' runs: using: 'node20' main: 'dist/index.js'