frostebite 9a06a71753 feat: rework thin wrapper to invoke game-ci/cli as a subprocess
Supersedes the previous approach on this branch, which imported
@game-ci/unity-engine-core as an in-process library. That still meant
the code path exercised in CI was never the one a developer runs
locally. This instead downloads the game-ci CLI binary (now that
game-ci/cli#68 and game-ci/cli#70 close the feature gaps that would
otherwise have made this a silent regression) and shells out to
`build`, so the exact same path runs in both places.

- build-args.ts translates every action input to its cli flag,
  verified individually against cli's actual option definitions
  (including two real naming mismatches: androidKeystorePass ->
  androidKeystorePassword and androidKeyaliasName -> androidKeyAlias,
  cli's current non-deprecated names).
- download-cli.ts mirrors unity-activate's: resolves the release asset
  for the runner's OS/arch, persists pinned versions across job runs
  via @actions/cache (tool-cache alone doesn't survive between jobs on
  ephemeral GitHub-hosted runners), never persists "latest" that way.
- Credentials (UNITY_EMAIL etc.) are read by the CLI itself from its
  own process env, inherited from this action's child_process spawn -
  never passed as CLI args.
- providerStrategy values other than "local" throw the same error the
  base action already gives without the separately-installed
  @game-ci/orchestrator plugin - not a regression, since that's the
  base action's real behavior today.
- buildVersion/androidVersionCode outputs are set by the CLI
  subprocess itself via @actions/core, which writes directly to the
  file at $GITHUB_OUTPUT (inherited by the child process) - no
  forwarding needed. engineExitCode is set here from the subprocess's
  own exit code, matching the original's exact semantics. `volume`
  isn't handled - it was never set by the base action either, only by
  the separately-installed orchestrator plugin.
- action.yml gains a `cliVersion` input (default "latest"). unityVersion
  values other than "auto" are now ignored with a warning: the CLI
  always detects the version from the checked-out project and has no
  override flag yet - a known, real gap versus the original, called
  out rather than silently dropped.
- Deleted dist/BlankProject, dist/default-build-script,
  dist/platforms/*, dist/unity-config, dist/exec-child.js: all dead
  under the new structure. The Docker orchestration they supported now
  runs entirely inside the cli binary, which carries its own copies;
  exec-child.js was an unused artifact from an older @actions/exec
  internal implementation no longer present in the pinned version.
2026-08-14 03:28:14 +01:00
2023-10-28 12:21:10 -07:00
2022-03-30 23:27:10 +02:00
2023-02-13 23:07:10 -06:00
2020-01-19 01:54:56 +01:00
2020-05-01 17:55:27 +02:00
2023-11-25 19:33:36 +01:00
2019-11-30 19:02:47 +01:00
2023-03-04 15:39:31 -06:00

Unity - Builder

(Not affiliated with Unity Technologies)

GitHub Action to build Unity projects for different platforms.

Part of the GameCI open source project.

Builds - Ubuntu Builds - Windows Builds - MacOS codecov - test coverage

How to use

Find the docs on the GameCI documentation website.

Visit the GameCI Unity Actions status repository for related Actions.

Community

Feel free to join us on Discord and engage with the community.

Contributing

To help improve the documentation, please find the docs repository.

To contribute to Unity Builder, kindly read the contribution guide.

Support us

GameCI is free for everyone forever.

You can support us at OpenCollective.

Licence

This repository is MIT licensed.

This includes all contributions from the community.

S
Description
No description provided
Readme MIT
1.6 GiB
Languages
TypeScript 95.5%
JavaScript 3.6%
Shell 0.9%