100 Commits
Author SHA1 Message Date
Webber Takkenandfrostebite 16c5c20793 chore: quality-tightening (oxfmt + oxlint + tsc + vitest + husky + actionlint) (#833)
* chore: quality-tightening (oxfmt + oxlint + tsc + vitest + husky + actionlint)

Standard rollout for unity-builder. Most of the work was porting 24
test files from jest 27 to vitest 4.

- prettier -> oxfmt
- eslint (with @typescript-eslint, github, jest, prettier, unicorn) ->
  oxlint with eslint-plugin-unicorn
- jest 27 + jest-circus + ts-jest + @types/jest + @jest/globals ->
  vitest 4 + vite 7 + @vitest/coverage-istanbul (jest config files
  removed)
- new: tsgo --noEmit (alongside tsc fallback)
- lefthook (and lefthook.yml) -> husky 9 with the standard
  scripts/ensure-husky.mjs self-heal pattern + lint-staged
- new: gitleaks, actionlint, shellcheck as mise-managed binaries
- TypeScript bumped target ES2020 -> ES2022 + lib ES2022 + DOM (for
  Error.cause and modern globals)

Test migration (24 files):
- Bulk-converted jest.* -> vi.*; jest.Mocked -> Mocked from vitest;
  jest.MockedFunction -> MockedFunction.
- Added vitest imports to all *.test.ts files (and __mocks__/*.ts)
  that didn't have them.
- src/index.ts: extracted runMain() as a named export and gated the
  module-level invocation behind NODE_ENV !== 'test'. The
  index-plugin-features test now calls runMain() directly instead of
  relying on jest's removed vi.isolateModules.
- index-plugin-features.test.ts: moved hoisted refs (mockPlugin,
  mockLoadOrchestratorPlugin) into vi.hoisted() so vi.mock factories
  can reference them. Replaced arrow constructor mock for ImageTag
  with regular function() {...} (vitest 4 disallows arrows as ctors).
  Replaced require('./model') / require('@actions/core') inside test
  bodies with top-level imports.
- model/orchestrator-plugin.test.ts: dropped jest's '{ virtual: true }'
  flag (vitest doesn't support it); replaced the
  'mock factory throws' pattern with 'createPlugin throws' so vitest
  doesn't wrap the error message at the assertion site.
- model/versioning.test.ts: stray jest.spyOn -> vi.spyOn; replaced
  mockImplementation() with no args (jest pattern) by
  mockResolvedValue('') / mockImplementation(() => undefined) where
  the source expects a string return.

Workflow shell-quoting cleanup (actionlint):
- All bare $GITHUB_STEP_SUMMARY / $GITHUB_OUTPUT / $GITHUB_ENV
  redirects quoted across 2 workflows (SC2086).
- s3://$AWS_STACK_NAME / s3://$BUCKET_NAME -> s3://"$AWS_STACK_NAME"
  / s3://"$BUCKET_NAME".
- 'for i in {1..N}; do ... done' loops where i isn't referenced in
  the body renamed to 'for _ in' (SC2034).
- 'grep ... | wc -l' -> 'grep -c ...' (SC2126).
- Multiple consecutive '>> $file' redirects in
  validate-community-plugins.yml summary block collapsed into a
  single block redirect (SC2129).
- 'cat $file | python3 -c "..."' -> 'python3 -c "..." < $file'
  (SC2002).
- http://${VAR}:port -> http://"${VAR}":port (SC2086).

tsgo: kept tsc --noEmit as the default 'typecheck' because
unity-builder publishes CommonJS for the GitHub Action consumer,
which conflicts with tsgo's bundler/node16 moduleResolution
requirement (per playbook trap #9). 'yarn typecheck:tsgo' is wired
up for when consumers move to ESM.

Caveats: 28 pre-existing oxlint warnings remain (mostly
typescript/no-explicit-any across the build-parameter shapes and
vitest/no-disabled-tests on 2 explicitly skipped scenarios). Per
playbook trap #22 the lint script drops --deny-warnings.

Verified locally: format clean, lint 0/28, typecheck clean,
test 340/342 (2 pre-existing skipped), actionlint clean across all
12 workflows.

* ci(unity-builder): fix Tests + Plugin Architecture Health on quality-tightening

Three issues surfaced in CI after the jest -> vitest port:

1. **Obsolete snapshot blocks Tests job.**
   src/model/__snapshots__/versioning.test.ts.snap had two entries
   for the same 'throws for invalid strategy' assertion: one in the
   vitest format ('Versioning > determineBuildVersion > ...') and one
   in the legacy jest format without the '>'. vitest correctly
   regenerates the new one and flags the old one as obsolete; CI
   runs without --update so 'Test Files 1 failed' even though all
   343 tests passed. Removed the obsolete entry.

2. **'Plugin Architecture Health' workflow still calls jest.**
   .github/workflows/validate-orchestrator.yml had two 'npx jest'
   steps (orchestrator-plugin unit tests + orchestrator-standalone
   tests). The unity-builder + orchestrator codebases are both on
   vitest now. Replaced both with 'yarn vitest run'.

3. **jest-fail-on-console + src/jest.setup.ts left over.**
   The earlier vitest port missed the jest-fail-on-console
   integration. yarn install in CI surfaced
   YN0002: doesn't provide @jest/globals (requested by
   jest-fail-on-console). Removed jest-fail-on-console + jest.setup.ts;
   added src/test/setup.ts with the equivalent vitest beforeEach
   spies (same as unity-test-runner).

---------

Co-authored-by: frostebite <[email protected]>
2026-05-06 19:07:47 +01:00
Webber Takken 365bdb5e12 chore: migrate to mise + bump yarn to 4.14.1 (#830)
* chore: migrate to mise + bump yarn to 4.14.1 (yarn 1 -> 4)

- Pin Node and Yarn 4.14.1 in mise.toml
- Drop Volta from package.json
- Switch to corepack-managed yarn via packageManager field
- Regenerate yarn.lock from scratch (yarn 1 v1 format -> yarn 4 v9)
- enableScripts off (default); allowlist lefthook via dependenciesMeta
- Replace setup-node + cache:'yarn' across 4 yarn-using workflows
  (integrity-check, validate-community-plugins, validate-orchestrator,
  validate-orchestrator-integration) with the standard cache pattern
- Add yarn 4 (berry) gitignore rules

* chore: revert dist/ + build-tests workflow churn

Keep PR scoped to tooling migration only; dist/ rebuild and prettier
auto-wraps in build-tests-* workflows are unrelated drive-by changes.

* fix(ci): add missing eslint plugins + jest globals

Yarn 4 strict layout doesn't expose @typescript-eslint/eslint-plugin
or eslint-plugin-import which were resolved transitively under yarn 1.
Add them as explicit devDeps. Same for @jest/globals (used by
jest-fail-on-console).

Disable unicorn/no-useless-undefined which now fires on existing
mockResolvedValue(undefined) calls. The undefined arg is required by
@types/jest 27 typings (removing it breaks tsc), so the rule and the
typecheck disagree. Pre-existing under yarn 1 these calls compiled
because the eslint config was effectively non-functional (plugin
resolution failed silently) so the rule never ran.

* fix(ci): disable unicorn/no-useless-undefined

@types/jest 27 typings require explicit .mockResolvedValue(undefined),
which the rule wants removed; tsc and eslint disagreed. Disable the
rule to match upstream behaviour (it only fires now because yarn 4
exposes the eslint plugin tree that yarn 1 silently broke).

* ci: bump cache key to v2 to bust stale node_modules

The restore-key pattern matched an older cache that had @types/tar
+ minipass 3.x in node_modules from before the lockfile regen.
Fresh installs end up with that stale tree and tsc fails on
incompatible types. Versioning the key forces a clean cache.

* chore: actually revert dist/ to origin/main

Earlier revert commit only fixed workflows; dist/ stayed rebuilt.
The newer ncc bundle output triggers 2 high-severity CodeQL alerts
(URL substring sanitization + escape sanitization) that don't fire
on the main branch's dist/. Restore main's dist/ so CodeQL passes.

* ci: drop node_modules from yarn cache (stale-state fix)

Caching node_modules causes stale trees to leak across yarn.lock
changes (e.g. @types/tar persisting after a regen). Cache only the
yarn cacheFolder + install-state.gz; yarn install rebuilds
node_modules from those (fast).
2026-05-04 21:07:52 +01:00
Webber Takken 96cfb845ae Update CONTRIBUTING.md (#601) 2023-11-25 19:33:36 +01:00
Webber Takken a073719c29 BREAKING (potentially) - Bump docker version (Ubuntu 22.04 LTS) (#556)
* fix: resolution errors and vulnerability

* feat: bump (major) docker image rolling tag

* chore: bump major version

* fix: up workflow node to lts

* fix: conventions
2023-08-22 10:03:32 +02:00
Webber Takken cdee7d1d9a Update FUNDING.yml (#431) 2022-09-06 16:54:29 +02:00
Webber Takken fb633660a4 chore: add game-ci github sponsoring option (#429) 2022-08-29 23:49:54 +02:00
Webber Takken db2d8b6dbd fix: make v character in version tags optional (#423)
* fix: make v character in version tags optional

* fix: cross platform regex

* fix: test regex within grep.

* fix: add semantic tags prepended with v
2022-08-04 02:09:32 +02:00
Webber Takken c068855899 chore: remove audit pre push (#422) 2022-08-03 00:57:22 +02:00
Webber Takken 5b8bf1c8b7 chore: update action-cats (#421) 2022-08-03 00:56:52 +02:00
Webber Takken 5ae03dfef6 Streamline code styles (#384)
* feat: streamline code styles

* feat: spacing for comments and return statements

* chore: enforce camelcase

* fix: remove npm lock file

* fix: add integrity test

* fix: remove logfile

* chore: update node in test workflow
2022-04-12 00:43:41 +02:00
Webber Takken 441be81543 Switch to version 1 images (#374)
* feat: upgrade to images of version 1 (rolling tag)

* chore: indicate what needs to move out of the input class
2022-04-03 17:59:14 +02:00
Webber Takken 9a40b8903e fix: ensure line endings (#366)
* fix: ensure line endings

* fix: only affect specific files

* chore: rearrange attributes order
2022-03-30 23:27:10 +02:00
Webber Takken f1c154a23c Attempt to streamline dev lifecycle (git hooks) (#357)
* fix: misalignments in dev lifecycle

* fix: dist no longer added to staged

* fix: misalignments in dev lifecycle

* chore: multi-platform hooks and tests

* chore: multi-platform hooks and tests

* chore: add intention for colors

* chore: update lint-staged to fix color

* chore: update dist files

* feat: move to lefthook (remove husky and lint-staged)

* feat: move to lefthook (remove husky and lint-staged)

* fix: test aftereach

* fix: test aftereach

* fix: early restore call

* feat: jest fails if something gets logged to console

* chore: add todos of misplaced code

* chore: update dist files

* chore: move jest file
2022-03-28 01:23:32 +02:00
Webber TakkenandMaxim Vorobyev eb42a8c9b8 Update entrypoint.sh (#348)
if there is both a unity package and a test-project in one github repo, then the token generation process is created Library folder and then the build of the test project breaks. Requires a tilde to ignore Library folder in _activate-license.
Or need set the path ACTIVATE_LICENSE_PATH from the global ENV in runtime-action

Co-authored-by: Maxim Vorobyev <[email protected]>
2022-02-26 19:08:42 +01:00
Webber Takken 3ebdb0e678 Run license activation in an empty directory (#285) 2021-08-31 01:18:34 +02:00
Webber Takken 70081d231f Indicate how to support us (#277) 2021-07-12 19:28:11 +02:00
Webber Takken 8c1a159dd0 add default tag for feature request (#272) 2021-06-05 23:59:56 +02:00
Webber Takken 9fff362775 Remove -nographics flag, ensure single -batchmode flag (#261)
* Remove -nographics flag, ensure -batchmode

* Remove explicit batch mode

* Add libnotify4 and bin for notify-send

* non-interactive frontend

* Move docker changes to base image (docker repo)
2021-05-22 21:07:54 +02:00
Webber Takken 947c8b8e20 Fix typo in issue template (#260) 2021-05-13 14:03:00 +02:00
Webber Takken a5de621fe2 Ensure proper read permissions and cleanup build.sh (#259)
* Add linux read permissions and cleanup build.sh

* More verbose dirty branch

* Simplify added verbosity
2021-05-10 01:08:53 +02:00
Webber Takken 398eda622f Add Discord link in issues (#239) 2021-04-03 12:30:00 +02:00
Webber Takken b769675b38 Update repo url and status badges (#228)
* Update url in package.json

* Fix badges
2021-03-14 01:19:30 +01:00
Webber Takken 4fde4e47b6 Refactor action to typescript (#226)
* Refactor to typescript (config part)

* Refactor to typescript (convert extensions, minor fixes)

* Refactor to typescript (move from `action` to `dist`)

* Re-enable integrity-check for dist index.js

* Fix all tests and lints

* fix parsing major versions

* Test patch level to be digits only

* debug

* debug

* uncache

* manual compile

* debug

* debug

* Debug

* Build lib - doh

* remove diff check

* Make kubernetes workflow manual

* Properly generate 3 digit for simple major tags

* Remove ts-ignore

* re-enable cache
2021-03-14 00:44:01 +01:00
Webber Takken c7c1841c97 split workflows (#203) 2021-01-23 11:39:42 +01:00
Webber Takken 2cec591baa Secure licenses (#202) 2021-01-23 11:30:46 +01:00
Webber 08e3347f47 Add cats 2021-01-23 10:30:23 +01:00
Webber Takken 89df68796c add activation workflow and set retention periods (#201)
* add activation workflow

* Trigger on push as well

* use specific version

* Set more sensible retention periods
2021-01-23 10:06:32 +01:00
Webber Takken 5b2e80e1a4 update deprecated workflow (#194) 2021-01-07 23:21:04 +01:00
Webber Takken 9c804d98a0 Fix typo 2020-12-06 18:13:32 +01:00
Webber Takken 042fb6ae32 remove anything recognizable as Unity (#184) 2020-12-06 17:57:57 +01:00
Webber Takken 8eeb848483 add il2cpp support for linux from 2019.3 (#177) 2020-11-14 00:57:44 +01:00
Webber Takken 9e2a1b2d35 Remove duplicate flag batch-mode (#173) 2020-11-09 20:04:56 +01:00
Webber 471bf0bdf0 Merge branch 'BLaZeKiLL-fix/unity-alias' into main 2020-11-01 15:08:06 +01:00
Webber 6c2fbff839 Merge branch 'fix/unity-alias' of https://github.com/BLaZeKiLL/unity-builder into BLaZeKiLL-fix/unity-alias 2020-11-01 15:06:09 +01:00
Webber Takken 17c28995b2 Update action to use main (#168) 2020-10-29 23:21:48 +01:00
Webber Takken ef74241772 Fix recursive path (#160) 2020-10-12 19:37:26 +02:00
Webber Takken 91da660786 remove artifacts older than 21 days (#157) 2020-09-28 19:19:18 +02:00
Webber Takken f42f7923ed Add intructions for debugging (#154) 2020-09-27 21:44:14 +02:00
Webber Takken 22bc9a9bad Allow k8s workflow failures (#152) 2020-09-19 02:41:34 +02:00
Webber Takken 89bdaa5e46 Add issue templates and pull request template (#142) 2020-08-22 22:03:44 +02:00
Webber Takken 67b76584b8 Cleanup root dir (#133)
* Remove package-lock.json

* Move bootstrap logic into action folder

* Fix relative path

* update index after rebase

* Shell files are executable

* Update yarn.lock

* Update yarn.lock
2020-08-22 19:17:02 +02:00
Webber 196fe8fc5b Move docs to unity-ci.com 2020-07-11 15:53:20 +02:00
Webber 96eeaf940a Remove androidVersionCode from default workflow 2020-07-08 20:07:03 +02:00
Webber bf702784d2 cleanup workflow 2020-06-25 00:57:16 +02:00
Webber 938926799f Remove WebGL for faster CI 2020-06-13 17:06:03 +02:00
Webber 5efb4868ad Comment out activation 2020-06-13 17:06:03 +02:00
Webber 7749b8862d Add matrix support for multi license 2020-06-13 17:06:03 +02:00
Webber 98a56c4169 Add 2019.3.15 workflow 2020-06-13 17:06:03 +02:00
Webber 720ee0c896 Acquire activation files 2020-06-13 17:06:03 +02:00
Webber d42c251af3 Snyk badge really almost never works, bye 2020-05-23 02:22:55 +02:00
Webber bfe6be7ce2 Update readme for v1.0 🎉 2020-05-23 00:25:26 +02:00
Webber f15f40d265 Use head for tags 2020-05-22 23:01:58 +02:00
Webber 866f364f64 Use ref instead of tag vs branch 2020-05-22 23:01:58 +02:00
Webber a245f08e75 rename to throwContextualError 2020-05-22 23:01:58 +02:00
Webber 21c211bbdd rebase on master 2020-05-22 23:01:58 +02:00
Webber 3718e05961 Describe errors in System.run 2020-05-22 23:01:58 +02:00
Webber 0159028bb1 Fix missing await 2020-05-22 23:01:58 +02:00
Webber 054c6bfab3 Catch command for in-shell errors 2020-05-22 23:01:58 +02:00
Webber 8c9ff3249e More info if command gives no output, just the exit code. 2020-05-22 23:01:58 +02:00
Webber 7386c669ad Fix no output from errors 2020-05-22 23:01:58 +02:00
Webber ce865270c4 Use commit-ish for git description 2020-05-22 23:01:58 +02:00
Webber 7e17091251 Split responsibilities between Input and BuildParameters models 2020-05-22 00:55:26 +02:00
Webber 02ff5bbef2 Add documentation and tests for allowDirtyBuild 2020-05-22 00:55:26 +02:00
Webber 8c177b1bad Add flag for allowing dirty branch 2020-05-22 00:55:26 +02:00
Webber 699621ed21 Run versioning commands in projectPath instead 2020-05-21 14:26:37 +02:00
Webber 44bde7feb9 Base number of commits off of the branch on origin 2020-05-02 16:37:24 +02:00
Webber 5328bda08e Base number of commits off of the branch 2020-05-02 16:37:24 +02:00
Webber 34e4b86924 Fix case where no tags does not trigger false 2020-05-01 20:32:41 +02:00
Webber e9514b4e37 Stop hammering patches 🔨 2020-05-01 17:55:27 +02:00
Webber d4d91e75c3 Configure codecov threshold 2020-05-01 17:55:27 +02:00
Webber 2085eff264 Add missing test for ref getters 2020-05-01 17:55:27 +02:00
Webber 98a1b078fc Update styles to latest unicorn 🦄 and prettier 🦋 2020-05-01 17:55:27 +02:00
Webber afef854ea0 update packages to latest 2020-05-01 17:55:27 +02:00
Webber a0a5de2a83 Cover all versioning paths 2020-05-01 16:15:56 +02:00
Webber c146049b33 Mock all output methods from core 2020-05-01 16:15:56 +02:00
Webber e46399169f Add tests for System model 2020-05-01 16:15:56 +02:00
Webber b41026b36e Introduce smart fetching, based on type of local repo. 2020-05-01 16:15:56 +02:00
Webber cd1d215dfa Remove unshallow fetch 2020-05-01 16:15:56 +02:00
Webber d01e844eea Fix versioning for push event. 2020-05-01 16:15:56 +02:00
Webber 40564afbaf Fix failed test 2020-04-28 02:02:34 +02:00
Webber b6f8040f4a Add tests for the versioning model 2020-04-28 02:02:34 +02:00
Webber 22c7d0e516 Improve versioning readme 📜 2020-04-26 21:45:10 +02:00
Webber f85e50e499 Fix bug in hasAnyVersionTags 🐜 2020-04-26 21:45:10 +02:00
Webber d75d7890d0 Implement versioning strategies in js 🧉 2020-04-26 21:45:10 +02:00
Webber 2e81e61af3 Add additional tests 🧪 2020-04-26 21:45:10 +02:00
Webber ac76e9d562 Update readme with versioning examples 🧉 2020-04-26 21:45:10 +02:00
Webber 39a160b789 Allow versioning and version parameters. 2020-04-26 21:45:10 +02:00
Webber e8a2eaad72 Cleanup default-build-script 2020-04-26 21:45:10 +02:00
Webber 6f1d03d8a8 Refactor Builder 2020-04-26 21:45:10 +02:00
Webber 5ee9c59113 Create VersionApplicator 2020-04-26 21:45:10 +02:00
Webber 03510d4a55 Abstract out the stdout reporter 2020-04-26 21:45:10 +02:00
Webber ad65b0ece4 Abstract out the argument parser 2020-04-26 21:45:10 +02:00
Webber a513e5b640 Add semantic versioning logic 2020-04-26 21:45:10 +02:00
Webber 328b0d8ac0 Add system extension for Process 2020-04-26 21:45:10 +02:00
Webber e53dcf13e3 Add .editorconfig for the default-build-script project 2020-04-26 21:45:10 +02:00
Webber 8684472273 install deps during build phase 2020-03-09 23:47:22 +01:00
Webber 38b6a42f5e fix dist file 2020-03-09 23:47:22 +01:00
Webber 1813ee2895 add dist build 2020-02-15 18:02:01 +01:00
Webber 2c1ef01beb Update readme to reflect v0.11 2020-02-11 20:59:27 +01:00
Webber dfccf539d1 Add custom parameters to test workflow 2020-02-11 20:59:27 +01:00