diff --git a/.github/workflows/auto-retry-known-flakes.yml b/.github/workflows/auto-retry-known-flakes.yml new file mode 100644 index 00000000..c8cc6ecf --- /dev/null +++ b/.github/workflows/auto-retry-known-flakes.yml @@ -0,0 +1,92 @@ +name: Auto-retry known-transient CI flakes + +# Careful, narrow auto-healing for this repo's OWN test CI - not a blanket +# "retry until green" mechanism. game-ci/cli's Unity build/activate steps +# already retry a specific, documented set of transient licensing errors +# in-process (up to --licenseRetryMaxAttempts, default 4, exponential +# backoff - see dist/platforms/{mac,ubuntu}/steps/{activate,build}.sh). That +# retries on the SAME runner instance, so it can't help when the underlying +# issue is runner-specific (e.g. a stuck Gatekeeper/codesign cache) rather +# than a genuinely transient network blip - all 4 in-process attempts then +# fail identically, and only a fresh job (potentially a different runner) +# has a chance. +# +# This workflow closes exactly that gap: if a build-tests-* run finishes +# with failed jobs, and EVERY failed job's log matches the exact same +# known-transient pattern the in-process retry already uses (nothing +# broader - a real compile error, a genuine license misconfiguration, or +# any other failure never matches and is never auto-retried), rerun the +# failed jobs once. If any failed job doesn't match, or this is already a +# retry (workflow_run.run_attempt > 1), do nothing - a human or agent needs +# to look at it. +on: + workflow_run: + workflows: ['Builds - MacOS', 'Builds - Ubuntu', 'Builds - Windows'] + types: [completed] + +permissions: + actions: write + contents: read + +jobs: + retry-if-known-flake: + name: Retry if known-transient flake + runs-on: ubuntu-latest + if: github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1 + steps: + - name: Check failed jobs against the known-transient pattern, rerun if all match + uses: actions/github-script@v7 + env: + # Kept in sync with dist/platforms/{mac,ubuntu}/steps/{activate,build}.sh's + # own UNITY_*_TRANSIENT_LICENSE_ERROR_PATTERN - update both together. + TRANSIENT_PATTERN: 'TimeoutPolicy did not complete|Access token is unavailable|entitlement groups and 0 free entitlements|License activation has failed|No valid Unity Editor license found|License is not active' + with: + script: | + const runId = context.payload.workflow_run.id; + const pattern = new RegExp(process.env.TRANSIENT_PATTERN); + + const { data: { jobs } } = await github.rest.actions.listJobsForWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: runId, + per_page: 100, + }); + + const failedJobs = jobs.filter((job) => job.conclusion === 'failure'); + if (failedJobs.length === 0) { + core.info('No failed jobs found (a cancelled/skipped-only run) - nothing to do.'); + return; + } + + let allMatch = true; + for (const job of failedJobs) { + let log = ''; + try { + const response = await github.rest.actions.downloadJobLogsForWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + job_id: job.id, + }); + log = response.data.toString(); + } catch (error) { + core.warning(`Could not fetch logs for job ${job.name} (${job.id}): ${error.message}`); + allMatch = false; + break; + } + + if (!pattern.test(log)) { + core.info(`Job "${job.name}" failed without the known-transient pattern - not auto-retrying this run.`); + allMatch = false; + break; + } + core.info(`Job "${job.name}" failed with the known-transient pattern.`); + } + + if (!allMatch) return; + + core.info(`All ${failedJobs.length} failed job(s) matched the known-transient pattern - rerunning failed jobs.`); + await github.rest.actions.reRunWorkflowFailedJobs({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: runId, + }); diff --git a/.github/workflows/build-tests-mac.yml b/.github/workflows/build-tests-mac.yml index e0d110af..b38e4f3b 100644 --- a/.github/workflows/build-tests-mac.yml +++ b/.github/workflows/build-tests-mac.yml @@ -12,6 +12,10 @@ jobs: buildForAllPlatformsMacOS: name: ${{ matrix.targetPlatform }} on ${{ matrix.unityVersion }} runs-on: macos-latest + # Kept as a backstop even after splitting the cache save below into its + # own bounded step: real builds finish in well under 40m, so this only + # fires if something else entirely hangs. + timeout-minutes: 60 strategy: fail-fast: false matrix: @@ -41,12 +45,21 @@ jobs: lfs: true ########################### - # Cache # + # Cache (restore) # ########################### - - uses: actions/cache@v4 + # Split from the save side (below) rather than the combined + # actions/cache@v4: that action's implicit post-run save has been + # observed hanging indefinitely on macOS runners (unrelated to the + # cache key itself - confirmed by reproducing it again after fixing a + # real key collision here). A per-step timeout doesn't bound an + # implicit post-run cleanup step, only an explicit step does - and + # caching is a pure optimization, so losing one save is far cheaper + # than a job stuck "in_progress" for 1.5h+. + - uses: actions/cache/restore@v4 + id: cache-restore with: path: ${{ matrix.projectPath }}/Library - key: Library-${{ matrix.projectPath }}-macos-${{ matrix.targetPlatform }} + key: Library-${{ matrix.projectPath }}-macos-${{ matrix.targetPlatform }}-${{ matrix.unityVersion }}-${{ matrix.buildProfile }} restore-keys: | Library-${{ matrix.projectPath }}-macos- Library- @@ -65,6 +78,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: @@ -85,3 +99,19 @@ jobs: name: Build ${{ matrix.targetPlatform }} on MacOS (${{ matrix.unityVersion }})${{ matrix.buildProfile && ' With Build Profile' || '' }} path: build retention-days: 14 + + ########################### + # Cache (save) # + ########################### + # A bounded, non-fatal step (unlike the combined action's implicit + # post-run save): a hang here is killed after 5m instead of stalling + # the whole job, and continue-on-error means a failed/timed-out save + # never fails the build - only a real cache miss on the next run, + # which is a much cheaper failure mode. + - if: steps.cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + timeout-minutes: 5 + continue-on-error: true + with: + path: ${{ matrix.projectPath }}/Library + key: ${{ steps.cache-restore.outputs.cache-primary-key }} diff --git a/.github/workflows/build-tests-ubuntu.yml b/.github/workflows/build-tests-ubuntu.yml index 18e7cd5e..6dfc96ff 100644 --- a/.github/workflows/build-tests-ubuntu.yml +++ b/.github/workflows/build-tests-ubuntu.yml @@ -37,6 +37,18 @@ jobs: buildForAllPlatformsUbuntu: name: "${{ matrix.targetPlatform }} on ${{ matrix.unityVersion}}${{startsWith(matrix.buildProfile, 'Assets') && ' (via Build Profile)' || '' }}" runs-on: ubuntu-latest + # See build-tests-mac.yml's matching comment - a per-step timeout doesn't + # bound an action's own implicit post-run cleanup step, only a job-level + # timeout does. + timeout-minutes: 60 + # Known, disclosed gap (see #844's description and src/build-args.ts's own + # header comment): the CLI always detects the Unity version from the + # checked-out project's ProjectSettings/ProjectVersion.txt and has no flag + # to override it, so the one matrix cell that specifically needs a version + # override to exercise Unity 6's Build Profiles (`knownGap: true` below) + # is expected to fail until that's fixed upstream - every other cell must + # still fail the job normally. + continue-on-error: ${{ matrix.knownGap == true }} strategy: fail-fast: false matrix: @@ -96,6 +108,9 @@ jobs: - unityVersion: 6000.0.36f1 targetPlatform: WebGL buildProfile: 'Assets/Settings/Build Profiles/Sample WebGL Build Profile.asset' + # Known gap: needs the unityVersion override the CLI doesn't + # support yet (see the job-level continue-on-error comment above). + knownGap: true steps: - name: Clear Space for Android Build @@ -110,12 +125,20 @@ jobs: lfs: true ########################### - # Cache # + # Cache (restore) # ########################### - - uses: actions/cache@v4 + # Split from the save side (below) rather than the combined + # actions/cache@v4: that action's implicit post-run save has been + # observed hanging indefinitely on GitHub-hosted runners, unrelated to + # the cache key itself. A per-step timeout doesn't bound an implicit + # post-run cleanup step, only an explicit step does - and caching is a + # pure optimization, so losing one save is far cheaper than a job + # stuck "in_progress" for well over an hour. + - uses: actions/cache/restore@v4 + id: cache-restore with: path: ${{ matrix.projectPath }}/Library - key: Library-${{ matrix.projectPath }}-ubuntu-${{ matrix.targetPlatform }} + key: Library-${{ matrix.projectPath }}-ubuntu-${{ matrix.targetPlatform }}-${{ matrix.unityVersion }}-${{ matrix.buildProfile }} restore-keys: | Library-${{ matrix.projectPath }}-ubuntu- Library- @@ -138,6 +161,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: buildName: 'GameCI Test Build' projectPath: ${{ matrix.projectPath }} @@ -161,6 +185,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: buildName: 'GameCI Test Build' projectPath: ${{ matrix.projectPath }} @@ -183,6 +208,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: buildName: 'GameCI Test Build' projectPath: ${{ matrix.projectPath }} @@ -201,3 +227,19 @@ jobs: name: "Build ${{ matrix.targetPlatform }}${{ startsWith(matrix.buildProfile, 'Assets') && ' (via Build Profile)' || '' }} on Ubuntu (${{ matrix.unityVersion }}_il2cpp_${{ matrix.buildWithIl2cpp }}_params_${{ matrix.additionalParameters }})" path: build retention-days: 14 + + ########################### + # Cache (save) # + ########################### + # A bounded, non-fatal step (unlike the combined action's implicit + # post-run save): a hang here is killed after 5m instead of stalling + # the whole job, and continue-on-error means a failed/timed-out save + # never fails the build - only a real cache miss on the next run, + # which is a much cheaper failure mode. + - if: steps.cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + timeout-minutes: 5 + continue-on-error: true + with: + path: ${{ matrix.projectPath }}/Library + key: ${{ steps.cache-restore.outputs.cache-primary-key }} diff --git a/.github/workflows/build-tests-windows.yml b/.github/workflows/build-tests-windows.yml index e0523864..3cf89315 100644 --- a/.github/workflows/build-tests-windows.yml +++ b/.github/workflows/build-tests-windows.yml @@ -12,6 +12,10 @@ jobs: buildForAllPlatformsWindows: name: ${{ matrix.targetPlatform }} on ${{ matrix.unityVersion }} runs-on: windows-2022 + # See build-tests-mac.yml's matching comment - a per-step timeout doesn't + # bound an action's own implicit post-run cleanup step, only a job-level + # timeout does. + timeout-minutes: 60 strategy: fail-fast: false matrix: @@ -49,12 +53,20 @@ jobs: lfs: true ########################### - # Cache # + # Cache (restore) # ########################### - - uses: actions/cache@v4 + # Split from the save side (below) rather than the combined + # actions/cache@v4: that action's implicit post-run save has been + # observed hanging indefinitely on GitHub-hosted runners, unrelated to + # the cache key itself. A per-step timeout doesn't bound an implicit + # post-run cleanup step, only an explicit step does - and caching is a + # pure optimization, so losing one save is far cheaper than a job + # stuck "in_progress" for well over an hour. + - uses: actions/cache/restore@v4 + id: cache-restore with: path: ${{ matrix.projectPath }}/Library - key: Library-${{ matrix.projectPath }}-windows-${{ matrix.targetPlatform }} + key: Library-${{ matrix.projectPath }}-windows-${{ matrix.targetPlatform }}-${{ matrix.unityVersion }}-${{ matrix.buildProfile }} restore-keys: | Library-${{ matrix.projectPath }}-windows- Library- @@ -105,6 +117,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: @@ -132,6 +145,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: @@ -157,6 +171,7 @@ jobs: env: UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} with: @@ -179,3 +194,19 @@ jobs: GPU' || '' }}${{ matrix.buildProfile && ' With Build Profile' || '' }} path: build retention-days: 14 + + ########################### + # Cache (save) # + ########################### + # A bounded, non-fatal step (unlike the combined action's implicit + # post-run save): a hang here is killed after 5m instead of stalling + # the whole job, and continue-on-error means a failed/timed-out save + # never fails the build - only a real cache miss on the next run, + # which is a much cheaper failure mode. + - if: steps.cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + timeout-minutes: 5 + continue-on-error: true + with: + path: ${{ matrix.projectPath }}/Library + key: ${{ steps.cache-restore.outputs.cache-primary-key }} diff --git a/.github/workflows/integrity-check.yml b/.github/workflows/integrity-check.yml index b491fc84..47aace51 100644 --- a/.github/workflows/integrity-check.yml +++ b/.github/workflows/integrity-check.yml @@ -53,10 +53,3 @@ jobs: - run: bash <(curl -s https://codecov.io/bash) - run: yarn build || { echo "build command should always succeed" ; exit 61; } # - run: yarn build --quiet && git diff --quiet dist || { echo "dist should be auto generated" ; git diff dist ; exit 62; } - - orchestrator-integration: - name: Orchestrator Integration - if: >- - github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'run-integration') - uses: ./.github/workflows/validate-orchestrator-integration.yml - secrets: inherit diff --git a/.github/workflows/sync-secrets.yml b/.github/workflows/sync-secrets.yml index b2af4e83..e7fad146 100644 --- a/.github/workflows/sync-secrets.yml +++ b/.github/workflows/sync-secrets.yml @@ -11,6 +11,8 @@ on: options: - game-ci/orchestrator - game-ci/cli + - game-ci/unity-test-runner + - game-ci/unity-activate dry_run: description: 'Dry run (list secrets to sync without writing)' required: false @@ -70,7 +72,14 @@ jobs: if [ "$DRY_RUN" = "true" ]; then echo "🔍 DRY RUN: would sync $name → $TARGET_REPO" else - if echo "$value" | gh secret set "$name" -R "$TARGET_REPO" --body - 2>/dev/null; then + # `gh secret set` reads the value from stdin only when --body is + # NOT passed. `--body -` does not mean "read stdin" - gh takes it + # literally, so this wrote the single character "-" as the value + # of every secret it synced, silently destroying them. (A secret + # whose value is "-" also makes Actions mask every hyphen in the + # logs, which mangles unrelated output like image tags: + # "unityci/editor:ubuntu***2022.3.7f1***linux***il2cpp***3".) + if gh secret set "$name" -R "$TARGET_REPO" --body "$value" 2>/dev/null; then echo "✅ SYNCED: $name → $TARGET_REPO" else echo "⚠️ FAILED: $name → $TARGET_REPO (continuing)" diff --git a/.github/workflows/validate-orchestrator-integration.yml b/.github/workflows/validate-orchestrator-integration.yml deleted file mode 100644 index 88bf4850..00000000 --- a/.github/workflows/validate-orchestrator-integration.yml +++ /dev/null @@ -1,1269 +0,0 @@ -name: Orchestrator Integration Tests - -# ============================================================================== -# Exhaustive integration tests — runs on a daily cron and manual dispatch. -# Slow (~1-2h wall-clock): k8s, AWS, local-docker, rclone via MiniStack + k3d. -# -# Mirrors the full orchestrator-integrity.yml test suite from the orchestrator -# repo, run from unity-builder's perspective to catch cross-repo regressions. -# -# For fast per-PR checks, see validate-orchestrator.yml. -# ============================================================================== - -on: - workflow_dispatch: - workflow_call: # Allow integrity-check.yml and other workflows to invoke these tests - schedule: - - cron: '0 3 * * *' # Daily at 3 AM UTC - -permissions: - contents: read - checks: write - statuses: write - -# Note: no concurrency block here — when invoked via workflow_call, the caller -# (integrity-check.yml) manages concurrency. For direct dispatch/cron, runs are -# naturally serialized by GitHub's single-concurrency-per-ref default. - -env: - AWS_STACK_NAME: game-ci-team-pipelines - DEBUG: true - PROJECT_PATH: test-project - USE_IL2CPP: false - -# ============================================================================== -# 4 parallel jobs on separate runners (fresh 14GB disk each). -# Matches the orchestrator-integrity.yml architecture. -# ============================================================================== - -jobs: - # ============================================================================ - # PLUGIN INTERFACE (fast gate — fails fast before slow jobs waste time) - # ============================================================================ - plugin-interface: - name: Plugin Interface Tests - runs-on: ubuntu-latest - steps: - - name: Checkout unity-builder - uses: actions/checkout@v4 - - - name: Checkout orchestrator (matching branch) - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - path: orchestrator-standalone - continue-on-error: true - id: orchestrator-branch - - - name: Fallback to orchestrator main branch - if: steps.orchestrator-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - path: orchestrator-standalone - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - - name: Install unity-builder dependencies - run: yarn install --immutable - - - name: Build unity-builder - run: | - echo "Building unity-builder TypeScript..." - npx tsc - echo "✓ unity-builder compiles successfully" - - - name: Run plugin interface unit tests - run: | - echo "Running orchestrator-plugin unit tests..." - npx vitest run orchestrator-plugin --reporter=verbose - - - name: Build and pack orchestrator - working-directory: orchestrator-standalone - run: | - yarn install --immutable - echo "Building orchestrator..." - npx tsc - echo "✓ orchestrator compiles successfully" - echo "Packing orchestrator as tarball..." - npm pack - - - name: Install orchestrator into unity-builder - run: | - echo "Installing orchestrator into unity-builder workspace..." - npm install ./orchestrator-standalone/game-ci-orchestrator-*.tgz --no-save --legacy-peer-deps - - - name: Verify plugin loader returns exports with orchestrator installed - run: | - node -e " - const { loadOrchestratorPlugin } = require('./lib/model/orchestrator-plugin'); - (async () => { - const plugin = await loadOrchestratorPlugin(); - if (plugin === undefined) { - console.error('ERROR: loadOrchestratorPlugin should return defined plugin when package is installed'); - process.exit(1); - } - const lifecycleMethods = [ - 'initialize', 'canHandleBuild', 'handleBuild', - 'beforeLocalBuild', 'afterLocalBuild', 'handlePostBuild', - ]; - for (const method of lifecycleMethods) { - if (typeof plugin[method] !== 'function') { - console.error('ERROR: plugin.' + method + ' should be a function, got ' + typeof plugin[method]); - process.exit(1); - } - } - console.log('✓ loadOrchestratorPlugin() returns plugin with all ' + lifecycleMethods.length + ' lifecycle methods'); - })(); - " - - - name: Verify type declarations match exports - run: | - node -e " - const orch = require('@game-ci/orchestrator'); - const expected = ['Orchestrator','BuildReliabilityService','TestWorkflowService','HotRunnerService','OutputService','OutputTypeRegistry','ArtifactUploadHandler','IncrementalSyncService','ChildWorkspaceService','LocalCacheService','SubmoduleProfileService','LfsAgentService','GitHooksService']; - const missing = expected.filter(e => orch[e] === undefined); - if (missing.length > 0) { console.error('Missing exports:', missing.join(', ')); process.exit(1); } - console.log('✓ All ' + expected.length + ' exports present'); - " - - # ============================================================================ - # K8S INTEGRATION TESTS (k3d + MiniStack) - # ============================================================================ - k8s-integration: - name: K8s Integration Tests - runs-on: ubuntu-latest - env: - K3D_NODE_CONTAINERS: 'k3d-unity-builder-agent-0' - AWS_FORCE_PROVIDER: aws-local - RESOURCE_TRACKING: 'true' - K8S_LOCALSTACK_HOST: localstack-main - steps: - - name: Checkout orchestrator (matching branch) - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - lfs: false - continue-on-error: true - id: orch-branch - - - name: Clean corrupted checkout - if: steps.orch-branch.outcome == 'failure' - run: rm -rf .git || true - - - name: Fallback to orchestrator main branch - if: steps.orch-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - lfs: false - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - - name: Set up kubectl - uses: azure/setup-kubectl@v4 - with: - version: 'v1.34.1' - - - name: Install k3d - run: | - curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash - k3d version | cat - - - name: Define cleanup functions - run: | - cat > /tmp/cleanup-functions.sh << 'CLEANUP_EOF' - light_cleanup() { - echo "--- Light cleanup ---" - rm -rf ./orchestrator-cache/* || true - docker system prune -f || true - df -h - } - - k8s_resource_cleanup() { - echo "--- K8s resource cleanup ---" - kubectl delete jobs --all --ignore-not-found=true -n default || true - kubectl get pods -n default -o name 2>/dev/null | grep -E "(unity-builder-job-|helper-pod-)" | while read pod; do - kubectl delete "$pod" --ignore-not-found=true || true - done || true - kubectl get pvc -n default -o name 2>/dev/null | grep "unity-builder-pvc-" | while read pvc; do - kubectl delete "$pvc" --ignore-not-found=true || true - done || true - kubectl get secrets -n default -o name 2>/dev/null | grep "build-credentials-" | while read secret; do - kubectl delete "$secret" --ignore-not-found=true || true - done || true - } - - k3d_node_cleanup() { - echo "--- K3d node image cleanup (preserving Unity images) ---" - K3D_NODE_CONTAINERS="${K3D_NODE_CONTAINERS:-k3d-unity-builder-agent-0 k3d-unity-builder-server-0}" - for NODE in $K3D_NODE_CONTAINERS; do - docker exec "$NODE" sh -c "crictl rm --all 2>/dev/null || true" || true - docker exec "$NODE" sh -c "for img in \$(crictl images -q 2>/dev/null); do repo=\$(crictl inspecti \$img --format '{{.repo}}' 2>/dev/null || echo ''); if echo \"\$repo\" | grep -qvE 'unityci/editor|unity'; then crictl rmi \$img 2>/dev/null || true; fi; done" || true - docker exec "$NODE" sh -c "crictl rmi --prune 2>/dev/null || true" || true - done || true - } - - full_k8s_cleanup() { - k8s_resource_cleanup - k3d_node_cleanup - light_cleanup - } - CLEANUP_EOF - echo "Cleanup functions defined at /tmp/cleanup-functions.sh" - - - name: Initial disk space cleanup - run: | - echo "Initial disk space cleanup..." - df -h - k3d cluster delete unity-builder || true - docker stop localstack-main 2>/dev/null || true - docker rm localstack-main 2>/dev/null || true - docker system prune -af --volumes || true - docker network rm orchestrator-net 2>/dev/null || true - docker network create orchestrator-net || true - echo "Disk usage after cleanup:" - df -h - - - name: Start MiniStack - run: | - echo "Starting MiniStack..." - docker run -d \ - --name localstack-main \ - --network orchestrator-net \ - --add-host=host.docker.internal:host-gateway \ - -p 4566:4566 \ - ministackorg/ministack:latest || true - echo "Waiting for MiniStack to be ready..." - MAX_ATTEMPTS=60 - READY=false - for i in $(seq 1 $MAX_ATTEMPTS); do - if ! docker ps | grep -q localstack-main; then sleep 2; continue; fi - HEALTH=$(curl -s http://localhost:4566/_localstack/health 2>/dev/null || echo "") - if [ -z "$HEALTH" ] || ! echo "$HEALTH" | grep -q "services"; then sleep 2; continue; fi - if echo "$HEALTH" | grep -q '"s3"'; then - echo "MiniStack is ready (attempt $i/$MAX_ATTEMPTS)" - READY=true - break - fi - sleep 2 - done - if [ "$READY" != "true" ]; then - echo "ERROR: MiniStack did not become ready" - docker logs localstack-main --tail 100 || true - exit 1 - fi - - - name: Install AWS CLI tools - run: | - if ! command -v aws > /dev/null 2>&1; then pip install awscli || true; fi - pip install awscli-local || true - - - name: Create S3 bucket for tests - run: | - for _ in {1..10}; do - if curl -s http://localhost:4566/_localstack/health > /dev/null 2>&1; then break; fi - sleep 1 - done - for _ in {1..5}; do - if command -v awslocal > /dev/null 2>&1; then - awslocal s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - else - aws --endpoint-url=http://localhost:4566 s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - fi - sleep 2 - done - - - run: yarn install --immutable - - - name: Build orchestrator - run: | - echo "Building orchestrator TypeScript..." - yarn build - echo "✓ orchestrator build successful" - - # --- Fast unit tests (fast-fail gate) --- - - name: Run orchestrator unit tests (fast, no infra) - timeout-minutes: 2 - run: >- - yarn vitest run - "orchestrator-guid" - "orchestrator-folders" - "task-parameter-serializer" - "follow-log-stream-service" - "runner-availability-service" - "provider-url-parser" - "provider-loader" - "provider-git-manager" - "orchestrator-image" - "orchestrator-hooks" - "orchestrator-github-checks" - "middleware-service" - --reporter=verbose --no-file-parallelism - - # --- K8s cluster setup --- - - name: Clean up disk space before K8s tests - run: | - rm -rf ./orchestrator-cache/* || true - sudo apt-get clean || true - docker system prune -f || true - df -h - - - name: Create k3s cluster (k3d) - timeout-minutes: 5 - run: | - LOCALSTACK_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' localstack-main 2>/dev/null || echo "") - echo "MiniStack container IP: $LOCALSTACK_IP" - k3d cluster create unity-builder \ - --agents 1 \ - --network orchestrator-net \ - --wait - kubectl config current-context | cat - echo "LOCALSTACK_IP=$LOCALSTACK_IP" >> "$GITHUB_ENV" - - - name: Verify cluster readiness and MiniStack connectivity - timeout-minutes: 2 - run: | - for i in {1..60}; do - if kubectl get nodes 2>/dev/null | grep -q Ready; then echo "Cluster is ready"; break; fi - echo "Waiting for cluster... ($i/60)" - sleep 5 - done - kubectl get nodes - LOCALSTACK_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' localstack-main 2>/dev/null || echo "") - kubectl run test-localstack --image=curlimages/curl --rm -i --restart=Never --timeout=30s -- \ - curl -v --max-time 10 http://"${LOCALSTACK_IP}":4566/_localstack/health 2>&1 | head -30 || \ - echo "Cluster connectivity test - MiniStack may not be accessible from k3d" - - - name: Clean up K8s resources before tests - run: | - source /tmp/cleanup-functions.sh - k8s_resource_cleanup - for _ in {1..30}; do - PVC_COUNT=$(kubectl get pvc -n default 2>/dev/null | grep -c "unity-builder-pvc-" || echo "0") - if [ "$PVC_COUNT" -eq 0 ]; then echo "All PVCs deleted"; break; fi - sleep 1 - done - docker system prune -f || true - - # --- K8s Test 1: orchestrator-image --- - - name: Run orchestrator-image test (K8s) - timeout-minutes: 10 - run: yarn run test "orchestrator-image" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - KUBE_STORAGE_CLASS: local-path - PROVIDER_STRATEGY: k8s - KUBE_VOLUME_SIZE: 2Gi - containerCpu: '512' - containerMemory: '512' - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-image (K8s) - if: always() - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - - # --- K8s Test 2: orchestrator-kubernetes --- - - name: Run orchestrator-kubernetes test - timeout-minutes: 30 - run: yarn run test "orchestrator-kubernetes" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - KUBE_STORAGE_CLASS: local-path - PROVIDER_STRATEGY: k8s - KUBE_VOLUME_SIZE: 2Gi - containerCpu: '1000' - containerMemory: '1024' - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_S3_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT: http://localhost:4566 - INPUT_AWSS3ENDPOINT: http://localhost:4566 - INPUT_AWSENDPOINT: http://localhost:4566 - AWS_S3_FORCE_PATH_STYLE: 'true' - AWS_EC2_METADATA_DISABLED: 'true' - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-kubernetes - if: always() - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - - # --- K8s Test 3: orchestrator-s3-steps --- - - name: Run orchestrator-s3-steps test (K8s) - timeout-minutes: 30 - run: yarn run test "orchestrator-s3-steps" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - KUBE_STORAGE_CLASS: local-path - PROVIDER_STRATEGY: k8s - KUBE_VOLUME_SIZE: 2Gi - containerCpu: '1000' - containerMemory: '1024' - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_S3_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT: http://localhost:4566 - INPUT_AWSS3ENDPOINT: http://localhost:4566 - INPUT_AWSENDPOINT: http://localhost:4566 - AWS_S3_FORCE_PATH_STYLE: 'true' - AWS_EC2_METADATA_DISABLED: 'true' - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-s3-steps (K8s) - if: always() - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - - # --- K8s Test 4: orchestrator-end2end-caching --- - - name: Run orchestrator-end2end-caching test (K8s) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - KUBE_STORAGE_CLASS: local-path - PROVIDER_STRATEGY: k8s - KUBE_VOLUME_SIZE: 2Gi - containerCpu: '1000' - containerMemory: '1024' - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_S3_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT: http://localhost:4566 - INPUT_AWSS3ENDPOINT: http://localhost:4566 - INPUT_AWSENDPOINT: http://localhost:4566 - AWS_S3_FORCE_PATH_STYLE: 'true' - AWS_EC2_METADATA_DISABLED: 'true' - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-caching (K8s) - if: always() - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - - # --- K8s Test 5: orchestrator-end2end-retaining --- - - name: Extra disk cleanup before retaining test - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - docker system prune -af --volumes || true - df -h - - name: Run orchestrator-end2end-retaining test (K8s) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-retaining" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - KUBE_STORAGE_CLASS: local-path - PROVIDER_STRATEGY: k8s - KUBE_VOLUME_SIZE: 2Gi - containerCpu: '1000' - containerMemory: '1024' - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_S3_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT: http://localhost:4566 - INPUT_AWSS3ENDPOINT: http://localhost:4566 - INPUT_AWSENDPOINT: http://localhost:4566 - AWS_S3_FORCE_PATH_STYLE: 'true' - AWS_EC2_METADATA_DISABLED: 'true' - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-retaining (K8s) - if: always() - run: | - source /tmp/cleanup-functions.sh - full_k8s_cleanup - - # --- K8s teardown --- - - name: Delete k3d cluster and final cleanup - if: always() - run: | - k3d cluster delete unity-builder || true - docker stop localstack-main 2>/dev/null || true - docker rm localstack-main 2>/dev/null || true - docker system prune -af --volumes || true - df -h - - # ============================================================================ - # AWS/LOCALSTACK INTEGRATION TESTS - # ============================================================================ - aws-integration: - name: AWS Integration Tests - runs-on: ubuntu-latest - env: - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT_URL: http://localhost:4566 - steps: - - name: Checkout orchestrator (matching branch) - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - lfs: false - continue-on-error: true - id: orch-branch - - - name: Clean corrupted checkout - if: steps.orch-branch.outcome == 'failure' - run: rm -rf .git || true - - - name: Fallback to orchestrator main branch - if: steps.orch-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - lfs: false - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - - name: Define cleanup functions - run: | - cat > /tmp/cleanup-functions.sh << 'CLEANUP_EOF' - light_cleanup() { - echo "--- Light cleanup ---" - rm -rf ./orchestrator-cache/* || true - docker system prune -f || true - df -h - } - heavy_cleanup() { - echo "--- Heavy cleanup ---" - rm -rf ./orchestrator-cache/* || true - docker system prune -af --volumes || true - df -h - } - CLEANUP_EOF - - - name: Initial disk space cleanup - run: | - df -h - docker system prune -af --volumes || true - df -h - - - name: Start MiniStack - run: | - docker run -d \ - --name localstack-main \ - -p 4566:4566 \ - ministackorg/ministack:latest || true - MAX_ATTEMPTS=60 - for i in $(seq 1 $MAX_ATTEMPTS); do - HEALTH=$(curl -s http://localhost:4566/_localstack/health 2>/dev/null || echo "") - if echo "$HEALTH" | grep -q '"s3"'; then echo "MiniStack ready ($i/$MAX_ATTEMPTS)"; break; fi - sleep 2 - done - - - name: Install AWS CLI tools - run: | - if ! command -v aws > /dev/null 2>&1; then pip install awscli || true; fi - pip install awscli-local || true - - - name: Create S3 bucket for tests - run: | - for _ in {1..5}; do - if command -v awslocal > /dev/null 2>&1; then - awslocal s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - else - aws --endpoint-url=http://localhost:4566 s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - fi - sleep 2 - done - - - run: yarn install --immutable - - - name: Build orchestrator - run: | - echo "Building orchestrator TypeScript..." - yarn build - echo "✓ orchestrator build successful" - - # --- AWS Test 1: orchestrator-image --- - - name: Run orchestrator-image test (AWS) - timeout-minutes: 10 - run: yarn run test "orchestrator-image" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-image (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- AWS Test 2: orchestrator-environment --- - - name: Run orchestrator-environment test (AWS) - timeout-minutes: 30 - run: yarn run test "orchestrator-environment" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-environment (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- AWS Test 3: orchestrator-s3-steps --- - - name: Run orchestrator-s3-steps test (AWS) - timeout-minutes: 30 - run: yarn run test "orchestrator-s3-steps" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-s3-steps (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- AWS Test 4: orchestrator-hooks --- - - name: Run orchestrator-hooks test (AWS) - timeout-minutes: 30 - run: yarn run test "orchestrator-hooks" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-hooks (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- AWS Test 5: orchestrator-caching --- - - name: Run orchestrator-caching test (AWS) - timeout-minutes: 60 - run: yarn run test "orchestrator-caching" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-caching (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- AWS Test 6: orchestrator-locking-core --- - - name: Run orchestrator-locking-core test (AWS) - timeout-minutes: 60 - run: yarn run test "orchestrator-locking-core" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-locking-core (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- AWS Test 7: orchestrator-locking-get-locked --- - - name: Run orchestrator-locking-get-locked test (AWS) - timeout-minutes: 60 - run: yarn run test "orchestrator-locking-get-locked" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-locking-get-locked (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - # End-to-end tests (continue-on-error) — run LAST to prevent - # workspace corruption from affecting mandatory tests above. - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - # --- AWS Test 8: orchestrator-end2end-caching --- - - name: Run orchestrator-end2end-caching test (AWS) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-caching (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- AWS Test 9: orchestrator-end2end-retaining --- - - name: Run orchestrator-end2end-retaining test (AWS) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-retaining" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-retaining (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- AWS Test 10: orchestrator-end2end-locking --- - - name: Run orchestrator-end2end-locking test (AWS) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-locking" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneWindows64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: aws - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-locking (AWS) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- Final cleanup --- - - name: Final cleanup - if: always() - run: | - docker stop localstack-main 2>/dev/null || true - docker rm localstack-main 2>/dev/null || true - docker system prune -af --volumes || true - df -h - - # ============================================================================ - # LOCAL-DOCKER INTEGRATION TESTS - # ============================================================================ - local-docker-integration: - name: Local Docker Integration Tests - runs-on: ubuntu-latest - env: - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT_URL: http://localhost:4566 - steps: - - name: Checkout orchestrator (matching branch) - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - lfs: false - continue-on-error: true - id: orch-branch - - - name: Clean corrupted checkout - if: steps.orch-branch.outcome == 'failure' - run: rm -rf .git || true - - - name: Fallback to orchestrator main branch - if: steps.orch-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - lfs: false - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - - name: Define cleanup functions - run: | - cat > /tmp/cleanup-functions.sh << 'CLEANUP_EOF' - light_cleanup() { - echo "--- Light cleanup ---" - rm -rf ./orchestrator-cache/* || true - docker system prune -f || true - df -h - } - heavy_cleanup() { - echo "--- Heavy cleanup ---" - rm -rf ./orchestrator-cache/* || true - docker system prune -af --volumes || true - df -h - } - CLEANUP_EOF - - - name: Initial disk space cleanup - run: | - df -h - docker system prune -af --volumes || true - df -h - - - name: Start MiniStack (for S3-dependent tests) - run: | - docker run -d \ - --name localstack-main \ - -p 4566:4566 \ - ministackorg/ministack:latest || true - MAX_ATTEMPTS=60 - for i in $(seq 1 $MAX_ATTEMPTS); do - HEALTH=$(curl -s http://localhost:4566/_localstack/health 2>/dev/null || echo "") - if echo "$HEALTH" | grep -q '"s3"'; then echo "MiniStack ready ($i/$MAX_ATTEMPTS)"; break; fi - sleep 2 - done - - - name: Install AWS CLI tools - run: | - if ! command -v aws > /dev/null 2>&1; then pip install awscli || true; fi - pip install awscli-local || true - - - name: Create S3 bucket for tests - run: | - for _ in {1..5}; do - if command -v awslocal > /dev/null 2>&1; then - awslocal s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - else - aws --endpoint-url=http://localhost:4566 s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - fi - sleep 2 - done - - - run: yarn install --immutable - - - name: Build orchestrator - run: | - yarn build - echo "✓ orchestrator build successful" - - # --- Local Docker Test 1: orchestrator-image --- - - name: Run orchestrator-image test (local-docker) - timeout-minutes: 10 - run: yarn run test "orchestrator-image" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-image (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 2: orchestrator-hooks --- - - name: Run orchestrator-hooks test (local-docker) - timeout-minutes: 30 - run: yarn run test "orchestrator-hooks" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-hooks (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 3: orchestrator-local-persistence --- - - name: Run orchestrator-local-persistence test (local-docker) - timeout-minutes: 30 - run: yarn run test "orchestrator-local-persistence" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-local-persistence (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 4: orchestrator-caching --- - - name: Run orchestrator-caching test (local-docker) - timeout-minutes: 30 - run: yarn run test "orchestrator-caching" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-caching (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 5: orchestrator-github-checks --- - - name: Run orchestrator-github-checks test (local-docker) - timeout-minutes: 30 - run: yarn run test "orchestrator-github-checks" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-github-checks (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 6: orchestrator-locking-core (with S3) --- - - name: Run orchestrator-locking-core test (local-docker + S3) - timeout-minutes: 30 - run: yarn run test "orchestrator-locking-core" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-locking-core (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 7: orchestrator-locking-get-locked (with S3) --- - - name: Run orchestrator-locking-get-locked test (local-docker + S3) - timeout-minutes: 30 - run: yarn run test "orchestrator-locking-get-locked" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-locking-get-locked (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && light_cleanup - - # --- Local Docker Test 8: orchestrator-s3-steps (with S3) --- - - name: Run orchestrator-s3-steps test (local-docker + S3) - timeout-minutes: 30 - run: yarn run test "orchestrator-s3-steps" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-s3-steps (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- Local Docker Test 9: orchestrator-end2end-caching (with S3) --- - - name: Run orchestrator-end2end-caching test (local-docker + S3) - timeout-minutes: 60 - continue-on-error: true - run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - name: Cleanup after orchestrator-end2end-caching (local-docker) - if: always() - run: source /tmp/cleanup-functions.sh && heavy_cleanup - - # --- Final cleanup --- - - name: Final cleanup - if: always() - run: | - docker stop localstack-main 2>/dev/null || true - docker rm localstack-main 2>/dev/null || true - docker system prune -af --volumes || true - df -h - - # ============================================================================ - # RCLONE INTEGRATION TESTS - # ============================================================================ - rclone-integration: - name: Rclone Integration Tests - runs-on: ubuntu-latest - env: - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_ENDPOINT: http://localhost:4566 - AWS_ENDPOINT_URL: http://localhost:4566 - steps: - - name: Checkout orchestrator (matching branch) - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - lfs: false - continue-on-error: true - id: orch-branch - - - name: Clean corrupted checkout - if: steps.orch-branch.outcome == 'failure' - run: rm -rf .git || true - - - name: Fallback to orchestrator main branch - if: steps.orch-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - lfs: false - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - - name: Initial disk space cleanup - run: | - docker system prune -af --volumes || true - df -h - - - name: Start MiniStack - run: | - docker run -d \ - --name localstack-main \ - -p 4566:4566 \ - ministackorg/ministack:latest || true - MAX_ATTEMPTS=60 - for i in $(seq 1 $MAX_ATTEMPTS); do - HEALTH=$(curl -s http://localhost:4566/_localstack/health 2>/dev/null || echo "") - if echo "$HEALTH" | grep -q '"s3"'; then echo "MiniStack ready ($i/$MAX_ATTEMPTS)"; break; fi - sleep 2 - done - - - name: Install rclone - run: | - curl https://rclone.org/install.sh | sudo bash || true - rclone version || echo "rclone not available" - - - name: Install AWS CLI tools - run: | - if ! command -v aws > /dev/null 2>&1; then pip install awscli || true; fi - pip install awscli-local || true - - - name: Create S3 bucket for tests - run: | - for _ in {1..5}; do - if command -v awslocal > /dev/null 2>&1; then - awslocal s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - else - aws --endpoint-url=http://localhost:4566 s3 mb s3://"$AWS_STACK_NAME" 2>&1 && break - fi - sleep 2 - done - - - run: yarn install --immutable - - - name: Build orchestrator - run: | - yarn build - echo "✓ orchestrator build successful" - - # --- Rclone Test --- - - name: Run orchestrator-rclone-steps test - timeout-minutes: 30 - run: yarn run test "orchestrator-rclone-steps" --no-file-parallelism - env: - UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} - UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} - UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }} - TARGET_PLATFORM: StandaloneLinux64 - orchestratorTests: true - versioning: None - PROVIDER_STRATEGY: local-docker - GIT_PRIVATE_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GIT_PRIVATE_TOKEN }} - - # --- Final cleanup --- - - name: Final cleanup - if: always() - run: | - docker stop localstack-main 2>/dev/null || true - docker rm localstack-main 2>/dev/null || true - docker system prune -af --volumes || true - df -h diff --git a/.github/workflows/validate-orchestrator.yml b/.github/workflows/validate-orchestrator.yml deleted file mode 100644 index 61f7a2fa..00000000 --- a/.github/workflows/validate-orchestrator.yml +++ /dev/null @@ -1,255 +0,0 @@ -name: Validate Orchestrator Compatibility - -# ============================================================================== -# Essential plugin health checks — runs on every PR and push. -# Fast (~5 min): compilation, unit tests, plugin interface, type declarations. -# -# For exhaustive integration tests (k8s, AWS, local-docker, rclone) see -# validate-orchestrator-integration.yml which runs on a daily cron. -# ============================================================================== - -on: - workflow_dispatch: - push: - branches: [main, 'release/**', 'feature/**', 'refactor/**'] - paths: - - 'src/model/orchestrator-plugin.ts' - - 'src/model/build-parameters.ts' - - 'src/model/input.ts' - - 'src/model/github.ts' - - 'src/model/cli/cli.ts' - - 'src/model/input-readers/**' - - 'src/index.ts' - - 'src/types/game-ci-orchestrator.d.ts' - - 'action.yml' - - 'package.json' - - 'yarn.lock' - - '.github/workflows/validate-orchestrator.yml' - pull_request: - branches: [main, 'release/**'] - paths: - - 'src/model/orchestrator-plugin.ts' - - 'src/model/build-parameters.ts' - - 'src/model/input.ts' - - 'src/model/github.ts' - - 'src/model/cli/cli.ts' - - 'src/model/input-readers/**' - - 'src/index.ts' - - 'src/types/game-ci-orchestrator.d.ts' - - 'action.yml' - - 'package.json' - - 'yarn.lock' - - '.github/workflows/validate-orchestrator.yml' - -permissions: - contents: read - packages: read - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - # ============================================================================ - # PLUGIN ARCHITECTURE HEALTH CHECK - # ============================================================================ - # Validates that: - # 1. unity-builder compiles and its unit tests pass - # 2. Plugin loader degrades gracefully without orchestrator - # 3. Orchestrator compiles and its unit tests pass - # 4. Plugin loader loads all services when orchestrator is installed - # 5. Type declarations match actual exports - # ============================================================================ - plugin-health: - name: Plugin Architecture Health - runs-on: ubuntu-latest - steps: - - name: Checkout unity-builder - uses: actions/checkout@v4 - - - name: Checkout orchestrator - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - ref: ${{ github.head_ref || github.ref_name }} - path: orchestrator-standalone - continue-on-error: true - id: orchestrator-branch - - - name: Fallback to orchestrator main branch - if: steps.orchestrator-branch.outcome == 'failure' - uses: actions/checkout@v4 - with: - repository: game-ci/orchestrator - path: orchestrator-standalone - - - name: Install package manager (from package.json) - run: | - corepack enable - corepack install - - uses: actions/setup-node@v4 - with: - node-version: 20 - - name: Resolve yarn cache folder - id: yarn-config - run: echo "cacheFolder=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT" - - name: Restore yarn install cache (node_modules + cacheFolder + install-state) - uses: actions/cache@v4 - with: - path: | - ${{ steps.yarn-config.outputs.cacheFolder }} - .yarn/install-state.gz - key: yarn-v2-${{ runner.os }}-node-20-${{ hashFiles('yarn.lock') }} - restore-keys: | - yarn-v2-${{ runner.os }}-node-20- - - # --- unity-builder compilation and tests --- - - name: Install unity-builder dependencies - env: - YARN_ENABLE_HARDENED_MODE: 'false' - run: | - case "$(yarn --version)" in 1.*) echo 'expected up-to-date yarn version'; exit 1 ;; esac - yarn install --immutable - - - name: Build unity-builder - run: | - echo "Building unity-builder TypeScript..." - npx tsc - echo "✓ unity-builder compiles successfully" - - - name: Run orchestrator-plugin unit tests - run: | - echo "Running orchestrator-plugin unit tests..." - yarn vitest run orchestrator-plugin - - # --- Plugin loader without orchestrator --- - - name: Verify plugin loader returns undefined without orchestrator - run: | - echo "Checking plugin loader handles missing @game-ci/orchestrator..." - node -e " - const { loadOrchestratorPlugin } = require('./lib/model/orchestrator-plugin'); - (async () => { - const plugin = await loadOrchestratorPlugin(); - if (plugin !== undefined) { - console.error('ERROR: loadOrchestratorPlugin should return undefined when package not installed'); - process.exit(1); - } - console.log('✓ loadOrchestratorPlugin() returns undefined when package not installed'); - })(); - " - - - name: Verify orchestrator type declarations exist - run: | - if [ -f "src/types/game-ci-orchestrator.d.ts" ]; then - echo "✓ Type declarations for @game-ci/orchestrator exist" - else - echo "::error::Missing type declarations: src/types/game-ci-orchestrator.d.ts" - exit 1 - fi - - # --- Orchestrator compilation and tests --- - - name: Build and pack orchestrator - working-directory: orchestrator-standalone - run: | - yarn install --immutable - echo "Building orchestrator..." - npx tsc - echo "✓ orchestrator compiles successfully" - echo "Packing orchestrator as tarball..." - npm pack - - - name: Run orchestrator unit tests - working-directory: orchestrator-standalone - run: | - echo "Running orchestrator unit tests..." - yarn vitest run 2>&1 | tail -30 - - # --- Plugin loader with orchestrator installed --- - - name: Install orchestrator into unity-builder - run: | - echo "Installing orchestrator into unity-builder workspace..." - npm install ./orchestrator-standalone/game-ci-orchestrator-*.tgz --no-save --legacy-peer-deps - - - name: Verify plugin loader returns exports with orchestrator installed - run: | - echo "Checking plugin loader returns defined exports..." - node -e " - const { loadOrchestratorPlugin } = require('./lib/model/orchestrator-plugin'); - (async () => { - const plugin = await loadOrchestratorPlugin(); - if (plugin === undefined) { - console.error('ERROR: loadOrchestratorPlugin should return defined plugin when package is installed'); - process.exit(1); - } - const lifecycleMethods = [ - 'initialize', 'canHandleBuild', 'handleBuild', - 'beforeLocalBuild', 'afterLocalBuild', 'handlePostBuild', - ]; - for (const method of lifecycleMethods) { - if (typeof plugin[method] !== 'function') { - console.error('ERROR: plugin.' + method + ' should be a function, got ' + typeof plugin[method]); - process.exit(1); - } - } - console.log('✓ loadOrchestratorPlugin() returns plugin with all ' + lifecycleMethods.length + ' lifecycle methods'); - })(); - " - - - name: Verify type declarations match orchestrator exports - run: | - echo "Checking type declarations align with orchestrator exports..." - node -e " - const orch = require('@game-ci/orchestrator'); - const expectedExports = [ - 'Orchestrator', 'BuildReliabilityService', 'TestWorkflowService', - 'HotRunnerService', 'OutputService', 'OutputTypeRegistry', - 'ArtifactUploadHandler', 'IncrementalSyncService', - 'ChildWorkspaceService', 'LocalCacheService', 'SubmoduleProfileService', - 'LfsAgentService', 'GitHooksService', - ]; - const missing = expectedExports.filter(e => orch[e] === undefined); - if (missing.length > 0) { - console.error('ERROR: Missing exports from @game-ci/orchestrator:', missing.join(', ')); - process.exit(1); - } - console.log('✓ All ' + expectedExports.length + ' declared exports present in orchestrator package'); - " - - - name: Smoke test orchestrator build wiring - run: | - echo "Verifying orchestrator build wiring end-to-end..." - node -e " - const { loadOrchestratorPlugin } = require('./lib/model/orchestrator-plugin'); - - (async () => { - // Verify plugin loads successfully with orchestrator installed - const plugin = await loadOrchestratorPlugin(); - if (plugin === undefined) { - console.error('ERROR: plugin should be defined when orchestrator is installed'); - process.exit(1); - } - - // Verify all lifecycle methods are callable - const lifecycleMethods = [ - 'initialize', 'canHandleBuild', 'handleBuild', - 'beforeLocalBuild', 'afterLocalBuild', 'handlePostBuild', - ]; - for (const m of lifecycleMethods) { - if (typeof plugin[m] !== 'function') { - console.error('ERROR: plugin.' + m + ' should be a function, got ' + typeof plugin[m]); - process.exit(1); - } - } - console.log('✓ Plugin has all ' + lifecycleMethods.length + ' lifecycle methods'); - - // Verify canHandleBuild returns a boolean - const canHandle = plugin.canHandleBuild(); - if (typeof canHandle !== 'boolean') { - console.error('ERROR: canHandleBuild() should return a boolean, got ' + typeof canHandle); - process.exit(1); - } - console.log('✓ canHandleBuild() returns boolean'); - - console.log('✓ Plugin architecture wiring verified'); - })(); - " diff --git a/.vscode/launch.json b/.vscode/launch.json index ade9bd7b..427bab47 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,19 +10,9 @@ { "type": "node", "request": "launch", - "name": "Debug Jest Test", - "program": "${workspaceRoot}/node_modules/jest/bin/jest.js", - "args": [ - "--collectCoverage=false", - "--colors", - "--config", - "${workspaceRoot}/jest.config.js", - "--runInBand", - "--runTestsByPath", - "${relativeFile}", - "--testPathPattern=${fileDirname}", - "--testTimeout=10000000" - ], + "name": "Debug Vitest Test", + "program": "${workspaceRoot}/node_modules/vitest/vitest.mjs", + "args": ["run", "${relativeFile}"], "outputCapture": "std", "internalConsoleOptions": "openOnSessionStart", "envFile": "${workspaceRoot}/.env", diff --git a/action.yml b/action.yml index 56a722fe..c2831c14 100644 --- a/action.yml +++ b/action.yml @@ -9,7 +9,16 @@ inputs: unityVersion: required: false default: 'auto' - description: 'Version of unity to use for building the project. Use "auto" to get from your ProjectSettings/ProjectVersion.txt' + description: + 'Version of unity to use for building the project. Use "auto" to get from your ProjectSettings/ProjectVersion.txt. + A value other than "auto" is currently ignored - the underlying game-ci CLI always detects the version from the + checked-out project and has no override flag yet.' + cliVersion: + required: false + default: 'latest' + description: + 'Release tag of the game-ci/cli binary to install and run (e.g. "v0.1.0"). Defaults to the latest release; pin + this for reproducible builds.' customImage: required: false default: '' @@ -112,8 +121,11 @@ inputs: default: 'local' required: false description: - 'Build execution strategy. Use "local" for local Docker/Mac builds. For remote builds (aws, k8s, etc.), install - @game-ci/orchestrator and use the game-ci/orchestrator action which declares its own inputs.' + 'Build execution strategy. Use "local" (the default) for Docker/Mac builds driven by this action itself, or + "local-system" to build natively on the host with no Docker at all (game-ci/orchestrator''s own local-system + provider, invoked via `game-ci orchestrate`) - useful for self-hosted runners that already have Unity installed. + For remote builds (aws, k8s, etc.), install @game-ci/orchestrator and use the game-ci/orchestrator action which + declares its own inputs.' runAsHostUser: required: false default: 'false' @@ -177,12 +189,51 @@ inputs: skipActivation: default: 'false' required: false - description: 'Skip the activation/deactivation of Unity. This assumes Unity is already activated.' + description: + 'Skip the activation/deactivation of Unity. This assumes Unity is already activated. Also honoured by + providerStrategy=local-system, for self-hosted runners with an already-licensed, long-lived Unity Hub session.' linux64RemoveExecutableExtension: default: 'false' required: false + description: 'When building for StandaloneLinux64, remove the default file extension of `.x86_64`. Set to true to restore the extensionless behavior from v4.' + engineLaunchWrapper: + default: '' + required: false description: - 'When building for StandaloneLinux64, remove the default file extension of `.x86_64`. Set to true to restore the extensionless behavior from v4.' + "Only applicable to providerStrategy=local-system. Command to prefix the Unity engine process invocation with + (e.g. a self-hosted runner's own launch-serialization lock). Applied precisely around the engine launch itself, + not the surrounding build step. Empty by default." + enableBuildRetry: + default: 'false' + required: false + description: + 'Only applicable to providerStrategy=local-system. Enable automatic classify/decide/retry recovery for failed + Unity builds (budget-gated). Default off: a single failed attempt still throws exactly as before - retry can + back up or wipe the Library folder as a recovery action, which is a meaningful behavior change to opt into.' + localCacheEnabled: + default: 'false' + required: false + description: + 'Only applicable to providerStrategy=local-system. Enable local filesystem caching of the Unity Library folder + and/or .git/lfs between builds on the same self-hosted runner. Off by default.' + localCacheLibrary: + default: 'true' + required: false + description: + 'Only applicable to providerStrategy=local-system, and only takes effect when localCacheEnabled=true. Cache the + engine Library folder locally.' + localCacheLfs: + default: 'false' + required: false + description: + 'Only applicable to providerStrategy=local-system, and only takes effect when localCacheEnabled=true. Cache + .git/lfs locally.' + localCacheMode: + default: 'tar' + required: false + description: + 'Only applicable to providerStrategy=local-system, and only takes effect when localCacheEnabled=true. Local + cache save/restore mode: "tar", "move-directory", or "copy-directory".' outputs: volume: diff --git a/dist/.DS_Store b/dist/.DS_Store deleted file mode 100644 index b1ba203a..00000000 Binary files a/dist/.DS_Store and /dev/null differ diff --git a/dist/BlankProject/.gitignore b/dist/BlankProject/.gitignore deleted file mode 100644 index 963804f6..00000000 --- a/dist/BlankProject/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -Library/ -[Tt]emp/ -[Oo]bj/ -[Bb]uild/ -[Bb]uilds/ -[Ll]ogs/ - -# Uncomment this line if you wish to ignore the asset store tools plugin -# [Aa]ssets/AssetStoreTools* - -# IDEs -.vs/ -.idea/ - -# Gradle cache directory -.gradle/ - -# Autogenerated VS/MD/Consulo solution and project files -ExportedObj/ -.consulo/ -*.csproj -*.unityproj -*.sln -*.suo -*.tmp -*.user -*.userprefs -*.pidb -*.booproj -*.svd -*.pdb -*.mdb -*.opendb -*.VC.db - -# Unity3D generated meta files -*.pidb.meta -*.pdb.meta -*.mdb.meta - -# Unity3D generated file on crash reports -sysinfo.txt - -# Builds -*.apk -*.unitypackage - -# Crashlytics generated file -crashlytics-build.properties diff --git a/dist/BlankProject/Assets/Scenes.meta b/dist/BlankProject/Assets/Scenes.meta deleted file mode 100644 index 7fe8e109..00000000 --- a/dist/BlankProject/Assets/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 131a6b21c8605f84396be9f6751fb6e3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/BlankProject/Assets/Scenes/SampleScene.unity b/dist/BlankProject/Assets/Scenes/SampleScene.unity deleted file mode 100644 index 9421266f..00000000 --- a/dist/BlankProject/Assets/Scenes/SampleScene.unity +++ /dev/null @@ -1,208 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 500 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 2 - m_PVRDenoiserTypeDirect: 0 - m_PVRDenoiserTypeIndirect: 0 - m_PVRDenoiserTypeAO: 0 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 0 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &519420028 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 519420032} - - component: {fileID: 519420031} - - component: {fileID: 519420029} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &519420029 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_Enabled: 1 ---- !u!20 &519420031 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 0 - m_HDR: 1 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 0 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &519420032 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 519420028} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/dist/BlankProject/Assets/Scenes/SampleScene.unity.meta b/dist/BlankProject/Assets/Scenes/SampleScene.unity.meta deleted file mode 100644 index c1e3c88e..00000000 --- a/dist/BlankProject/Assets/Scenes/SampleScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2cda990e2423bbf4892e6590ba056729 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/BlankProject/Packages/manifest.json b/dist/BlankProject/Packages/manifest.json deleted file mode 100644 index 9664f260..00000000 --- a/dist/BlankProject/Packages/manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "dependencies": { - } -} diff --git a/dist/BlankProject/Packages/packages-lock.json b/dist/BlankProject/Packages/packages-lock.json deleted file mode 100644 index 9664f260..00000000 --- a/dist/BlankProject/Packages/packages-lock.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "dependencies": { - } -} diff --git a/dist/BlankProject/ProjectSettings/AudioManager.asset b/dist/BlankProject/ProjectSettings/AudioManager.asset deleted file mode 100644 index 27287fec..00000000 --- a/dist/BlankProject/ProjectSettings/AudioManager.asset +++ /dev/null @@ -1,19 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 1024 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 - m_RequestedDSPBufferSize: 0 diff --git a/dist/BlankProject/ProjectSettings/ClusterInputManager.asset b/dist/BlankProject/ProjectSettings/ClusterInputManager.asset deleted file mode 100644 index e7886b26..00000000 --- a/dist/BlankProject/ProjectSettings/ClusterInputManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] diff --git a/dist/BlankProject/ProjectSettings/DynamicsManager.asset b/dist/BlankProject/ProjectSettings/DynamicsManager.asset deleted file mode 100644 index 72d14303..00000000 --- a/dist/BlankProject/ProjectSettings/DynamicsManager.asset +++ /dev/null @@ -1,37 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 13 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_DefaultMaxDepenetrationVelocity: 10 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_ClothInterCollisionDistance: 0.1 - m_ClothInterCollisionStiffness: 0.2 - m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 0 - m_ReuseCollisionCallbacks: 1 - m_ClothInterCollisionSettingsToggle: 0 - m_ClothGravity: {x: 0, y: -9.81, z: 0} - m_ContactPairsMode: 0 - m_BroadphaseType: 0 - m_WorldBounds: - m_Center: {x: 0, y: 0, z: 0} - m_Extent: {x: 250, y: 250, z: 250} - m_WorldSubdivisions: 8 - m_FrictionType: 0 - m_EnableEnhancedDeterminism: 0 - m_EnableUnifiedHeightmaps: 1 - m_SolverType: 0 - m_DefaultMaxAngularSpeed: 50 diff --git a/dist/BlankProject/ProjectSettings/EditorBuildSettings.asset b/dist/BlankProject/ProjectSettings/EditorBuildSettings.asset deleted file mode 100644 index 82ab0f59..00000000 --- a/dist/BlankProject/ProjectSettings/EditorBuildSettings.asset +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1045 &1 -EditorBuildSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Scenes: - - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 2cda990e2423bbf4892e6590ba056729 - m_configObjects: {} diff --git a/dist/BlankProject/ProjectSettings/EditorSettings.asset b/dist/BlankProject/ProjectSettings/EditorSettings.asset deleted file mode 100644 index fa3ed494..00000000 --- a/dist/BlankProject/ProjectSettings/EditorSettings.asset +++ /dev/null @@ -1,40 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_SerializationMode: 2 - m_LineEndingsForNewScripts: 0 - m_DefaultBehaviorMode: 1 - m_PrefabRegularEnvironment: {fileID: 0} - m_PrefabUIEnvironment: {fileID: 0} - m_SpritePackerMode: 4 - m_SpritePackerPaddingPower: 1 - m_EtcTextureCompressorBehavior: 1 - m_EtcTextureFastCompressor: 1 - m_EtcTextureNormalCompressor: 2 - m_EtcTextureBestCompressor: 4 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp - m_ProjectGenerationRootNamespace: - m_EnableTextureStreamingInEditMode: 1 - m_EnableTextureStreamingInPlayMode: 1 - m_AsyncShaderCompilation: 1 - m_CachingShaderPreprocessor: 1 - m_PrefabModeAllowAutoSave: 1 - m_EnterPlayModeOptionsEnabled: 0 - m_EnterPlayModeOptions: 3 - m_GameObjectNamingDigits: 1 - m_GameObjectNamingScheme: 0 - m_AssetNamingUsesSpace: 1 - m_UseLegacyProbeSampleCount: 0 - m_SerializeInlineMappingsOnOneLine: 1 - m_DisableCookiesInLightmapper: 1 - m_AssetPipelineMode: 1 - m_CacheServerMode: 0 - m_CacheServerEndpoint: - m_CacheServerNamespacePrefix: default - m_CacheServerEnableDownload: 1 - m_CacheServerEnableUpload: 1 - m_CacheServerEnableAuth: 0 - m_CacheServerEnableTls: 0 diff --git a/dist/BlankProject/ProjectSettings/GraphicsSettings.asset b/dist/BlankProject/ProjectSettings/GraphicsSettings.asset deleted file mode 100644 index c165afb2..00000000 --- a/dist/BlankProject/ProjectSettings/GraphicsSettings.asset +++ /dev/null @@ -1,64 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!30 &1 -GraphicsSettings: - m_ObjectHideFlags: 0 - serializedVersion: 13 - m_Deferred: - m_Mode: 1 - m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} - m_DeferredReflections: - m_Mode: 1 - m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} - m_ScreenSpaceShadows: - m_Mode: 1 - m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} - m_LegacyDeferred: - m_Mode: 1 - m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} - m_DepthNormals: - m_Mode: 1 - m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} - m_MotionVectors: - m_Mode: 1 - m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} - m_LightHalo: - m_Mode: 1 - m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} - m_LensFlare: - m_Mode: 1 - m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} - m_VideoShadersIncludeMode: 2 - m_AlwaysIncludedShaders: - - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} - m_PreloadedShaders: [] - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_CustomRenderPipeline: {fileID: 0} - m_TransparencySortMode: 0 - m_TransparencySortAxis: {x: 0, y: 0, z: 1} - m_DefaultRenderingPath: 1 - m_DefaultMobileRenderingPath: 1 - m_TierSettings: [] - m_LightmapStripping: 0 - m_FogStripping: 0 - m_InstancingStripping: 0 - m_LightmapKeepPlain: 1 - m_LightmapKeepDirCombined: 1 - m_LightmapKeepDynamicPlain: 1 - m_LightmapKeepDynamicDirCombined: 1 - m_LightmapKeepShadowMask: 1 - m_LightmapKeepSubtractive: 1 - m_FogKeepLinear: 1 - m_FogKeepExp: 1 - m_FogKeepExp2: 1 - m_AlbedoSwatchInfos: [] - m_LightsUseLinearIntensity: 0 - m_LightsUseColorTemperature: 0 - m_DefaultRenderingLayerMask: 1 - m_LogWhenShaderIsCompiled: 0 diff --git a/dist/BlankProject/ProjectSettings/InputManager.asset b/dist/BlankProject/ProjectSettings/InputManager.asset deleted file mode 100644 index b16147e9..00000000 --- a/dist/BlankProject/ProjectSettings/InputManager.asset +++ /dev/null @@ -1,487 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Enable Debug Button 1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: joystick button 8 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Enable Debug Button 2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: backspace - altNegativeButton: - altPositiveButton: joystick button 9 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Reset - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Next - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: page down - altNegativeButton: - altPositiveButton: joystick button 5 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Previous - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: page up - altNegativeButton: - altPositiveButton: joystick button 4 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Validate - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Persistent - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: right shift - altNegativeButton: - altPositiveButton: joystick button 2 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Multiplier - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: joystick button 3 - gravity: 0 - dead: 0 - sensitivity: 0 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 2 - axis: 6 - joyNum: 0 - - serializedVersion: 3 - m_Name: Debug Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 2 - axis: 5 - joyNum: 0 diff --git a/dist/BlankProject/ProjectSettings/MemorySettings.asset b/dist/BlankProject/ProjectSettings/MemorySettings.asset deleted file mode 100644 index 5b5facec..00000000 --- a/dist/BlankProject/ProjectSettings/MemorySettings.asset +++ /dev/null @@ -1,35 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!387306366 &1 -MemorySettings: - m_ObjectHideFlags: 0 - m_EditorMemorySettings: - m_MainAllocatorBlockSize: -1 - m_ThreadAllocatorBlockSize: -1 - m_MainGfxBlockSize: -1 - m_ThreadGfxBlockSize: -1 - m_CacheBlockSize: -1 - m_TypetreeBlockSize: -1 - m_ProfilerBlockSize: -1 - m_ProfilerEditorBlockSize: -1 - m_BucketAllocatorGranularity: -1 - m_BucketAllocatorBucketsCount: -1 - m_BucketAllocatorBlockSize: -1 - m_BucketAllocatorBlockCount: -1 - m_ProfilerBucketAllocatorGranularity: -1 - m_ProfilerBucketAllocatorBucketsCount: -1 - m_ProfilerBucketAllocatorBlockSize: -1 - m_ProfilerBucketAllocatorBlockCount: -1 - m_TempAllocatorSizeMain: -1 - m_JobTempAllocatorBlockSize: -1 - m_BackgroundJobTempAllocatorBlockSize: -1 - m_JobTempAllocatorReducedBlockSize: -1 - m_TempAllocatorSizeGIBakingWorker: -1 - m_TempAllocatorSizeNavMeshWorker: -1 - m_TempAllocatorSizeAudioWorker: -1 - m_TempAllocatorSizeCloudWorker: -1 - m_TempAllocatorSizeGfx: -1 - m_TempAllocatorSizeJobWorker: -1 - m_TempAllocatorSizeBackgroundWorker: -1 - m_TempAllocatorSizePreloadManager: -1 - m_PlatformMemorySettings: {} diff --git a/dist/BlankProject/ProjectSettings/NavMeshAreas.asset b/dist/BlankProject/ProjectSettings/NavMeshAreas.asset deleted file mode 100644 index ad2654e0..00000000 --- a/dist/BlankProject/ProjectSettings/NavMeshAreas.asset +++ /dev/null @@ -1,93 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_SettingNames: - - Humanoid diff --git a/dist/BlankProject/ProjectSettings/NetworkManager.asset b/dist/BlankProject/ProjectSettings/NetworkManager.asset deleted file mode 100644 index 5dc6a831..00000000 --- a/dist/BlankProject/ProjectSettings/NetworkManager.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!149 &1 -NetworkManager: - m_ObjectHideFlags: 0 - m_DebugLevel: 0 - m_Sendrate: 15 - m_AssetToPrefab: {} diff --git a/dist/BlankProject/ProjectSettings/PackageManagerSettings.asset b/dist/BlankProject/ProjectSettings/PackageManagerSettings.asset deleted file mode 100644 index b3a65dda..00000000 --- a/dist/BlankProject/ProjectSettings/PackageManagerSettings.asset +++ /dev/null @@ -1,44 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &1 -MonoBehaviour: - m_ObjectHideFlags: 61 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_EnablePreReleasePackages: 0 - m_EnablePackageDependencies: 0 - m_AdvancedSettingsExpanded: 1 - m_ScopedRegistriesSettingsExpanded: 1 - m_SeeAllPackageVersions: 0 - oneTimeWarningShown: 0 - m_Registries: - - m_Id: main - m_Name: - m_Url: https://packages.unity.com - m_Scopes: [] - m_IsDefault: 1 - m_Capabilities: 7 - m_UserSelectedRegistryName: - m_UserAddingNewScopedRegistry: 0 - m_RegistryInfoDraft: - m_ErrorMessage: - m_Original: - m_Id: - m_Name: - m_Url: - m_Scopes: [] - m_IsDefault: 0 - m_Capabilities: 0 - m_Modified: 0 - m_Name: - m_Url: - m_Scopes: - - - m_SelectedScopeIndex: 0 diff --git a/dist/BlankProject/ProjectSettings/Physics2DSettings.asset b/dist/BlankProject/ProjectSettings/Physics2DSettings.asset deleted file mode 100644 index 6cfcddaa..00000000 --- a/dist/BlankProject/ProjectSettings/Physics2DSettings.asset +++ /dev/null @@ -1,56 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_JobOptions: - serializedVersion: 2 - useMultithreading: 0 - useConsistencySorting: 0 - m_InterpolationPosesPerJob: 100 - m_NewContactsPerJob: 30 - m_CollideContactsPerJob: 100 - m_ClearFlagsPerJob: 200 - m_ClearBodyForcesPerJob: 200 - m_SyncDiscreteFixturesPerJob: 50 - m_SyncContinuousFixturesPerJob: 50 - m_FindNearestContactsPerJob: 100 - m_UpdateTriggerContactsPerJob: 100 - m_IslandSolverCostThreshold: 100 - m_IslandSolverBodyCostScale: 1 - m_IslandSolverContactCostScale: 10 - m_IslandSolverJointCostScale: 10 - m_IslandSolverBodiesPerJob: 50 - m_IslandSolverContactsPerJob: 50 - m_SimulationMode: 0 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_CallbacksOnDisable: 1 - m_ReuseCollisionCallbacks: 1 - m_AutoSyncTransforms: 0 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/dist/BlankProject/ProjectSettings/PresetManager.asset b/dist/BlankProject/ProjectSettings/PresetManager.asset deleted file mode 100644 index 67a94dae..00000000 --- a/dist/BlankProject/ProjectSettings/PresetManager.asset +++ /dev/null @@ -1,7 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1386491679 &1 -PresetManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_DefaultPresets: {} diff --git a/dist/BlankProject/ProjectSettings/ProjectSettings.asset b/dist/BlankProject/ProjectSettings/ProjectSettings.asset deleted file mode 100644 index d33a4f84..00000000 --- a/dist/BlankProject/ProjectSettings/ProjectSettings.asset +++ /dev/null @@ -1,665 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!129 &1 -PlayerSettings: - m_ObjectHideFlags: 0 - serializedVersion: 23 - productGUID: 034a658b4a2c341fbb4fcd6299d7141d - AndroidProfiler: 0 - AndroidFilterTouchesWhenObscured: 0 - AndroidEnableSustainedPerformanceMode: 0 - defaultScreenOrientation: 4 - targetDevice: 2 - useOnDemandResources: 0 - accelerometerFrequency: 60 - companyName: DefaultCompany - productName: BlankProject - defaultCursor: {fileID: 0} - cursorHotspot: {x: 0, y: 0} - m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 1 - m_ShowUnitySplashLogo: 1 - m_SplashScreenOverlayOpacity: 1 - m_SplashScreenAnimation: 1 - m_SplashScreenLogoStyle: 1 - m_SplashScreenDrawMode: 0 - m_SplashScreenBackgroundAnimationZoom: 1 - m_SplashScreenLogoAnimationZoom: 1 - m_SplashScreenBackgroundLandscapeAspect: 1 - m_SplashScreenBackgroundPortraitAspect: 1 - m_SplashScreenBackgroundLandscapeUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenBackgroundPortraitUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenLogos: [] - m_VirtualRealitySplashScreen: {fileID: 0} - m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1920 - defaultScreenHeight: 1080 - defaultScreenWidthWeb: 960 - defaultScreenHeightWeb: 600 - m_StereoRenderingPath: 0 - m_ActiveColorSpace: 0 - m_MTRendering: 1 - mipStripping: 0 - numberOfMipsStripped: 0 - m_StackTraceTypes: 010000000100000001000000010000000100000001000000 - iosShowActivityIndicatorOnLoading: -1 - androidShowActivityIndicatorOnLoading: -1 - iosUseCustomAppBackgroundBehavior: 0 - iosAllowHTTPDownload: 1 - allowedAutorotateToPortrait: 1 - allowedAutorotateToPortraitUpsideDown: 1 - allowedAutorotateToLandscapeRight: 1 - allowedAutorotateToLandscapeLeft: 1 - useOSAutorotation: 1 - use32BitDisplayBuffer: 1 - preserveFramebufferAlpha: 0 - disableDepthAndStencilBuffers: 0 - androidStartInFullscreen: 1 - androidRenderOutsideSafeArea: 1 - androidUseSwappy: 1 - androidBlitType: 0 - androidResizableWindow: 0 - androidDefaultWindowWidth: 1920 - androidDefaultWindowHeight: 1080 - androidMinimumWindowWidth: 400 - androidMinimumWindowHeight: 300 - androidFullscreenMode: 1 - defaultIsNativeResolution: 1 - macRetinaSupport: 1 - runInBackground: 0 - captureSingleScreen: 0 - muteOtherAudioSources: 0 - Prepare IOS For Recording: 0 - Force IOS Speakers When Recording: 0 - deferSystemGesturesMode: 0 - hideHomeButton: 0 - submitAnalytics: 1 - usePlayerLog: 1 - bakeCollisionMeshes: 0 - forceSingleInstance: 0 - useFlipModelSwapchain: 1 - resizableWindow: 0 - useMacAppStoreValidation: 0 - macAppStoreCategory: public.app-category.games - gpuSkinning: 0 - xboxPIXTextureCapture: 0 - xboxEnableAvatar: 0 - xboxEnableKinect: 0 - xboxEnableKinectAutoTracking: 0 - xboxEnableFitness: 0 - visibleInBackground: 1 - allowFullscreenSwitch: 1 - fullscreenMode: 1 - xboxSpeechDB: 0 - xboxEnableHeadOrientation: 0 - xboxEnableGuest: 0 - xboxEnablePIXSampling: 0 - metalFramebufferOnly: 0 - xboxOneResolution: 0 - xboxOneSResolution: 0 - xboxOneXResolution: 3 - xboxOneMonoLoggingLevel: 0 - xboxOneLoggingLevel: 1 - xboxOneDisableEsram: 0 - xboxOneEnableTypeOptimization: 0 - xboxOnePresentImmediateThreshold: 0 - switchQueueCommandMemory: 1048576 - switchQueueControlMemory: 16384 - switchQueueComputeMemory: 262144 - switchNVNShaderPoolsGranularity: 33554432 - switchNVNDefaultPoolsGranularity: 16777216 - switchNVNOtherPoolsGranularity: 16777216 - switchNVNMaxPublicTextureIDCount: 0 - switchNVNMaxPublicSamplerIDCount: 0 - stadiaPresentMode: 0 - stadiaTargetFramerate: 0 - vulkanNumSwapchainBuffers: 3 - vulkanEnableSetSRGBWrite: 0 - vulkanEnablePreTransform: 0 - vulkanEnableLateAcquireNextImage: 0 - vulkanEnableCommandBufferRecycling: 1 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 - bundleVersion: 1.0 - preloadedAssets: [] - metroInputSource: 0 - wsaTransparentSwapchain: 0 - m_HolographicPauseOnTrackingLoss: 1 - xboxOneDisableKinectGpuReservation: 1 - xboxOneEnable7thCore: 1 - vrSettings: - enable360StereoCapture: 0 - isWsaHolographicRemotingEnabled: 0 - enableFrameTimingStats: 0 - useHDRDisplay: 0 - D3DHDRBitDepth: 0 - m_ColorGamuts: 00000000 - targetPixelDensity: 30 - resolutionScalingMode: 0 - androidSupportedAspectRatio: 1 - androidMaxAspectRatio: 2.1 - applicationIdentifier: - Standalone: com.DefaultCompany.2DProject - buildNumber: - Standalone: 0 - iPhone: 0 - tvOS: 0 - overrideDefaultApplicationIdentifier: 1 - AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 22 - AndroidTargetSdkVersion: 0 - AndroidPreferredInstallLocation: 1 - aotOptions: - stripEngineCode: 1 - iPhoneStrippingLevel: 0 - iPhoneScriptCallOptimization: 0 - ForceInternetPermission: 0 - ForceSDCardPermission: 0 - CreateWallpaper: 0 - APKExpansionFiles: 0 - keepLoadedShadersAlive: 0 - StripUnusedMeshComponents: 0 - VertexChannelCompressionMask: 4054 - iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 11.0 - tvOSSdkVersion: 0 - tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 11.0 - uIPrerenderedIcon: 0 - uIRequiresPersistentWiFi: 0 - uIRequiresFullScreen: 1 - uIStatusBarHidden: 1 - uIExitOnSuspend: 0 - uIStatusBarStyle: 0 - appleTVSplashScreen: {fileID: 0} - appleTVSplashScreen2x: {fileID: 0} - tvOSSmallIconLayers: [] - tvOSSmallIconLayers2x: [] - tvOSLargeIconLayers: [] - tvOSLargeIconLayers2x: [] - tvOSTopShelfImageLayers: [] - tvOSTopShelfImageLayers2x: [] - tvOSTopShelfImageWideLayers: [] - tvOSTopShelfImageWideLayers2x: [] - iOSLaunchScreenType: 0 - iOSLaunchScreenPortrait: {fileID: 0} - iOSLaunchScreenLandscape: {fileID: 0} - iOSLaunchScreenBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreenFillPct: 100 - iOSLaunchScreenSize: 100 - iOSLaunchScreenCustomXibPath: - iOSLaunchScreeniPadType: 0 - iOSLaunchScreeniPadImage: {fileID: 0} - iOSLaunchScreeniPadBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreeniPadFillPct: 100 - iOSLaunchScreeniPadSize: 100 - iOSLaunchScreeniPadCustomXibPath: - iOSLaunchScreenCustomStoryboardPath: - iOSLaunchScreeniPadCustomStoryboardPath: - iOSDeviceRequirements: [] - iOSURLSchemes: [] - macOSURLSchemes: [] - iOSBackgroundModes: 0 - iOSMetalForceHardShadows: 0 - metalEditorSupport: 1 - metalAPIValidation: 1 - iOSRenderExtraFrameOnPause: 0 - iosCopyPluginsCodeInsteadOfSymlink: 0 - appleDeveloperTeamID: - iOSManualSigningProvisioningProfileID: - tvOSManualSigningProvisioningProfileID: - iOSManualSigningProvisioningProfileType: 0 - tvOSManualSigningProvisioningProfileType: 0 - appleEnableAutomaticSigning: 0 - iOSRequireARKit: 0 - iOSAutomaticallyDetectAndAddCapabilities: 1 - appleEnableProMotion: 0 - shaderPrecisionModel: 0 - clonedFromGUID: 10ad67313f4034357812315f3c407484 - templatePackageId: com.unity.template.2d@6.1.0 - templateDefaultScene: Assets/Scenes/SampleScene.unity - useCustomMainManifest: 0 - useCustomLauncherManifest: 0 - useCustomMainGradleTemplate: 0 - useCustomLauncherGradleManifest: 0 - useCustomBaseGradleTemplate: 0 - useCustomGradlePropertiesTemplate: 0 - useCustomProguardFile: 0 - AndroidTargetArchitectures: 1 - AndroidTargetDevices: 0 - AndroidSplashScreenScale: 0 - androidSplashScreen: {fileID: 0} - AndroidKeystoreName: - AndroidKeyaliasName: - AndroidBuildApkPerCpuArchitecture: 0 - AndroidTVCompatibility: 0 - AndroidIsGame: 1 - AndroidEnableTango: 0 - androidEnableBanner: 1 - androidUseLowAccuracyLocation: 0 - androidUseCustomKeystore: 0 - m_AndroidBanners: - - width: 320 - height: 180 - banner: {fileID: 0} - androidGamepadSupportLevel: 0 - chromeosInputEmulation: 1 - AndroidMinifyWithR8: 0 - AndroidMinifyRelease: 0 - AndroidMinifyDebug: 0 - AndroidValidateAppBundleSize: 1 - AndroidAppBundleSizeToValidate: 150 - m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] - m_BuildTargetBatching: [] - m_BuildTargetGraphicsJobs: - - m_BuildTarget: MacStandaloneSupport - m_GraphicsJobs: 0 - - m_BuildTarget: Switch - m_GraphicsJobs: 0 - - m_BuildTarget: MetroSupport - m_GraphicsJobs: 0 - - m_BuildTarget: AppleTVSupport - m_GraphicsJobs: 0 - - m_BuildTarget: BJMSupport - m_GraphicsJobs: 0 - - m_BuildTarget: LinuxStandaloneSupport - m_GraphicsJobs: 0 - - m_BuildTarget: PS4Player - m_GraphicsJobs: 0 - - m_BuildTarget: iOSSupport - m_GraphicsJobs: 0 - - m_BuildTarget: WindowsStandaloneSupport - m_GraphicsJobs: 0 - - m_BuildTarget: XboxOnePlayer - m_GraphicsJobs: 0 - - m_BuildTarget: LuminSupport - m_GraphicsJobs: 0 - - m_BuildTarget: AndroidPlayer - m_GraphicsJobs: 0 - - m_BuildTarget: WebGLSupport - m_GraphicsJobs: 0 - m_BuildTargetGraphicsJobMode: [] - m_BuildTargetGraphicsAPIs: - - m_BuildTarget: AndroidPlayer - m_APIs: 150000000b000000 - m_Automatic: 1 - - m_BuildTarget: iOSSupport - m_APIs: 10000000 - m_Automatic: 1 - m_BuildTargetVRSettings: [] - openGLRequireES31: 0 - openGLRequireES31AEP: 0 - openGLRequireES32: 0 - m_TemplateCustomTags: {} - mobileMTRendering: - Android: 1 - iPhone: 1 - tvOS: 1 - m_BuildTargetGroupLightmapEncodingQuality: [] - m_BuildTargetGroupLightmapSettings: [] - m_BuildTargetNormalMapEncoding: [] - m_BuildTargetDefaultTextureCompressionFormat: - - m_BuildTarget: Android - m_Format: 3 - playModeTestRunnerEnabled: 0 - runPlayModeTestAsEditModeTest: 0 - actionOnDotNetUnhandledException: 1 - enableInternalProfiler: 0 - logObjCUncaughtExceptions: 1 - enableCrashReportAPI: 0 - cameraUsageDescription: - locationUsageDescription: - microphoneUsageDescription: - bluetoothUsageDescription: - switchNMETAOverride: - switchNetLibKey: - switchSocketMemoryPoolSize: 6144 - switchSocketAllocatorPoolSize: 128 - switchSocketConcurrencyLimit: 14 - switchScreenResolutionBehavior: 2 - switchUseCPUProfiler: 0 - switchUseGOLDLinker: 0 - switchLTOSetting: 0 - switchApplicationID: 0x01004b9000490000 - switchNSODependencies: - switchTitleNames_0: - switchTitleNames_1: - switchTitleNames_2: - switchTitleNames_3: - switchTitleNames_4: - switchTitleNames_5: - switchTitleNames_6: - switchTitleNames_7: - switchTitleNames_8: - switchTitleNames_9: - switchTitleNames_10: - switchTitleNames_11: - switchTitleNames_12: - switchTitleNames_13: - switchTitleNames_14: - switchTitleNames_15: - switchPublisherNames_0: - switchPublisherNames_1: - switchPublisherNames_2: - switchPublisherNames_3: - switchPublisherNames_4: - switchPublisherNames_5: - switchPublisherNames_6: - switchPublisherNames_7: - switchPublisherNames_8: - switchPublisherNames_9: - switchPublisherNames_10: - switchPublisherNames_11: - switchPublisherNames_12: - switchPublisherNames_13: - switchPublisherNames_14: - switchPublisherNames_15: - switchIcons_0: {fileID: 0} - switchIcons_1: {fileID: 0} - switchIcons_2: {fileID: 0} - switchIcons_3: {fileID: 0} - switchIcons_4: {fileID: 0} - switchIcons_5: {fileID: 0} - switchIcons_6: {fileID: 0} - switchIcons_7: {fileID: 0} - switchIcons_8: {fileID: 0} - switchIcons_9: {fileID: 0} - switchIcons_10: {fileID: 0} - switchIcons_11: {fileID: 0} - switchIcons_12: {fileID: 0} - switchIcons_13: {fileID: 0} - switchIcons_14: {fileID: 0} - switchIcons_15: {fileID: 0} - switchSmallIcons_0: {fileID: 0} - switchSmallIcons_1: {fileID: 0} - switchSmallIcons_2: {fileID: 0} - switchSmallIcons_3: {fileID: 0} - switchSmallIcons_4: {fileID: 0} - switchSmallIcons_5: {fileID: 0} - switchSmallIcons_6: {fileID: 0} - switchSmallIcons_7: {fileID: 0} - switchSmallIcons_8: {fileID: 0} - switchSmallIcons_9: {fileID: 0} - switchSmallIcons_10: {fileID: 0} - switchSmallIcons_11: {fileID: 0} - switchSmallIcons_12: {fileID: 0} - switchSmallIcons_13: {fileID: 0} - switchSmallIcons_14: {fileID: 0} - switchSmallIcons_15: {fileID: 0} - switchManualHTML: - switchAccessibleURLs: - switchLegalInformation: - switchMainThreadStackSize: 1048576 - switchPresenceGroupId: - switchLogoHandling: 0 - switchReleaseVersion: 0 - switchDisplayVersion: 1.0.0 - switchStartupUserAccount: 0 - switchTouchScreenUsage: 0 - switchSupportedLanguagesMask: 0 - switchLogoType: 0 - switchApplicationErrorCodeCategory: - switchUserAccountSaveDataSize: 0 - switchUserAccountSaveDataJournalSize: 0 - switchApplicationAttribute: 0 - switchCardSpecSize: -1 - switchCardSpecClock: -1 - switchRatingsMask: 0 - switchRatingsInt_0: 0 - switchRatingsInt_1: 0 - switchRatingsInt_2: 0 - switchRatingsInt_3: 0 - switchRatingsInt_4: 0 - switchRatingsInt_5: 0 - switchRatingsInt_6: 0 - switchRatingsInt_7: 0 - switchRatingsInt_8: 0 - switchRatingsInt_9: 0 - switchRatingsInt_10: 0 - switchRatingsInt_11: 0 - switchRatingsInt_12: 0 - switchLocalCommunicationIds_0: - switchLocalCommunicationIds_1: - switchLocalCommunicationIds_2: - switchLocalCommunicationIds_3: - switchLocalCommunicationIds_4: - switchLocalCommunicationIds_5: - switchLocalCommunicationIds_6: - switchLocalCommunicationIds_7: - switchParentalControl: 0 - switchAllowsScreenshot: 1 - switchAllowsVideoCapturing: 1 - switchAllowsRuntimeAddOnContentInstall: 0 - switchDataLossConfirmation: 0 - switchUserAccountLockEnabled: 0 - switchSystemResourceMemory: 16777216 - switchSupportedNpadStyles: 22 - switchNativeFsCacheSize: 32 - switchIsHoldTypeHorizontal: 0 - switchSupportedNpadCount: 8 - switchSocketConfigEnabled: 0 - switchTcpInitialSendBufferSize: 32 - switchTcpInitialReceiveBufferSize: 64 - switchTcpAutoSendBufferSizeMax: 256 - switchTcpAutoReceiveBufferSizeMax: 256 - switchUdpSendBufferSize: 9 - switchUdpReceiveBufferSize: 42 - switchSocketBufferEfficiency: 4 - switchSocketInitializeEnabled: 1 - switchNetworkInterfaceManagerInitializeEnabled: 1 - switchPlayerConnectionEnabled: 1 - switchUseNewStyleFilepaths: 0 - switchUseMicroSleepForYield: 1 - switchEnableRamDiskSupport: 0 - switchMicroSleepForYieldTime: 25 - switchRamDiskSpaceSize: 12 - ps4NPAgeRating: 12 - ps4NPTitleSecret: - ps4NPTrophyPackPath: - ps4ParentalLevel: 11 - ps4ContentID: ED1633-NPXX51362_00-0000000000000000 - ps4Category: 0 - ps4MasterVersion: 01.00 - ps4AppVersion: 01.00 - ps4AppType: 0 - ps4ParamSfxPath: - ps4VideoOutPixelFormat: 0 - ps4VideoOutInitialWidth: 1920 - ps4VideoOutBaseModeInitialWidth: 1920 - ps4VideoOutReprojectionRate: 60 - ps4PronunciationXMLPath: - ps4PronunciationSIGPath: - ps4BackgroundImagePath: - ps4StartupImagePath: - ps4StartupImagesFolder: - ps4IconImagesFolder: - ps4SaveDataImagePath: - ps4SdkOverride: - ps4BGMPath: - ps4ShareFilePath: - ps4ShareOverlayImagePath: - ps4PrivacyGuardImagePath: - ps4ExtraSceSysFile: - ps4NPtitleDatPath: - ps4RemotePlayKeyAssignment: -1 - ps4RemotePlayKeyMappingDir: - ps4PlayTogetherPlayerCount: 0 - ps4EnterButtonAssignment: 2 - ps4ApplicationParam1: 0 - ps4ApplicationParam2: 0 - ps4ApplicationParam3: 0 - ps4ApplicationParam4: 0 - ps4DownloadDataSize: 0 - ps4GarlicHeapSize: 2048 - ps4ProGarlicHeapSize: 2560 - playerPrefsMaxSize: 32768 - ps4Passcode: bi9UOuSpM2Tlh01vOzwvSikHFswuzleh - ps4pnSessions: 1 - ps4pnPresence: 1 - ps4pnFriends: 1 - ps4pnGameCustomData: 1 - playerPrefsSupport: 0 - enableApplicationExit: 0 - resetTempFolder: 1 - restrictedAudioUsageRights: 0 - ps4UseResolutionFallback: 0 - ps4ReprojectionSupport: 0 - ps4UseAudio3dBackend: 0 - ps4UseLowGarlicFragmentationMode: 1 - ps4SocialScreenEnabled: 0 - ps4ScriptOptimizationLevel: 2 - ps4Audio3dVirtualSpeakerCount: 14 - ps4attribCpuUsage: 0 - ps4PatchPkgPath: - ps4PatchLatestPkgPath: - ps4PatchChangeinfoPath: - ps4PatchDayOne: 0 - ps4attribUserManagement: 0 - ps4attribMoveSupport: 0 - ps4attrib3DSupport: 0 - ps4attribShareSupport: 0 - ps4attribExclusiveVR: 0 - ps4disableAutoHideSplash: 0 - ps4videoRecordingFeaturesUsed: 0 - ps4contentSearchFeaturesUsed: 0 - ps4CompatibilityPS5: 0 - ps4GPU800MHz: 1 - ps4attribEyeToEyeDistanceSettingVR: 0 - ps4IncludedModules: [] - ps4attribVROutputEnabled: 0 - monoEnv: - splashScreenBackgroundSourceLandscape: {fileID: 0} - splashScreenBackgroundSourcePortrait: {fileID: 0} - blurSplashScreenBackground: 1 - spritePackerPolicy: - webGLMemorySize: 32 - webGLExceptionSupport: 1 - webGLNameFilesAsHashes: 0 - webGLDataCaching: 1 - webGLDebugSymbols: 0 - webGLEmscriptenArgs: - webGLModulesDirectory: - webGLTemplate: APPLICATION:Default - webGLAnalyzeBuildSize: 0 - webGLUseEmbeddedResources: 0 - webGLCompressionFormat: 0 - webGLWasmArithmeticExceptions: 0 - webGLLinkerTarget: 1 - webGLThreadsSupport: 0 - webGLDecompressionFallback: 0 - scriptingDefineSymbols: {} - additionalCompilerArguments: {} - platformArchitecture: {} - scriptingBackend: {} - il2cppCompilerConfiguration: {} - managedStrippingLevel: {} - incrementalIl2cppBuild: {} - suppressCommonWarnings: 1 - allowUnsafeCode: 0 - useDeterministicCompilation: 1 - enableRoslynAnalyzers: 1 - additionalIl2CppArgs: - scriptingRuntimeVersion: 1 - gcIncremental: 1 - assemblyVersionValidation: 1 - gcWBarrierValidation: 0 - apiCompatibilityLevelPerPlatform: {} - m_RenderingPath: 1 - m_MobileRenderingPath: 1 - metroPackageName: 2D_BuiltInRenderer - metroPackageVersion: - metroCertificatePath: - metroCertificatePassword: - metroCertificateSubject: - metroCertificateIssuer: - metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: 2D_BuiltInRenderer - wsaImages: {} - metroTileShortName: - metroTileShowName: 0 - metroMediumTileShowName: 0 - metroLargeTileShowName: 0 - metroWideTileShowName: 0 - metroSupportStreamingInstall: 0 - metroLastRequiredScene: 0 - metroDefaultTileSize: 1 - metroTileForegroundText: 2 - metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} - metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} - metroSplashScreenUseBackgroundColor: 0 - platformCapabilities: {} - metroTargetDeviceFamilies: {} - metroFTAName: - metroFTAFileTypes: [] - metroProtocolName: - XboxOneProductId: - XboxOneUpdateKey: - XboxOneSandboxId: - XboxOneContentId: - XboxOneTitleId: - XboxOneSCId: - XboxOneGameOsOverridePath: - XboxOnePackagingOverridePath: - XboxOneAppManifestOverridePath: - XboxOneVersion: 1.0.0.0 - XboxOnePackageEncryption: 0 - XboxOnePackageUpdateGranularity: 2 - XboxOneDescription: - XboxOneLanguage: - - enus - XboxOneCapability: [] - XboxOneGameRating: {} - XboxOneIsContentPackage: 0 - XboxOneEnhancedXboxCompatibilityMode: 0 - XboxOneEnableGPUVariability: 1 - XboxOneSockets: {} - XboxOneSplashScreen: {fileID: 0} - XboxOneAllowedProductIds: [] - XboxOnePersistentLocalStorageSize: 0 - XboxOneXTitleMemory: 8 - XboxOneOverrideIdentityName: - XboxOneOverrideIdentityPublisher: - vrEditorSettings: {} - cloudServicesEnabled: {} - luminIcon: - m_Name: - m_ModelFolderPath: - m_PortalFolderPath: - luminCert: - m_CertPath: - m_SignPackage: 1 - luminIsChannelApp: 0 - luminVersion: - m_VersionCode: 1 - m_VersionName: - apiCompatibilityLevel: 6 - activeInputHandler: 0 - cloudProjectId: - framebufferDepthMemorylessMode: 0 - qualitySettingsNames: [] - projectName: - organizationId: - cloudEnabled: 0 - legacyClampBlendShapeWeights: 0 - playerDataPath: - forceSRGBBlit: 1 - virtualTexturingSupportEnabled: 0 diff --git a/dist/BlankProject/ProjectSettings/ProjectVersion.txt b/dist/BlankProject/ProjectSettings/ProjectVersion.txt deleted file mode 100644 index 440b1b07..00000000 --- a/dist/BlankProject/ProjectSettings/ProjectVersion.txt +++ /dev/null @@ -1,2 +0,0 @@ -m_EditorVersion: 2021.2.8f1 -m_EditorVersionWithRevision: 2021.2.8f1 (d0e5f0a7b06a) diff --git a/dist/BlankProject/ProjectSettings/QualitySettings.asset b/dist/BlankProject/ProjectSettings/QualitySettings.asset deleted file mode 100644 index d24eb10c..00000000 --- a/dist/BlankProject/ProjectSettings/QualitySettings.asset +++ /dev/null @@ -1,236 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 5 - m_QualitySettings: - - serializedVersion: 2 - name: Very Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Medium - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: High - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Very High - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 70 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Ultra - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 255 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - customRenderPipeline: {fileID: 0} - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - Lumin: 5 - Nintendo Switch: 5 - PS4: 5 - Stadia: 5 - Standalone: 5 - WebGL: 3 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 diff --git a/dist/BlankProject/ProjectSettings/TagManager.asset b/dist/BlankProject/ProjectSettings/TagManager.asset deleted file mode 100644 index 1c92a784..00000000 --- a/dist/BlankProject/ProjectSettings/TagManager.asset +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 diff --git a/dist/BlankProject/ProjectSettings/TimeManager.asset b/dist/BlankProject/ProjectSettings/TimeManager.asset deleted file mode 100644 index 558a017e..00000000 --- a/dist/BlankProject/ProjectSettings/TimeManager.asset +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!5 &1 -TimeManager: - m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.33333334 - m_TimeScale: 1 - Maximum Particle Timestep: 0.03 diff --git a/dist/BlankProject/ProjectSettings/UnityConnectSettings.asset b/dist/BlankProject/ProjectSettings/UnityConnectSettings.asset deleted file mode 100644 index 6125b308..00000000 --- a/dist/BlankProject/ProjectSettings/UnityConnectSettings.asset +++ /dev/null @@ -1,35 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!310 &1 -UnityConnectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 1 - m_Enabled: 0 - m_TestMode: 0 - m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events - m_EventUrl: https://cdp.cloud.unity3d.com/v1/events - m_ConfigUrl: https://config.uca.cloud.unity3d.com - m_DashboardUrl: https://dashboard.unity3d.com - m_TestInitMode: 0 - CrashReportingSettings: - m_EventUrl: https://perf-events.cloud.unity3d.com - m_Enabled: 0 - m_LogBufferSize: 10 - m_CaptureEditorExceptions: 1 - UnityPurchasingSettings: - m_Enabled: 0 - m_TestMode: 0 - UnityAnalyticsSettings: - m_Enabled: 0 - m_TestMode: 0 - m_InitializeOnStartup: 1 - UnityAdsSettings: - m_Enabled: 0 - m_InitializeOnStartup: 1 - m_TestMode: 0 - m_IosGameId: - m_AndroidGameId: - m_GameIds: {} - m_GameId: - PerformanceReportingSettings: - m_Enabled: 0 diff --git a/dist/BlankProject/ProjectSettings/VFXManager.asset b/dist/BlankProject/ProjectSettings/VFXManager.asset deleted file mode 100644 index 46f38e16..00000000 --- a/dist/BlankProject/ProjectSettings/VFXManager.asset +++ /dev/null @@ -1,14 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!937362698 &1 -VFXManager: - m_ObjectHideFlags: 0 - m_IndirectShader: {fileID: 0} - m_CopyBufferShader: {fileID: 0} - m_SortShader: {fileID: 0} - m_StripUpdateShader: {fileID: 0} - m_RenderPipeSettingsPath: - m_FixedTimeStep: 0.016666668 - m_MaxDeltaTime: 0.05 - m_CompiledVersion: 0 - m_RuntimeVersion: 0 diff --git a/dist/BlankProject/ProjectSettings/VersionControlSettings.asset b/dist/BlankProject/ProjectSettings/VersionControlSettings.asset deleted file mode 100644 index dca28814..00000000 --- a/dist/BlankProject/ProjectSettings/VersionControlSettings.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!890905787 &1 -VersionControlSettings: - m_ObjectHideFlags: 0 - m_Mode: Visible Meta Files - m_CollabEditorSettings: - inProgressEnabled: 1 diff --git a/dist/BlankProject/ProjectSettings/boot.config b/dist/BlankProject/ProjectSettings/boot.config deleted file mode 100644 index e69de29b..00000000 diff --git a/dist/default-build-script/.editorconfig b/dist/default-build-script/.editorconfig deleted file mode 100644 index 635df9fb..00000000 --- a/dist/default-build-script/.editorconfig +++ /dev/null @@ -1,4 +0,0 @@ -root = true - -[*.cs] -resharper_check_namespace_highlighting = do_not_show diff --git a/dist/default-build-script/.gitignore b/dist/default-build-script/.gitignore deleted file mode 100644 index a61293ce..00000000 --- a/dist/default-build-script/.gitignore +++ /dev/null @@ -1,56 +0,0 @@ -# -# Note: Non default ignore file, as this only tests Builder script. -# - -[Ll]ibrary/ -[Tt]emp/ -[Oo]bj/ -[Bb]uild/ -[Bb]uilds/ -[Ll]ogs/ - -# Additional ignores -[Bb]in/ - -# Uncomment this line if you wish to ignore the asset store tools plugin -# [Aa]ssets/AssetStoreTools* - -# IDEs -.vs/ -.idea/ - -# Gradle cache directory -.gradle/ - -# Autogenerated VS/MD/Consulo solution and project files -ExportedObj/ -.consulo/ -#*.csproj -*.unityproj -#*.sln -*.suo -*.tmp -*.user -*.userprefs -*.pidb -*.booproj -*.svd -*.pdb -*.mdb -*.opendb -*.VC.db - -# Unity3D generated meta files -*.pidb.meta -*.pdb.meta -*.mdb.meta - -# Unity3D generated file on crash reports -sysinfo.txt - -# Builds -*.apk -*.unitypackage - -# Crashlytics generated file -crashlytics-build.properties diff --git a/dist/default-build-script/Assets/Editor.meta b/dist/default-build-script/Assets/Editor.meta deleted file mode 100644 index 53d7b55b..00000000 --- a/dist/default-build-script/Assets/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: dea28d93f6267af4f8661eb2043f749a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction.meta deleted file mode 100644 index d1fc52e4..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e9babefb99ee74048a824da81c20cbcd -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs deleted file mode 100644 index 75e8dac8..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Linq; -using System.Reflection; -using UnityBuilderAction.Input; -using UnityBuilderAction.Reporting; -using UnityBuilderAction.Versioning; -using UnityEditor; -using UnityEditor.Build.Reporting; -#if UNITY_6000_0_OR_NEWER -using UnityEditor.Build.Profile; -#endif -using UnityEngine; - -namespace UnityBuilderAction -{ - static class Builder - { - public static void BuildProject() - { - // Gather values from args - var options = ArgumentsParser.GetValidatedOptions(); - - // Set version for this build - VersionApplicator.SetVersion(options["buildVersion"]); - - // Execute default AddressableAsset content build, if the package is installed. - // Version defines would be the best solution here, but Unity 2018 doesn't support that, - // so we fall back to using reflection instead. - var addressableAssetSettingsType = Type.GetType( - "UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,Unity.Addressables.Editor"); - if (addressableAssetSettingsType != null) - { - // ReSharper disable once PossibleNullReferenceException, used from try-catch - try - { - addressableAssetSettingsType.GetMethod("CleanPlayerContent", BindingFlags.Static | BindingFlags.Public) - .Invoke(null, new object[] {null}); - addressableAssetSettingsType.GetMethod("BuildPlayerContent", new Type[0]).Invoke(null, new object[0]); - } - catch (Exception e) - { - Debug.LogError("Failed to run default addressables build:\n" + e); - } - } - - // Get all buildOptions from options - BuildOptions buildOptions = BuildOptions.None; - foreach (string buildOptionString in Enum.GetNames(typeof(BuildOptions))) { - if (options.ContainsKey(buildOptionString)) { - BuildOptions buildOptionEnum = (BuildOptions) Enum.Parse(typeof(BuildOptions), buildOptionString); - buildOptions |= buildOptionEnum; - } - } - - // Depending on whether the build is using a build profile, `buildPlayerOptions` will an instance - // of either `UnityEditor.BuildPlayerOptions` or `UnityEditor.BuildPlayerWithProfileOptions` - dynamic buildPlayerOptions; - - if (options.TryGetValue("activeBuildProfile", out var buildProfilePath)) { - if (string.IsNullOrEmpty(buildProfilePath)) { - throw new Exception("`-activeBuildProfile` is set but with an empty value; this shouldn't happen"); - } - -#if UNITY_6000_0_OR_NEWER - // Load build profile from Assets folder - var buildProfile = AssetDatabase.LoadAssetAtPath(buildProfilePath) - ?? throw new Exception("Build profile file not found at path: " + buildProfilePath); - - // no need to set active profile, as already set by `-activeBuildProfile` CLI argument - // BuildProfile.SetActiveBuildProfile(buildProfile); - Debug.Log($"build profile: {buildProfile.name}"); - - // Define BuildPlayerWithProfileOptions - buildPlayerOptions = new BuildPlayerWithProfileOptions { - buildProfile = buildProfile, - locationPathName = options["customBuildPath"], - options = buildOptions, - }; -#else // UNITY_6000_0_OR_NEWER - throw new Exception("Build profiles are not supported by this version of Unity (" + Application.unityVersion +")"); -#endif // UNITY_6000_0_OR_NEWER - - } else { - -#if BUILD_PROFILE_LOADED - throw new Exception("Build profile's define symbol present; shouldn't happen"); -#endif // BUILD_PROFILE_LOADED - - // Gather values from project - var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray(); - -#if UNITY_2021_2_OR_NEWER - // Determine subtarget - StandaloneBuildSubtarget buildSubtarget; - if (!options.TryGetValue("standaloneBuildSubtarget", out var subtargetValue) || !Enum.TryParse(subtargetValue, out buildSubtarget)) { - buildSubtarget = default; - } -#endif - - BuildTarget buildTarget = (BuildTarget) Enum.Parse(typeof(BuildTarget), options["buildTarget"]); - - // Define BuildPlayerOptions - buildPlayerOptions = new BuildPlayerOptions { - scenes = scenes, - locationPathName = options["customBuildPath"], - target = buildTarget, - options = buildOptions, -#if UNITY_2021_2_OR_NEWER - subtarget = (int) buildSubtarget -#endif - }; - - // Apply Android settings - if (buildTarget == BuildTarget.Android) { - VersionApplicator.SetAndroidVersionCode(options["androidVersionCode"]); - AndroidSettings.Apply(options); - } - - } - - // Perform build - BuildReport buildReport = BuildPipeline.BuildPlayer(buildPlayerOptions); - - // Summary - BuildSummary summary = buildReport.summary; - StdOutReporter.ReportSummary(summary); - - // Result - BuildResult result = summary.result; - StdOutReporter.ExitWithResult(result); - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs.meta deleted file mode 100644 index fa13aeb6..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: dc057061ce9f406aa6b57a62d67fe9c0 -timeCreated: 1575145310 diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input.meta deleted file mode 100644 index dc568c7d..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: b6e5ef18d769419d887b56665969442b -timeCreated: 1587503329 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs deleted file mode 100644 index 8317dee8..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs +++ /dev/null @@ -1,150 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEditor; -using System.Reflection; - -namespace UnityBuilderAction.Input -{ - public static class AndroidSettings - { - public static void Apply(Dictionary options) - { -#if UNITY_2019_1_OR_NEWER - if (options.TryGetValue("androidKeystoreName", out string keystoreName) && !string.IsNullOrEmpty(keystoreName)) - { - PlayerSettings.Android.useCustomKeystore = true; - PlayerSettings.Android.keystoreName = keystoreName; - } -#endif - // Can't use out variable declaration as Unity 2018 doesn't support it - string keystorePass; - if (options.TryGetValue("androidKeystorePass", out keystorePass) && !string.IsNullOrEmpty(keystorePass)) - PlayerSettings.Android.keystorePass = keystorePass; - - string keyaliasName; - if (options.TryGetValue("androidKeyaliasName", out keyaliasName) && !string.IsNullOrEmpty(keyaliasName)) - PlayerSettings.Android.keyaliasName = keyaliasName; - - string keyaliasPass; - if (options.TryGetValue("androidKeyaliasPass", out keyaliasPass) && !string.IsNullOrEmpty(keyaliasPass)) - PlayerSettings.Android.keyaliasPass = keyaliasPass; - - string androidTargetSdkVersion; - if (options.TryGetValue("androidTargetSdkVersion", out androidTargetSdkVersion) && !string.IsNullOrEmpty(androidTargetSdkVersion)) - { - var targetSdkVersion = AndroidSdkVersions.AndroidApiLevelAuto; - try - { - targetSdkVersion = - (AndroidSdkVersions) Enum.Parse(typeof(AndroidSdkVersions), androidTargetSdkVersion); - } - catch - { - UnityEngine.Debug.Log("Failed to parse androidTargetSdkVersion! Fallback to AndroidApiLevelAuto"); - } - PlayerSettings.Android.targetSdkVersion = targetSdkVersion; - } - - string androidExportType; - if (options.TryGetValue("androidExportType", out androidExportType) && !string.IsNullOrEmpty(androidExportType)) - { - // Only exists in 2018.3 and above - PropertyInfo buildAppBundle = typeof(EditorUserBuildSettings) - .GetProperty("buildAppBundle", BindingFlags.Public | BindingFlags.Static); - switch (androidExportType) - { - case "androidStudioProject": - EditorUserBuildSettings.exportAsGoogleAndroidProject = true; - if (buildAppBundle != null) - buildAppBundle.SetValue(null, false, null); - break; - case "androidAppBundle": - EditorUserBuildSettings.exportAsGoogleAndroidProject = false; - if (buildAppBundle != null) - buildAppBundle.SetValue(null, true, null); - break; - case "androidPackage": - EditorUserBuildSettings.exportAsGoogleAndroidProject = false; - if (buildAppBundle != null) - buildAppBundle.SetValue(null, false, null); - break; - } - } - - string symbolType; - if (options.TryGetValue("androidSymbolType", out symbolType) && !string.IsNullOrEmpty(symbolType)) - { -#if UNITY_6000_0_OR_NEWER - switch (symbolType) - { - case "public": - SetDebugSymbols("SymbolTable"); - break; - case "debugging": - SetDebugSymbols("Full"); - break; - case "none": - SetDebugSymbols("None"); - break; - } -#elif UNITY_2021_1_OR_NEWER - switch (symbolType) - { - case "public": - EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Public; - break; - case "debugging": - EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Debugging; - break; - case "none": - EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Disabled; - break; - } -#elif UNITY_2019_2_OR_NEWER - switch (symbolType) - { - case "public": - case "debugging": - EditorUserBuildSettings.androidCreateSymbolsZip = true; - break; - case "none": - EditorUserBuildSettings.androidCreateSymbolsZip = false; - break; - } -#endif - } - } - -#if UNITY_6000_0_OR_NEWER - private static void SetDebugSymbols(string enumValueName) - { - // UnityEditor.Android.UserBuildSettings and Unity.Android.Types.DebugSymbolLevel are part of the Unity Android module. - // Reflection is used here to ensure the code works even if the module is not installed. - - var debugSymbolsType = Type.GetType("UnityEditor.Android.UserBuildSettings+DebugSymbols, UnityEditor.Android.Extensions"); - if (debugSymbolsType == null) - { - return; - } - - var levelProp = debugSymbolsType.GetProperty("level", BindingFlags.Static | BindingFlags.Public); - if (levelProp == null) - { - return; - } - - var enumType = Type.GetType("Unity.Android.Types.DebugSymbolLevel, Unity.Android.Types"); - if (enumType == null) - { - return; - } - - if (!Enum.TryParse(enumType, enumValueName, false , out var enumValue)) - { - return; - } - levelProp.SetValue(null, enumValue); - } -#endif - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs.meta deleted file mode 100644 index 2dac7d42..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/AndroidSettings.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0d51cf8acfff8c941bb753e82750b60a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs deleted file mode 100644 index 2b47ba90..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEditor; - -namespace UnityBuilderAction.Input -{ - public class ArgumentsParser - { - static string EOL = Environment.NewLine; - static readonly string[] Secrets = { "androidKeystorePass", "androidKeyaliasName", "androidKeyaliasPass" }; - - public static Dictionary GetValidatedOptions() - { - Dictionary validatedOptions; - ParseCommandLineArguments(out validatedOptions); - - string projectPath; - if (!validatedOptions.TryGetValue("projectPath", out projectPath)) { - Console.WriteLine("Missing argument -projectPath"); - EditorApplication.Exit(110); - } - -#if UNITY_6000_0_OR_NEWER - var buildProfileSupport = true; -#else - var buildProfileSupport = false; -#endif // UNITY_6000_0_OR_NEWER - - string buildProfile; - if (buildProfileSupport && validatedOptions.TryGetValue("activeBuildProfile", out buildProfile)) { - if (validatedOptions.ContainsKey("buildTarget")) { - Console.WriteLine("Extra argument -buildTarget"); - EditorApplication.Exit(122); - } - } else { - string buildTarget; - if (!validatedOptions.TryGetValue("buildTarget", out buildTarget)) { - Console.WriteLine("Missing argument -buildTarget"); - EditorApplication.Exit(120); - } - - if (!Enum.IsDefined(typeof(BuildTarget), buildTarget)) { - Console.WriteLine(buildTarget + " is not a defined " + typeof(BuildTarget).Name); - EditorApplication.Exit(121); - } - } - - string customBuildPath; - if (!validatedOptions.TryGetValue("customBuildPath", out customBuildPath)) { - Console.WriteLine("Missing argument -customBuildPath"); - EditorApplication.Exit(130); - } - - const string defaultCustomBuildName = "TestBuild"; - string customBuildName; - if (!validatedOptions.TryGetValue("customBuildName", out customBuildName)) { - Console.WriteLine("Missing argument -customBuildName, defaulting to" + defaultCustomBuildName); - validatedOptions.Add("customBuildName", defaultCustomBuildName); - } else if (customBuildName == "") { - Console.WriteLine("Invalid argument -customBuildName, defaulting to" + defaultCustomBuildName); - validatedOptions.Add("customBuildName", defaultCustomBuildName); - } - - return validatedOptions; - } - - static void ParseCommandLineArguments(out Dictionary providedArguments) - { - providedArguments = new Dictionary(); - string[] args = Environment.GetCommandLineArgs(); - - Console.WriteLine( - EOL + - "###########################" + EOL + - "# Parsing settings #" + EOL + - "###########################" + EOL + - EOL - ); - - // Extract flags with optional values - for (int current = 0, next = 1; current < args.Length; current++, next++) { - // Parse flag - bool isFlag = args[current].StartsWith("-"); - if (!isFlag) continue; - string flag = args[current].TrimStart('-'); - - // Parse optional value - bool flagHasValue = next < args.Length && !args[next].StartsWith("-"); - string value = flagHasValue ? args[next].TrimStart('-') : ""; - bool secret = Secrets.Contains(flag); - string displayValue = secret ? "*HIDDEN*" : "\"" + value + "\""; - - // Assign - Console.WriteLine("Found flag \"" + flag + "\" with value " + displayValue); - providedArguments.Add(flag, value); - } - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs.meta deleted file mode 100644 index 93f74cb6..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 46d2ec4a86604575be2b2d02b0df7b74 -timeCreated: 1587503354 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting.meta deleted file mode 100644 index 104ba636..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 166f919334c44e7a80ae916667974e7d -timeCreated: 1587503566 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs deleted file mode 100644 index d5e8744d..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using UnityEngine; -using UnityEditor; - -namespace UnityBuilderAction.Reporting -{ - [InitializeOnLoad] - static class CompileListener - { - static CompileListener() - { - if (Application.isBatchMode) - { - Application.logMessageReceived += Application_logMessageReceived; - } - } - - private static void Application_logMessageReceived(string condition, string stackTrace, LogType type) - { - string prefix = ""; - switch (type) - { - case LogType.Error: - prefix = "error"; - break; - case LogType.Warning: - prefix = "warning"; - break; - case LogType.Exception: - prefix = "error"; - break; - } - Console.WriteLine(Environment.NewLine + "::" + prefix + "::" + condition + Environment.NewLine + stackTrace); - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs.meta deleted file mode 100644 index 66e30d15..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/CompileListener.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fad44373fb7b61a4bb584e2675795aca -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs deleted file mode 100644 index 18f5c681..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using UnityEditor; -using UnityEditor.Build.Reporting; - -namespace UnityBuilderAction.Reporting -{ - public class StdOutReporter - { - static string EOL = Environment.NewLine; - - public static void ReportSummary(BuildSummary summary) - { - Console.WriteLine( - EOL + - "###########################" + EOL + - "# Build results #" + EOL + - "###########################" + EOL + - EOL + - "Duration: " + summary.totalTime.ToString() + EOL + - "Warnings: " + summary.totalWarnings.ToString() + EOL + - "Errors: " + summary.totalErrors.ToString() + EOL + - "Size: " + summary.totalSize.ToString() + " bytes" + EOL + - EOL - ); - } - - public static void ExitWithResult(BuildResult result) - { - if (result == BuildResult.Succeeded) { - Console.WriteLine("Build succeeded!"); - EditorApplication.Exit(0); - } - - if (result == BuildResult.Failed) { - Console.WriteLine("Build failed!"); - EditorApplication.Exit(101); - } - - if (result == BuildResult.Cancelled) { - Console.WriteLine("Build cancelled!"); - EditorApplication.Exit(102); - } - - if (result == BuildResult.Unknown) { - Console.WriteLine("Build result is unknown!"); - EditorApplication.Exit(103); - } - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs.meta deleted file mode 100644 index ea678581..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Reporting/StdOutReporter.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: e59b491a4124442ea7277f76761cdc8a -timeCreated: 1587503545 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/System.meta deleted file mode 100644 index 1de4baf0..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: b5da3bd7e18c43d79243410166c8dc9a -timeCreated: 1587493708 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs deleted file mode 100644 index 7aeaab76..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Diagnostics; -using System.Text; - -public static class ProcessExtensions -{ - // Execute an application or binary with given arguments - // - // See: https://stackoverflow.com/questions/4291912/process-start-how-to-get-the-output - public static int Run(this Process process, string application, - string arguments, string workingDirectory, out string output, - out string errors) - { - // Configure how to run the application - process.StartInfo = new ProcessStartInfo { - CreateNoWindow = true, - UseShellExecute = false, - RedirectStandardError = true, - RedirectStandardOutput = true, - FileName = application, - Arguments = arguments, - WorkingDirectory = workingDirectory - }; - - // Read the output - var outputBuilder = new StringBuilder(); - var errorsBuilder = new StringBuilder(); - process.OutputDataReceived += (_, args) => outputBuilder.AppendLine(args.Data); - process.ErrorDataReceived += (_, args) => errorsBuilder.AppendLine(args.Data); - - // Run the application and wait for it to complete - process.Start(); - process.BeginOutputReadLine(); - process.BeginErrorReadLine(); - process.WaitForExit(); - - // Format the output - output = outputBuilder.ToString().TrimEnd(); - errors = errorsBuilder.ToString().TrimEnd(); - - return process.ExitCode; - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs.meta deleted file mode 100644 index b88e19e1..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/System/ProcessExtensions.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 29c1880a390c4af7be821b7877602815 -timeCreated: 1587494270 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef b/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef deleted file mode 100644 index 9467e961..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "UnityBuilderAction", - "references": [], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef.meta deleted file mode 100644 index fcab7fff..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/UnityBuilderAction.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a1ab437d31f4f4c9084097e2b4b5fcae -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning.meta deleted file mode 100644 index 8b97df85..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 1c3bddf6d8984cde9208e3f0fe584879 -timeCreated: 1587490700 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs deleted file mode 100644 index 98c24105..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs +++ /dev/null @@ -1,117 +0,0 @@ -using System; -using UnityEngine; - -namespace UnityBuilderAction.Versioning -{ - public static class Git - { - const string application = @"git"; - - /// - /// Generate a version based on the latest tag and the amount of commits. - /// Format: 0.1.2 (where 2 is the amount of commits). - /// - /// If no tag is present in the repository then v0.0 is assumed. - /// This would result in 0.0.# where # is the amount of commits. - /// - public static string GenerateSemanticCommitVersion() - { - string version; - if (HasAnyVersionTags()) { - version = GetSemanticCommitVersion(); - Console.WriteLine("Repository has a valid version tag."); - } else { - version = "0.0." + GetTotalNumberOfCommits(); - Console.WriteLine("Repository does not have tags to base the version on."); - } - - Console.WriteLine("Version is " + version); - - return version; - } - - /// - /// Get the version of the current tag. - /// - /// The tag must point at HEAD for this method to work. - /// - /// Output Format: - /// #.* (where # is the major version and * can be any number of any type of character) - /// - public static string GetTagVersion() - { - string version = Run(@"tag --points-at HEAD | grep v[0-9]*"); - - version = version.Substring(1); - - return version; - } - - /// - /// Get the total number of commits. - /// - static int GetTotalNumberOfCommits() - { - string numberOfCommitsAsString = Run(@"git rev-list --count HEAD"); - - return int.Parse(numberOfCommitsAsString); - } - - /// - /// Whether or not the repository has any version tags yet. - /// - static bool HasAnyVersionTags() - { - return "0" != Run(@"tag --list --merged HEAD | grep v[0-9]* | wc -l"); - } - - /// - /// Retrieves the build version from git based on the most recent matching tag and - /// commit history. This returns the version as: {major.minor.build} where 'build' - /// represents the nth commit after the tagged commit. - /// Note: The initial 'v' and the commit hash are removed. - /// - static string GetSemanticCommitVersion() - { - // v0.1-2-g12345678 (where 2 is the amount of commits, g stands for git) - string version = GetVersionString(); - // 0.1-2 - version = version.Substring(1, version.LastIndexOf('-') - 1); - // 0.1.2 - version = version.Replace('-', '.'); - - return version; - } - - /// - /// Get version string. - /// - /// Format: `v0.1-2-g12345678` (where 2 is the amount of commits since the last tag) - /// - /// See: https://softwareengineering.stackexchange.com/questions/141973/how-do-you-achieve-a-numeric-versioning-scheme-with-git - /// - static string GetVersionString() - { - return Run(@"describe --tags --long --match ""v[0-9]*"""); - - // Todo - implement split function based on this more complete query - // return Run(@"describe --long --tags --dirty --always"); - } - - /// - /// Runs git binary with any given arguments and returns the output. - /// - static string Run(string arguments) - { - using (var process = new System.Diagnostics.Process()) { - string workingDirectory = UnityEngine.Application.dataPath; - - string output, errors; - int exitCode = process.Run(application, arguments, workingDirectory, out output, out errors); - if (exitCode != 0) { throw new GitException(exitCode, errors); } - - return output; - } - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs.meta deleted file mode 100644 index 2e3ffa74..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/Git.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: cdec7fa0f5bb44958fdf74d4658a4601 -timeCreated: 1587495075 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs deleted file mode 100644 index 45cc91de..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace UnityBuilderAction.Versioning -{ - public class GitException : InvalidOperationException - { - public readonly int code; - - public GitException(int code, string errors) : base(errors) - { - this.code = code; - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs.meta deleted file mode 100644 index a1f218c0..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/GitException.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4d375e209fd14fc5bc2f3dc3c78ac574 -timeCreated: 1587490750 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs deleted file mode 100644 index 5a3c5d64..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using UnityEditor; - -namespace UnityBuilderAction.Versioning -{ - public class VersionApplicator - { - public static void SetVersion(string version) - { - if (version == "none") { - return; - } - - Apply(version); - } - - public static void SetAndroidVersionCode(string androidVersionCode) { - int bundleVersionCode = Int32.Parse(androidVersionCode); - if (bundleVersionCode <= 0) { - return; - } - - PlayerSettings.Android.bundleVersionCode = bundleVersionCode; - } - - static void Apply(string version) - { - PlayerSettings.bundleVersion = version; - PlayerSettings.macOS.buildNumber = version; - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs.meta deleted file mode 100644 index a433d24c..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionApplicator.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 30483367ddc84699a0da377ccb93769a -timeCreated: 1587504315 \ No newline at end of file diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs deleted file mode 100644 index 1533ed61..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace UnityBuilderAction.Versioning -{ - public static class VersionGenerator - { - public static string Generate() - { - return Git.GenerateSemanticCommitVersion(); - } - } -} diff --git a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs.meta b/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs.meta deleted file mode 100644 index 460e2641..00000000 --- a/dist/default-build-script/Assets/Editor/UnityBuilderAction/Versioning/VersionGenerator.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9892e03ae8314b7eacd793c8002de007 -timeCreated: 1587490842 \ No newline at end of file diff --git a/dist/default-build-script/Packages/manifest.json b/dist/default-build-script/Packages/manifest.json deleted file mode 100644 index 11c4e054..00000000 --- a/dist/default-build-script/Packages/manifest.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "dependencies": { - "com.unity.2d.sprite": "1.0.0", - "com.unity.2d.tilemap": "1.0.0", - "com.unity.ads": "2.0.8", - "com.unity.analytics": "3.3.2", - "com.unity.collab-proxy": "1.2.16", - "com.unity.ext.nunit": "1.0.0", - "com.unity.ide.rider": "1.1.0", - "com.unity.ide.vscode": "1.1.2", - "com.unity.multiplayer-hlapi": "1.0.2", - "com.unity.package-manager-ui": "2.2.0", - "com.unity.purchasing": "2.0.6", - "com.unity.test-framework": "1.0.13", - "com.unity.textmeshpro": "2.0.1", - "com.unity.timeline": "1.1.0", - "com.unity.ugui": "1.0.0", - "com.unity.xr.legacyinputhelpers": "2.0.2", - "com.unity.modules.ai": "1.0.0", - "com.unity.modules.androidjni": "1.0.0", - "com.unity.modules.animation": "1.0.0", - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.cloth": "1.0.0", - "com.unity.modules.director": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.particlesystem": "1.0.0", - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.physics2d": "1.0.0", - "com.unity.modules.screencapture": "1.0.0", - "com.unity.modules.terrain": "1.0.0", - "com.unity.modules.terrainphysics": "1.0.0", - "com.unity.modules.tilemap": "1.0.0", - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.uielements": "1.0.0", - "com.unity.modules.umbra": "1.0.0", - "com.unity.modules.unityanalytics": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.unitywebrequestassetbundle": "1.0.0", - "com.unity.modules.unitywebrequestaudio": "1.0.0", - "com.unity.modules.unitywebrequesttexture": "1.0.0", - "com.unity.modules.unitywebrequestwww": "1.0.0", - "com.unity.modules.vehicles": "1.0.0", - "com.unity.modules.video": "1.0.0", - "com.unity.modules.vr": "1.0.0", - "com.unity.modules.wind": "1.0.0", - "com.unity.modules.xr": "1.0.0" - } -} diff --git a/dist/default-build-script/ProjectSettings/AudioManager.asset b/dist/default-build-script/ProjectSettings/AudioManager.asset deleted file mode 100644 index 27287fec..00000000 --- a/dist/default-build-script/ProjectSettings/AudioManager.asset +++ /dev/null @@ -1,19 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!11 &1 -AudioManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Volume: 1 - Rolloff Scale: 1 - Doppler Factor: 1 - Default Speaker Mode: 2 - m_SampleRate: 0 - m_DSPBufferSize: 1024 - m_VirtualVoiceCount: 512 - m_RealVoiceCount: 32 - m_SpatializerPlugin: - m_AmbisonicDecoderPlugin: - m_DisableAudio: 0 - m_VirtualizeEffects: 1 - m_RequestedDSPBufferSize: 0 diff --git a/dist/default-build-script/ProjectSettings/ClusterInputManager.asset b/dist/default-build-script/ProjectSettings/ClusterInputManager.asset deleted file mode 100644 index e7886b26..00000000 --- a/dist/default-build-script/ProjectSettings/ClusterInputManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!236 &1 -ClusterInputManager: - m_ObjectHideFlags: 0 - m_Inputs: [] diff --git a/dist/default-build-script/ProjectSettings/DynamicsManager.asset b/dist/default-build-script/ProjectSettings/DynamicsManager.asset deleted file mode 100644 index 6a0019c3..00000000 --- a/dist/default-build-script/ProjectSettings/DynamicsManager.asset +++ /dev/null @@ -1,35 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!55 &1 -PhysicsManager: - m_ObjectHideFlags: 0 - serializedVersion: 13 - m_Gravity: {x: 0, y: -9.81, z: 0} - m_DefaultMaterial: {fileID: 0} - m_BounceThreshold: 2 - m_SleepThreshold: 0.005 - m_DefaultContactOffset: 0.01 - m_DefaultSolverIterations: 6 - m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 - m_QueriesHitTriggers: 1 - m_EnableAdaptiveForce: 0 - m_ClothInterCollisionDistance: 0.1 - m_ClothInterCollisionStiffness: 0.2 - m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 - m_AutoSyncTransforms: 0 - m_ReuseCollisionCallbacks: 0 - m_ClothInterCollisionSettingsToggle: 0 - m_ClothGravity: {x: 0, y: -9.81, z: 0} - m_ContactPairsMode: 0 - m_BroadphaseType: 0 - m_WorldBounds: - m_Center: {x: 0, y: 0, z: 0} - m_Extent: {x: 250, y: 250, z: 250} - m_WorldSubdivisions: 8 - m_FrictionType: 0 - m_EnableEnhancedDeterminism: 0 - m_EnableUnifiedHeightmaps: 1 - m_DefaultMaxAngularSpeed: 50 diff --git a/dist/default-build-script/ProjectSettings/EditorBuildSettings.asset b/dist/default-build-script/ProjectSettings/EditorBuildSettings.asset deleted file mode 100644 index 0147887e..00000000 --- a/dist/default-build-script/ProjectSettings/EditorBuildSettings.asset +++ /dev/null @@ -1,8 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1045 &1 -EditorBuildSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Scenes: [] - m_configObjects: {} diff --git a/dist/default-build-script/ProjectSettings/EditorSettings.asset b/dist/default-build-script/ProjectSettings/EditorSettings.asset deleted file mode 100644 index 841a085a..00000000 --- a/dist/default-build-script/ProjectSettings/EditorSettings.asset +++ /dev/null @@ -1,26 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!159 &1 -EditorSettings: - m_ObjectHideFlags: 0 - serializedVersion: 8 - m_ExternalVersionControlSupport: Hidden Meta Files - m_SerializationMode: 2 - m_LineEndingsForNewScripts: 2 - m_DefaultBehaviorMode: 0 - m_PrefabRegularEnvironment: {fileID: 0} - m_PrefabUIEnvironment: {fileID: 0} - m_SpritePackerMode: 0 - m_SpritePackerPaddingPower: 1 - m_EtcTextureCompressorBehavior: 1 - m_EtcTextureFastCompressor: 1 - m_EtcTextureNormalCompressor: 2 - m_EtcTextureBestCompressor: 4 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp - m_ProjectGenerationRootNamespace: - m_CollabEditorSettings: - inProgressEnabled: 1 - m_EnableTextureStreamingInEditMode: 1 - m_EnableTextureStreamingInPlayMode: 1 - m_AsyncShaderCompilation: 1 - m_ShowLightmapResolutionOverlay: 1 diff --git a/dist/default-build-script/ProjectSettings/GraphicsSettings.asset b/dist/default-build-script/ProjectSettings/GraphicsSettings.asset deleted file mode 100644 index b23b253e..00000000 --- a/dist/default-build-script/ProjectSettings/GraphicsSettings.asset +++ /dev/null @@ -1,63 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!30 &1 -GraphicsSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_Deferred: - m_Mode: 1 - m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} - m_DeferredReflections: - m_Mode: 1 - m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} - m_ScreenSpaceShadows: - m_Mode: 1 - m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} - m_LegacyDeferred: - m_Mode: 1 - m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} - m_DepthNormals: - m_Mode: 1 - m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} - m_MotionVectors: - m_Mode: 1 - m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} - m_LightHalo: - m_Mode: 1 - m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} - m_LensFlare: - m_Mode: 1 - m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} - m_AlwaysIncludedShaders: - - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} - m_PreloadedShaders: [] - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} - m_CustomRenderPipeline: {fileID: 0} - m_TransparencySortMode: 0 - m_TransparencySortAxis: {x: 0, y: 0, z: 1} - m_DefaultRenderingPath: 1 - m_DefaultMobileRenderingPath: 1 - m_TierSettings: [] - m_LightmapStripping: 0 - m_FogStripping: 0 - m_InstancingStripping: 0 - m_LightmapKeepPlain: 1 - m_LightmapKeepDirCombined: 1 - m_LightmapKeepDynamicPlain: 1 - m_LightmapKeepDynamicDirCombined: 1 - m_LightmapKeepShadowMask: 1 - m_LightmapKeepSubtractive: 1 - m_FogKeepLinear: 1 - m_FogKeepExp: 1 - m_FogKeepExp2: 1 - m_AlbedoSwatchInfos: [] - m_LightsUseLinearIntensity: 0 - m_LightsUseColorTemperature: 0 - m_LogWhenShaderIsCompiled: 0 diff --git a/dist/default-build-script/ProjectSettings/InputManager.asset b/dist/default-build-script/ProjectSettings/InputManager.asset deleted file mode 100644 index 17c8f538..00000000 --- a/dist/default-build-script/ProjectSettings/InputManager.asset +++ /dev/null @@ -1,295 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!13 &1 -InputManager: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Axes: - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: left - positiveButton: right - altNegativeButton: a - altPositiveButton: d - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: down - positiveButton: up - altNegativeButton: s - altPositiveButton: w - gravity: 3 - dead: 0.001 - sensitivity: 3 - snap: 1 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left ctrl - altNegativeButton: - altPositiveButton: mouse 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left alt - altNegativeButton: - altPositiveButton: mouse 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: left shift - altNegativeButton: - altPositiveButton: mouse 2 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: space - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse X - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse Y - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Mouse ScrollWheel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0 - sensitivity: 0.1 - snap: 0 - invert: 0 - type: 1 - axis: 2 - joyNum: 0 - - serializedVersion: 3 - m_Name: Horizontal - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 0 - type: 2 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Vertical - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: - altNegativeButton: - altPositiveButton: - gravity: 0 - dead: 0.19 - sensitivity: 1 - snap: 0 - invert: 1 - type: 2 - axis: 1 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire1 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 0 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire2 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 1 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Fire3 - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 2 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Jump - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: joystick button 3 - altNegativeButton: - altPositiveButton: - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: return - altNegativeButton: - altPositiveButton: joystick button 0 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Submit - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: enter - altNegativeButton: - altPositiveButton: space - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 - - serializedVersion: 3 - m_Name: Cancel - descriptiveName: - descriptiveNegativeName: - negativeButton: - positiveButton: escape - altNegativeButton: - altPositiveButton: joystick button 1 - gravity: 1000 - dead: 0.001 - sensitivity: 1000 - snap: 0 - invert: 0 - type: 0 - axis: 0 - joyNum: 0 diff --git a/dist/default-build-script/ProjectSettings/NavMeshAreas.asset b/dist/default-build-script/ProjectSettings/NavMeshAreas.asset deleted file mode 100644 index 3b0b7c3d..00000000 --- a/dist/default-build-script/ProjectSettings/NavMeshAreas.asset +++ /dev/null @@ -1,91 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!126 &1 -NavMeshProjectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - areas: - - name: Walkable - cost: 1 - - name: Not Walkable - cost: 1 - - name: Jump - cost: 2 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - - name: - cost: 1 - m_LastAgentTypeID: -887442657 - m_Settings: - - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.75 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_SettingNames: - - Humanoid diff --git a/dist/default-build-script/ProjectSettings/Physics2DSettings.asset b/dist/default-build-script/ProjectSettings/Physics2DSettings.asset deleted file mode 100644 index 6c5cf8a0..00000000 --- a/dist/default-build-script/ProjectSettings/Physics2DSettings.asset +++ /dev/null @@ -1,56 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!19 &1 -Physics2DSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_Gravity: {x: 0, y: -9.81} - m_DefaultMaterial: {fileID: 0} - m_VelocityIterations: 8 - m_PositionIterations: 3 - m_VelocityThreshold: 1 - m_MaxLinearCorrection: 0.2 - m_MaxAngularCorrection: 8 - m_MaxTranslationSpeed: 100 - m_MaxRotationSpeed: 360 - m_BaumgarteScale: 0.2 - m_BaumgarteTimeOfImpactScale: 0.75 - m_TimeToSleep: 0.5 - m_LinearSleepTolerance: 0.01 - m_AngularSleepTolerance: 2 - m_DefaultContactOffset: 0.01 - m_JobOptions: - serializedVersion: 2 - useMultithreading: 0 - useConsistencySorting: 0 - m_InterpolationPosesPerJob: 100 - m_NewContactsPerJob: 30 - m_CollideContactsPerJob: 100 - m_ClearFlagsPerJob: 200 - m_ClearBodyForcesPerJob: 200 - m_SyncDiscreteFixturesPerJob: 50 - m_SyncContinuousFixturesPerJob: 50 - m_FindNearestContactsPerJob: 100 - m_UpdateTriggerContactsPerJob: 100 - m_IslandSolverCostThreshold: 100 - m_IslandSolverBodyCostScale: 1 - m_IslandSolverContactCostScale: 10 - m_IslandSolverJointCostScale: 10 - m_IslandSolverBodiesPerJob: 50 - m_IslandSolverContactsPerJob: 50 - m_AutoSimulation: 1 - m_QueriesHitTriggers: 1 - m_QueriesStartInColliders: 1 - m_CallbacksOnDisable: 1 - m_ReuseCollisionCallbacks: 0 - m_AutoSyncTransforms: 0 - m_AlwaysShowColliders: 0 - m_ShowColliderSleep: 1 - m_ShowColliderContacts: 0 - m_ShowColliderAABB: 0 - m_ContactArrowScale: 0.2 - m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} - m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} - m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} - m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/dist/default-build-script/ProjectSettings/PresetManager.asset b/dist/default-build-script/ProjectSettings/PresetManager.asset deleted file mode 100644 index 636a595b..00000000 --- a/dist/default-build-script/ProjectSettings/PresetManager.asset +++ /dev/null @@ -1,6 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1386491679 &1 -PresetManager: - m_ObjectHideFlags: 0 - m_DefaultList: [] diff --git a/dist/default-build-script/ProjectSettings/ProjectSettings.asset b/dist/default-build-script/ProjectSettings/ProjectSettings.asset deleted file mode 100644 index 89d6b052..00000000 --- a/dist/default-build-script/ProjectSettings/ProjectSettings.asset +++ /dev/null @@ -1,618 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!129 &1 -PlayerSettings: - m_ObjectHideFlags: 0 - serializedVersion: 18 - productGUID: 6d63415a90838204d82e38eea44f3e86 - AndroidProfiler: 0 - AndroidFilterTouchesWhenObscured: 0 - AndroidEnableSustainedPerformanceMode: 0 - defaultScreenOrientation: 4 - targetDevice: 2 - useOnDemandResources: 0 - accelerometerFrequency: 60 - companyName: DefaultCompany - productName: default-build-script - defaultCursor: {fileID: 0} - cursorHotspot: {x: 0, y: 0} - m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} - m_ShowUnitySplashScreen: 1 - m_ShowUnitySplashLogo: 1 - m_SplashScreenOverlayOpacity: 1 - m_SplashScreenAnimation: 1 - m_SplashScreenLogoStyle: 1 - m_SplashScreenDrawMode: 0 - m_SplashScreenBackgroundAnimationZoom: 1 - m_SplashScreenLogoAnimationZoom: 1 - m_SplashScreenBackgroundLandscapeAspect: 1 - m_SplashScreenBackgroundPortraitAspect: 1 - m_SplashScreenBackgroundLandscapeUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenBackgroundPortraitUvs: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - m_SplashScreenLogos: [] - m_VirtualRealitySplashScreen: {fileID: 0} - m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 - defaultScreenWidthWeb: 960 - defaultScreenHeightWeb: 600 - m_StereoRenderingPath: 0 - m_ActiveColorSpace: 0 - m_MTRendering: 1 - m_StackTraceTypes: 010000000100000001000000010000000100000001000000 - iosShowActivityIndicatorOnLoading: -1 - androidShowActivityIndicatorOnLoading: -1 - displayResolutionDialog: 0 - iosUseCustomAppBackgroundBehavior: 0 - iosAllowHTTPDownload: 1 - allowedAutorotateToPortrait: 1 - allowedAutorotateToPortraitUpsideDown: 1 - allowedAutorotateToLandscapeRight: 1 - allowedAutorotateToLandscapeLeft: 1 - useOSAutorotation: 1 - use32BitDisplayBuffer: 1 - preserveFramebufferAlpha: 0 - disableDepthAndStencilBuffers: 0 - androidStartInFullscreen: 1 - androidRenderOutsideSafeArea: 1 - androidUseSwappy: 0 - androidBlitType: 0 - defaultIsNativeResolution: 1 - macRetinaSupport: 1 - runInBackground: 0 - captureSingleScreen: 0 - muteOtherAudioSources: 0 - Prepare IOS For Recording: 0 - Force IOS Speakers When Recording: 0 - deferSystemGesturesMode: 0 - hideHomeButton: 0 - submitAnalytics: 1 - usePlayerLog: 1 - bakeCollisionMeshes: 0 - forceSingleInstance: 0 - useFlipModelSwapchain: 1 - resizableWindow: 0 - useMacAppStoreValidation: 0 - macAppStoreCategory: public.app-category.games - gpuSkinning: 0 - graphicsJobs: 0 - xboxPIXTextureCapture: 0 - xboxEnableAvatar: 0 - xboxEnableKinect: 0 - xboxEnableKinectAutoTracking: 0 - xboxEnableFitness: 0 - visibleInBackground: 1 - allowFullscreenSwitch: 1 - graphicsJobMode: 0 - fullscreenMode: 1 - xboxSpeechDB: 0 - xboxEnableHeadOrientation: 0 - xboxEnableGuest: 0 - xboxEnablePIXSampling: 0 - metalFramebufferOnly: 0 - xboxOneResolution: 0 - xboxOneSResolution: 0 - xboxOneXResolution: 3 - xboxOneMonoLoggingLevel: 0 - xboxOneLoggingLevel: 1 - xboxOneDisableEsram: 0 - xboxOnePresentImmediateThreshold: 0 - switchQueueCommandMemory: 1048576 - switchQueueControlMemory: 16384 - switchQueueComputeMemory: 262144 - switchNVNShaderPoolsGranularity: 33554432 - switchNVNDefaultPoolsGranularity: 16777216 - switchNVNOtherPoolsGranularity: 16777216 - vulkanEnableSetSRGBWrite: 0 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 - bundleVersion: 1.0 - preloadedAssets: [] - metroInputSource: 0 - wsaTransparentSwapchain: 0 - m_HolographicPauseOnTrackingLoss: 1 - xboxOneDisableKinectGpuReservation: 1 - xboxOneEnable7thCore: 1 - vrSettings: - cardboard: - depthFormat: 0 - enableTransitionView: 0 - daydream: - depthFormat: 0 - useSustainedPerformanceMode: 0 - enableVideoLayer: 0 - useProtectedVideoMemory: 0 - minimumSupportedHeadTracking: 0 - maximumSupportedHeadTracking: 1 - hololens: - depthFormat: 1 - depthBufferSharingEnabled: 1 - lumin: - depthFormat: 0 - frameTiming: 2 - enableGLCache: 0 - glCacheMaxBlobSize: 524288 - glCacheMaxFileSize: 8388608 - oculus: - sharedDepthBuffer: 1 - dashSupport: 1 - lowOverheadMode: 0 - protectedContext: 0 - v2Signing: 0 - enable360StereoCapture: 0 - isWsaHolographicRemotingEnabled: 0 - protectGraphicsMemory: 0 - enableFrameTimingStats: 0 - useHDRDisplay: 0 - m_ColorGamuts: 00000000 - targetPixelDensity: 0 - resolutionScalingMode: 0 - androidSupportedAspectRatio: 1 - androidMaxAspectRatio: 2.1 - applicationIdentifier: {} - buildNumber: {} - AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 16 - AndroidTargetSdkVersion: 0 - AndroidPreferredInstallLocation: 1 - aotOptions: - stripEngineCode: 1 - iPhoneStrippingLevel: 0 - iPhoneScriptCallOptimization: 0 - ForceInternetPermission: 0 - ForceSDCardPermission: 0 - CreateWallpaper: 0 - APKExpansionFiles: 0 - keepLoadedShadersAlive: 0 - StripUnusedMeshComponents: 0 - VertexChannelCompressionMask: 4054 - iPhoneSdkVersion: 988 - iOSTargetOSVersionString: - tvOSSdkVersion: 0 - tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: - uIPrerenderedIcon: 0 - uIRequiresPersistentWiFi: 0 - uIRequiresFullScreen: 1 - uIStatusBarHidden: 1 - uIExitOnSuspend: 0 - uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPhone58inPortraitSplashScreen: {fileID: 0} - iPhone58inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} - iPhone65inPortraitSplashScreen: {fileID: 0} - iPhone65inLandscapeSplashScreen: {fileID: 0} - iPhone61inPortraitSplashScreen: {fileID: 0} - iPhone61inLandscapeSplashScreen: {fileID: 0} - appleTVSplashScreen: {fileID: 0} - appleTVSplashScreen2x: {fileID: 0} - tvOSSmallIconLayers: [] - tvOSSmallIconLayers2x: [] - tvOSLargeIconLayers: [] - tvOSLargeIconLayers2x: [] - tvOSTopShelfImageLayers: [] - tvOSTopShelfImageLayers2x: [] - tvOSTopShelfImageWideLayers: [] - tvOSTopShelfImageWideLayers2x: [] - iOSLaunchScreenType: 0 - iOSLaunchScreenPortrait: {fileID: 0} - iOSLaunchScreenLandscape: {fileID: 0} - iOSLaunchScreenBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreenFillPct: 100 - iOSLaunchScreenSize: 100 - iOSLaunchScreenCustomXibPath: - iOSLaunchScreeniPadType: 0 - iOSLaunchScreeniPadImage: {fileID: 0} - iOSLaunchScreeniPadBackgroundColor: - serializedVersion: 2 - rgba: 0 - iOSLaunchScreeniPadFillPct: 100 - iOSLaunchScreeniPadSize: 100 - iOSLaunchScreeniPadCustomXibPath: - iOSUseLaunchScreenStoryboard: 0 - iOSLaunchScreenCustomStoryboardPath: - iOSDeviceRequirements: [] - iOSURLSchemes: [] - iOSBackgroundModes: 0 - iOSMetalForceHardShadows: 0 - metalEditorSupport: 1 - metalAPIValidation: 1 - iOSRenderExtraFrameOnPause: 0 - appleDeveloperTeamID: - iOSManualSigningProvisioningProfileID: - tvOSManualSigningProvisioningProfileID: - iOSManualSigningProvisioningProfileType: 0 - tvOSManualSigningProvisioningProfileType: 0 - appleEnableAutomaticSigning: 0 - iOSRequireARKit: 0 - iOSAutomaticallyDetectAndAddCapabilities: 1 - appleEnableProMotion: 0 - clonedFromGUID: 00000000000000000000000000000000 - templatePackageId: - templateDefaultScene: - AndroidTargetArchitectures: 1 - AndroidSplashScreenScale: 0 - androidSplashScreen: {fileID: 0} - AndroidKeystoreName: - AndroidKeyaliasName: - AndroidBuildApkPerCpuArchitecture: 0 - AndroidTVCompatibility: 0 - AndroidIsGame: 1 - AndroidEnableTango: 0 - androidEnableBanner: 1 - androidUseLowAccuracyLocation: 0 - androidUseCustomKeystore: 0 - m_AndroidBanners: - - width: 320 - height: 180 - banner: {fileID: 0} - androidGamepadSupportLevel: 0 - AndroidValidateAppBundleSize: 1 - AndroidAppBundleSizeToValidate: 150 - resolutionDialogBanner: {fileID: 0} - m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] - m_BuildTargetBatching: [] - m_BuildTargetGraphicsAPIs: [] - m_BuildTargetVRSettings: [] - openGLRequireES31: 0 - openGLRequireES31AEP: 0 - openGLRequireES32: 0 - vuforiaEnabled: 0 - m_TemplateCustomTags: {} - mobileMTRendering: - Android: 1 - iPhone: 1 - tvOS: 1 - m_BuildTargetGroupLightmapEncodingQuality: [] - m_BuildTargetGroupLightmapSettings: [] - playModeTestRunnerEnabled: 0 - runPlayModeTestAsEditModeTest: 0 - actionOnDotNetUnhandledException: 1 - enableInternalProfiler: 0 - logObjCUncaughtExceptions: 1 - enableCrashReportAPI: 0 - cameraUsageDescription: - locationUsageDescription: - microphoneUsageDescription: - switchNetLibKey: - switchSocketMemoryPoolSize: 6144 - switchSocketAllocatorPoolSize: 128 - switchSocketConcurrencyLimit: 14 - switchScreenResolutionBehavior: 2 - switchUseCPUProfiler: 0 - switchApplicationID: 0x01004b9000490000 - switchNSODependencies: - switchTitleNames_0: - switchTitleNames_1: - switchTitleNames_2: - switchTitleNames_3: - switchTitleNames_4: - switchTitleNames_5: - switchTitleNames_6: - switchTitleNames_7: - switchTitleNames_8: - switchTitleNames_9: - switchTitleNames_10: - switchTitleNames_11: - switchTitleNames_12: - switchTitleNames_13: - switchTitleNames_14: - switchPublisherNames_0: - switchPublisherNames_1: - switchPublisherNames_2: - switchPublisherNames_3: - switchPublisherNames_4: - switchPublisherNames_5: - switchPublisherNames_6: - switchPublisherNames_7: - switchPublisherNames_8: - switchPublisherNames_9: - switchPublisherNames_10: - switchPublisherNames_11: - switchPublisherNames_12: - switchPublisherNames_13: - switchPublisherNames_14: - switchIcons_0: {fileID: 0} - switchIcons_1: {fileID: 0} - switchIcons_2: {fileID: 0} - switchIcons_3: {fileID: 0} - switchIcons_4: {fileID: 0} - switchIcons_5: {fileID: 0} - switchIcons_6: {fileID: 0} - switchIcons_7: {fileID: 0} - switchIcons_8: {fileID: 0} - switchIcons_9: {fileID: 0} - switchIcons_10: {fileID: 0} - switchIcons_11: {fileID: 0} - switchIcons_12: {fileID: 0} - switchIcons_13: {fileID: 0} - switchIcons_14: {fileID: 0} - switchSmallIcons_0: {fileID: 0} - switchSmallIcons_1: {fileID: 0} - switchSmallIcons_2: {fileID: 0} - switchSmallIcons_3: {fileID: 0} - switchSmallIcons_4: {fileID: 0} - switchSmallIcons_5: {fileID: 0} - switchSmallIcons_6: {fileID: 0} - switchSmallIcons_7: {fileID: 0} - switchSmallIcons_8: {fileID: 0} - switchSmallIcons_9: {fileID: 0} - switchSmallIcons_10: {fileID: 0} - switchSmallIcons_11: {fileID: 0} - switchSmallIcons_12: {fileID: 0} - switchSmallIcons_13: {fileID: 0} - switchSmallIcons_14: {fileID: 0} - switchManualHTML: - switchAccessibleURLs: - switchLegalInformation: - switchMainThreadStackSize: 1048576 - switchPresenceGroupId: - switchLogoHandling: 0 - switchReleaseVersion: 0 - switchDisplayVersion: 1.0.0 - switchStartupUserAccount: 0 - switchTouchScreenUsage: 0 - switchSupportedLanguagesMask: 0 - switchLogoType: 0 - switchApplicationErrorCodeCategory: - switchUserAccountSaveDataSize: 0 - switchUserAccountSaveDataJournalSize: 0 - switchApplicationAttribute: 0 - switchCardSpecSize: -1 - switchCardSpecClock: -1 - switchRatingsMask: 0 - switchRatingsInt_0: 0 - switchRatingsInt_1: 0 - switchRatingsInt_2: 0 - switchRatingsInt_3: 0 - switchRatingsInt_4: 0 - switchRatingsInt_5: 0 - switchRatingsInt_6: 0 - switchRatingsInt_7: 0 - switchRatingsInt_8: 0 - switchRatingsInt_9: 0 - switchRatingsInt_10: 0 - switchRatingsInt_11: 0 - switchLocalCommunicationIds_0: - switchLocalCommunicationIds_1: - switchLocalCommunicationIds_2: - switchLocalCommunicationIds_3: - switchLocalCommunicationIds_4: - switchLocalCommunicationIds_5: - switchLocalCommunicationIds_6: - switchLocalCommunicationIds_7: - switchParentalControl: 0 - switchAllowsScreenshot: 1 - switchAllowsVideoCapturing: 1 - switchAllowsRuntimeAddOnContentInstall: 0 - switchDataLossConfirmation: 0 - switchUserAccountLockEnabled: 0 - switchSystemResourceMemory: 16777216 - switchSupportedNpadStyles: 22 - switchNativeFsCacheSize: 32 - switchIsHoldTypeHorizontal: 0 - switchSupportedNpadCount: 8 - switchSocketConfigEnabled: 0 - switchTcpInitialSendBufferSize: 32 - switchTcpInitialReceiveBufferSize: 64 - switchTcpAutoSendBufferSizeMax: 256 - switchTcpAutoReceiveBufferSizeMax: 256 - switchUdpSendBufferSize: 9 - switchUdpReceiveBufferSize: 42 - switchSocketBufferEfficiency: 4 - switchSocketInitializeEnabled: 1 - switchNetworkInterfaceManagerInitializeEnabled: 1 - switchPlayerConnectionEnabled: 1 - ps4NPAgeRating: 12 - ps4NPTitleSecret: - ps4NPTrophyPackPath: - ps4ParentalLevel: 11 - ps4ContentID: ED1633-NPXX51362_00-0000000000000000 - ps4Category: 0 - ps4MasterVersion: 01.00 - ps4AppVersion: 01.00 - ps4AppType: 0 - ps4ParamSfxPath: - ps4VideoOutPixelFormat: 0 - ps4VideoOutInitialWidth: 1920 - ps4VideoOutBaseModeInitialWidth: 1920 - ps4VideoOutReprojectionRate: 60 - ps4PronunciationXMLPath: - ps4PronunciationSIGPath: - ps4BackgroundImagePath: - ps4StartupImagePath: - ps4StartupImagesFolder: - ps4IconImagesFolder: - ps4SaveDataImagePath: - ps4SdkOverride: - ps4BGMPath: - ps4ShareFilePath: - ps4ShareOverlayImagePath: - ps4PrivacyGuardImagePath: - ps4NPtitleDatPath: - ps4RemotePlayKeyAssignment: -1 - ps4RemotePlayKeyMappingDir: - ps4PlayTogetherPlayerCount: 0 - ps4EnterButtonAssignment: 2 - ps4ApplicationParam1: 0 - ps4ApplicationParam2: 0 - ps4ApplicationParam3: 0 - ps4ApplicationParam4: 0 - ps4DownloadDataSize: 0 - ps4GarlicHeapSize: 2048 - ps4ProGarlicHeapSize: 2560 - playerPrefsMaxSize: 32768 - ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ - ps4pnSessions: 1 - ps4pnPresence: 1 - ps4pnFriends: 1 - ps4pnGameCustomData: 1 - playerPrefsSupport: 0 - enableApplicationExit: 0 - resetTempFolder: 1 - restrictedAudioUsageRights: 0 - ps4UseResolutionFallback: 0 - ps4ReprojectionSupport: 0 - ps4UseAudio3dBackend: 0 - ps4SocialScreenEnabled: 0 - ps4ScriptOptimizationLevel: 2 - ps4Audio3dVirtualSpeakerCount: 14 - ps4attribCpuUsage: 0 - ps4PatchPkgPath: - ps4PatchLatestPkgPath: - ps4PatchChangeinfoPath: - ps4PatchDayOne: 0 - ps4attribUserManagement: 0 - ps4attribMoveSupport: 0 - ps4attrib3DSupport: 0 - ps4attribShareSupport: 0 - ps4attribExclusiveVR: 0 - ps4disableAutoHideSplash: 0 - ps4videoRecordingFeaturesUsed: 0 - ps4contentSearchFeaturesUsed: 0 - ps4attribEyeToEyeDistanceSettingVR: 0 - ps4IncludedModules: [] - monoEnv: - splashScreenBackgroundSourceLandscape: {fileID: 0} - splashScreenBackgroundSourcePortrait: {fileID: 0} - blurSplashScreenBackground: 1 - spritePackerPolicy: - webGLMemorySize: 32 - webGLExceptionSupport: 1 - webGLNameFilesAsHashes: 0 - webGLDataCaching: 1 - webGLDebugSymbols: 0 - webGLEmscriptenArgs: - webGLModulesDirectory: - webGLTemplate: APPLICATION:Default - webGLAnalyzeBuildSize: 0 - webGLUseEmbeddedResources: 0 - webGLCompressionFormat: 0 - webGLLinkerTarget: 1 - webGLThreadsSupport: 0 - webGLWasmStreaming: 0 - scriptingDefineSymbols: {} - platformArchitecture: {} - scriptingBackend: {} - il2cppCompilerConfiguration: {} - managedStrippingLevel: {} - incrementalIl2cppBuild: {} - allowUnsafeCode: 0 - additionalIl2CppArgs: - scriptingRuntimeVersion: 1 - gcIncremental: 0 - gcWBarrierValidation: 0 - apiCompatibilityLevelPerPlatform: {} - m_RenderingPath: 1 - m_MobileRenderingPath: 1 - metroPackageName: default-build-script - metroPackageVersion: - metroCertificatePath: - metroCertificatePassword: - metroCertificateSubject: - metroCertificateIssuer: - metroCertificateNotAfter: 0000000000000000 - metroApplicationDescription: default-build-script - wsaImages: {} - metroTileShortName: - metroTileShowName: 0 - metroMediumTileShowName: 0 - metroLargeTileShowName: 0 - metroWideTileShowName: 0 - metroSupportStreamingInstall: 0 - metroLastRequiredScene: 0 - metroDefaultTileSize: 1 - metroTileForegroundText: 2 - metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} - metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, - a: 1} - metroSplashScreenUseBackgroundColor: 0 - platformCapabilities: {} - metroTargetDeviceFamilies: {} - metroFTAName: - metroFTAFileTypes: [] - metroProtocolName: - XboxOneProductId: - XboxOneUpdateKey: - XboxOneSandboxId: - XboxOneContentId: - XboxOneTitleId: - XboxOneSCId: - XboxOneGameOsOverridePath: - XboxOnePackagingOverridePath: - XboxOneAppManifestOverridePath: - XboxOneVersion: 1.0.0.0 - XboxOnePackageEncryption: 0 - XboxOnePackageUpdateGranularity: 2 - XboxOneDescription: - XboxOneLanguage: - - enus - XboxOneCapability: [] - XboxOneGameRating: {} - XboxOneIsContentPackage: 0 - XboxOneEnableGPUVariability: 1 - XboxOneSockets: {} - XboxOneSplashScreen: {fileID: 0} - XboxOneAllowedProductIds: [] - XboxOnePersistentLocalStorageSize: 0 - XboxOneXTitleMemory: 8 - xboxOneScriptCompiler: 1 - XboxOneOverrideIdentityName: - vrEditorSettings: - daydream: - daydreamIconForeground: {fileID: 0} - daydreamIconBackground: {fileID: 0} - cloudServicesEnabled: {} - luminIcon: - m_Name: - m_ModelFolderPath: - m_PortalFolderPath: - luminCert: - m_CertPath: - m_SignPackage: 1 - luminIsChannelApp: 0 - luminVersion: - m_VersionCode: 1 - m_VersionName: - facebookSdkVersion: - facebookAppId: - facebookCookies: 1 - facebookLogging: 1 - facebookStatus: 1 - facebookXfbml: 0 - facebookFrictionlessRequests: 1 - apiCompatibilityLevel: 6 - cloudProjectId: - framebufferDepthMemorylessMode: 0 - projectName: - organizationId: - cloudEnabled: 0 - enableNativePlatformBackendsForNewInputSystem: 0 - disableOldInputManagerSupport: 0 - legacyClampBlendShapeWeights: 0 diff --git a/dist/default-build-script/ProjectSettings/ProjectVersion.txt b/dist/default-build-script/ProjectSettings/ProjectVersion.txt deleted file mode 100644 index 87079c13..00000000 --- a/dist/default-build-script/ProjectSettings/ProjectVersion.txt +++ /dev/null @@ -1,2 +0,0 @@ -m_EditorVersion: 2019.2.11f1 -m_EditorVersionWithRevision: 2019.2.11f1 (5f859a4cfee5) diff --git a/dist/default-build-script/ProjectSettings/QualitySettings.asset b/dist/default-build-script/ProjectSettings/QualitySettings.asset deleted file mode 100644 index b0680478..00000000 --- a/dist/default-build-script/ProjectSettings/QualitySettings.asset +++ /dev/null @@ -1,230 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!47 &1 -QualitySettings: - m_ObjectHideFlags: 0 - serializedVersion: 5 - m_CurrentQuality: 5 - m_QualitySettings: - - serializedVersion: 2 - name: Very Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 15 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 1 - textureQuality: 1 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.3 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Low - pixelLightCount: 0 - shadows: 0 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 0 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 0 - lodBias: 0.4 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 16 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Medium - pixelLightCount: 1 - shadows: 1 - shadowResolution: 0 - shadowProjection: 1 - shadowCascades: 1 - shadowDistance: 20 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 0 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 0 - realtimeReflectionProbes: 0 - billboardsFaceCameraPosition: 0 - vSyncCount: 1 - lodBias: 0.7 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 64 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: High - pixelLightCount: 2 - shadows: 2 - shadowResolution: 1 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 40 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 2 - textureQuality: 0 - anisotropicTextures: 1 - antiAliasing: 0 - softParticles: 0 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 256 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Very High - pixelLightCount: 3 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 2 - shadowDistance: 70 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 4 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 1.5 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 1024 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - - serializedVersion: 2 - name: Ultra - pixelLightCount: 4 - shadows: 2 - shadowResolution: 2 - shadowProjection: 1 - shadowCascades: 4 - shadowDistance: 150 - shadowNearPlaneOffset: 3 - shadowCascade2Split: 0.33333334 - shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} - shadowmaskMode: 1 - skinWeights: 255 - textureQuality: 0 - anisotropicTextures: 2 - antiAliasing: 2 - softParticles: 1 - softVegetation: 1 - realtimeReflectionProbes: 1 - billboardsFaceCameraPosition: 1 - vSyncCount: 1 - lodBias: 2 - maximumLODLevel: 0 - streamingMipmapsActive: 0 - streamingMipmapsAddAllCameras: 1 - streamingMipmapsMemoryBudget: 512 - streamingMipmapsRenderersPerFrame: 512 - streamingMipmapsMaxLevelReduction: 2 - streamingMipmapsMaxFileIORequests: 1024 - particleRaycastBudget: 4096 - asyncUploadTimeSlice: 2 - asyncUploadBufferSize: 16 - asyncUploadPersistentBuffer: 1 - resolutionScalingFixedDPIFactor: 1 - excludedTargetPlatforms: [] - m_PerPlatformDefaultQuality: - Android: 2 - BJM: 5 - Lumin: 5 - Nintendo Switch: 5 - PS4: 5 - Standalone: 5 - WebGL: 3 - Windows Store Apps: 5 - XboxOne: 5 - iPhone: 2 - tvOS: 2 diff --git a/dist/default-build-script/ProjectSettings/TagManager.asset b/dist/default-build-script/ProjectSettings/TagManager.asset deleted file mode 100644 index 1c92a784..00000000 --- a/dist/default-build-script/ProjectSettings/TagManager.asset +++ /dev/null @@ -1,43 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!78 &1 -TagManager: - serializedVersion: 2 - tags: [] - layers: - - Default - - TransparentFX - - Ignore Raycast - - - - Water - - UI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - - name: Default - uniqueID: 0 - locked: 0 diff --git a/dist/default-build-script/ProjectSettings/TimeManager.asset b/dist/default-build-script/ProjectSettings/TimeManager.asset deleted file mode 100644 index 558a017e..00000000 --- a/dist/default-build-script/ProjectSettings/TimeManager.asset +++ /dev/null @@ -1,9 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!5 &1 -TimeManager: - m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 - Maximum Allowed Timestep: 0.33333334 - m_TimeScale: 1 - Maximum Particle Timestep: 0.03 diff --git a/dist/default-build-script/ProjectSettings/UnityConnectSettings.asset b/dist/default-build-script/ProjectSettings/UnityConnectSettings.asset deleted file mode 100644 index fa0b1465..00000000 --- a/dist/default-build-script/ProjectSettings/UnityConnectSettings.asset +++ /dev/null @@ -1,34 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!310 &1 -UnityConnectSettings: - m_ObjectHideFlags: 0 - serializedVersion: 1 - m_Enabled: 0 - m_TestMode: 0 - m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events - m_EventUrl: https://cdp.cloud.unity3d.com/v1/events - m_ConfigUrl: https://config.uca.cloud.unity3d.com - m_TestInitMode: 0 - CrashReportingSettings: - m_EventUrl: https://perf-events.cloud.unity3d.com - m_Enabled: 0 - m_LogBufferSize: 10 - m_CaptureEditorExceptions: 1 - UnityPurchasingSettings: - m_Enabled: 0 - m_TestMode: 0 - UnityAnalyticsSettings: - m_Enabled: 0 - m_TestMode: 0 - m_InitializeOnStartup: 1 - UnityAdsSettings: - m_Enabled: 0 - m_InitializeOnStartup: 1 - m_TestMode: 0 - m_IosGameId: - m_AndroidGameId: - m_GameIds: {} - m_GameId: - PerformanceReportingSettings: - m_Enabled: 0 diff --git a/dist/default-build-script/ProjectSettings/VFXManager.asset b/dist/default-build-script/ProjectSettings/VFXManager.asset deleted file mode 100644 index 6e0eaca4..00000000 --- a/dist/default-build-script/ProjectSettings/VFXManager.asset +++ /dev/null @@ -1,11 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!937362698 &1 -VFXManager: - m_ObjectHideFlags: 0 - m_IndirectShader: {fileID: 0} - m_CopyBufferShader: {fileID: 0} - m_SortShader: {fileID: 0} - m_RenderPipeSettingsPath: - m_FixedTimeStep: 0.016666668 - m_MaxDeltaTime: 0.05 diff --git a/dist/exec-child.js b/dist/exec-child.js deleted file mode 100644 index eab86ed3..00000000 --- a/dist/exec-child.js +++ /dev/null @@ -1,39 +0,0 @@ -if (require.main !== module) { - throw new Error('This file should not be required'); -} - -var childProcess = require('child_process'); -var fs = require('fs'); - -var paramFilePath = process.argv[2]; - -var serializedParams = fs.readFileSync(paramFilePath, 'utf8'); -var params = JSON.parse(serializedParams); - -var cmd = params.command; -var execOptions = params.execOptions; -var pipe = params.pipe; -var stdoutFile = params.stdoutFile; -var stderrFile = params.stderrFile; - -var c = childProcess.exec(cmd, execOptions, function (err) { - if (!err) { - process.exitCode = 0; - } else if (err.code === undefined) { - process.exitCode = 1; - } else { - process.exitCode = err.code; - } -}); - -var stdoutStream = fs.createWriteStream(stdoutFile); -var stderrStream = fs.createWriteStream(stderrFile); - -c.stdout.pipe(stdoutStream); -c.stderr.pipe(stderrStream); -c.stdout.pipe(process.stdout); -c.stderr.pipe(process.stderr); - -if (pipe) { - c.stdin.end(pipe); -} diff --git a/dist/index.js b/dist/index.js index 6f5dafab..72fc8808 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,6 +1,460 @@ require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ +/***/ 10089: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +/** + * Translates unity-builder's action inputs into `game-ci build` (or, for + * providerStrategy=local-system, `game-ci orchestrate`) CLI flags. + * + * One deliberate omission for the `build` path, because there is nothing + * to translate to: + * - `providerStrategy` values other than "local"/"local-system": the base + * action (without the separately-installed @game-ci/orchestrator plugin) + * already throws for these today, so throwing here isn't a regression. + * + * `unityVersion` (except "auto", which means "let the CLI auto-detect from + * ProjectSettings/ProjectVersion.txt", so it's never passed through as a + * literal flag value): mapped to `--engineVersion`, which game-ci/cli's + * engine-detection middleware now respects instead of unconditionally + * overwriting (game-ci/cli#154). Not carried into ORCHESTRATE_STRING_FLAGS - + * unverified whether `orchestrate`'s local-system path reads engineVersion + * the same way; scope this out until confirmed. + * + * Boolean inputs use GitHub Actions' own truthy/falsy string convention + * ('true'/'false', case-insensitive) - see actions/toolkit's getBooleanInput. + */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.buildCliArgs = void 0; +const STRING_FLAGS = [ + ['customImage', 'customImage'], + ['buildProfile', 'buildProfile'], + ['buildName', 'buildName'], + ['buildsPath', 'buildsPath'], + ['buildMethod', 'buildMethod'], + ['customParameters', 'customParameters'], + ['versioning', 'versioningStrategy'], + ['version', 'version'], + ['androidVersionCode', 'androidVersionCode'], + ['androidExportType', 'androidExportType'], + ['androidKeystoreName', 'androidKeystoreName'], + ['androidKeystoreBase64', 'androidKeystoreBase64'], + // Mapped to the current (non-deprecated) cli option names, even though + // their own action-input names differ. + ['androidKeystorePass', 'androidKeystorePassword'], + ['androidKeyaliasName', 'androidKeyAlias'], + ['androidKeyaliasPass', 'androidKeyAliasPassword'], + ['androidTargetSdkVersion', 'androidTargetSdkVersion'], + ['androidSymbolType', 'androidSymbolType'], + ['sshAgent', 'sshAgent'], + ['sshPublicKeysDirectoryPath', 'sshPublicKeysDirectoryPath'], + ['gitPrivateToken', 'gitPrivateToken'], + ['chownFilesTo', 'chownFilesTo'], + ['dockerCpuLimit', 'dockerCpuLimit'], + ['dockerMemoryLimit', 'dockerMemoryLimit'], + ['dockerIsolationMode', 'dockerIsolationMode'], + ['containerRegistryRepository', 'containerRegistryRepository'], + ['containerRegistryImageVersion', 'containerRegistryImageVersion'], + ['unityHubVersionOnMac', 'unityHubVersionOnMac'], + ['unityLicensingServer', 'unityLicensingServer'], + ['dockerWorkspacePath', 'dockerWorkspacePath'], +]; +const BOOLEAN_FLAGS = [ + ['manualExit', 'manualExit'], + ['enableGpu', 'enableGpu'], + ['useHostNetwork', 'useHostNetwork'], + ['runAsHostUser', 'runAsHostUser'], + ['allowDirtyBuild', 'allowDirtyBuild'], + ['cacheUnityInstallationOnMac', 'cacheUnityInstallationOnMac'], + ['skipActivation', 'skipActivation'], + ['linux64RemoveExecutableExtension', 'linux64RemoveExecutableExtension'], +]; +/** + * Flags carried forward into `game-ci orchestrate --providerStrategy=local-system`. + * + * Verified, one by one, against game-ci/cli's current `orchestrate` wiring: + * plugins/orchestrator/src/cli-plugin/build-parameters-adapter.ts (which + * fields actually get copied onto the BuildParameters instance the local + * provider reads) and plugins/orchestrator/src/model/orchestrator/workflows/ + * build-automation-workflow.ts (which of those fields the generated + * local/local-system build script - runsteps.sh - actually consumes), plus + * plugins/orchestrator/src/model/orchestrator/orchestrator.ts and + * .../options/orchestrator-folders.ts for the git-auth fields. + * + * Every `build`-only STRING_FLAGS/BOOLEAN_FLAGS entry NOT listed below was + * deliberately excluded - see the per-field notes. + */ +const ORCHESTRATE_STRING_FLAGS = [ + // build-automation-workflow.ts's runsteps.sh export block: BUILD_NAME, + // BUILD_METHOD, BUILD_PROFILE, CHOWN_FILES_TO, ANDROID_VERSION_CODE. + ['buildName', 'buildName'], + ['buildsPath', 'buildsPath'], + ['buildMethod', 'buildMethod'], + ['buildProfile', 'buildProfile'], + ['androidVersionCode', 'androidVersionCode'], + ['chownFilesTo', 'chownFilesTo'], + // Git-auth fields consumed by orchestrator.ts / orchestrator-folders.ts + // for the repo clone step, independent of provider/Docker. + ['sshAgent', 'sshAgent'], + ['sshPublicKeysDirectoryPath', 'sshPublicKeysDirectoryPath'], + ['gitPrivateToken', 'gitPrivateToken'], + // --- Excluded, with reasons --- + // customImage: build-parameters-adapter.ts assigns bp.customImage, but no + // local/local-system codepath (provider or workflow) ever reads it back - + // it is a Docker image selector with nothing to select on bare host. + // customParameters: NOT assigned by build-parameters-adapter.ts at all + // (unlike `build`'s CUSTOM_PARAMETERS env var). It only appears in the + // unrelated hot-runner-service.ts path. Currently a no-op for + // local-system, so intentionally not carried forward. + // versioning / version: the adapter has no `versioningStrategy` concept - + // it only accepts an already-resolved `buildVersion` string + // (`bp.buildVersion = options.buildVersion || '0.0.1'`), which is a + // different contract than this action's "Semantic/Tag/Custom strategy + // name" `versioning` input. No existing action input maps cleanly onto + // `--buildVersion`, so both are left out pending a real answer upstream. + // androidExportType/androidKeystoreName/androidKeystoreBase64/ + // androidKeystorePass/androidKeyaliasName/androidKeyaliasPass/ + // androidTargetSdkVersion/androidSymbolType: none of these are assigned + // by build-parameters-adapter.ts - only androidVersionCode is. Android + // signing/export beyond the version code is currently unsupported by + // `orchestrate`. + // dockerCpuLimit/dockerMemoryLimit/dockerIsolationMode/ + // containerRegistryRepository/containerRegistryImageVersion/ + // dockerWorkspacePath: Docker container concepts with no bare-host + // equivalent (containerRegistry* aren't even assigned by the adapter). + // unityHubVersionOnMac: not assigned by the adapter at all. + // unityLicensingServer: per the adapter's own comment, this "flows + // opaquely through BuildParameters' index signature ... orchestrator + // does not read them" - i.e. it is a no-op for `orchestrate` today; + // licensing-server activation is `game-ci activate`'s concern, out of + // scope here (matches this file's existing unityVersion/activation + // scope boundary). +]; +const ORCHESTRATE_BOOLEAN_FLAGS = [ + // build-automation-workflow.ts's runsteps.sh export block: MANUAL_EXIT. + ['manualExit', 'manualExit'], + // pre-build-cleanup-service.ts reads this for the dirty-branch check, + // independent of provider. + ['allowDirtyBuild', 'allowDirtyBuild'], + // Explicitly documented upstream (orchestrator-options-plugin.ts, + // build-parameters-adapter.ts) as "only meaningful for + // providerStrategy=local(-system)", and exported as SKIP_ACTIVATION in + // runsteps.sh. + ['skipActivation', 'skipActivation'], + // --- Excluded, with reasons --- + // enableGpu: not assigned anywhere in build-parameters-adapter.ts or the + // orchestrator model - a real, currently-unfilled gap versus `build`'s + // GPU passthrough, not something to silently pretend to support. + // useHostNetwork/runAsHostUser: Docker networking/uid-mapping concepts; + // not assigned by the adapter, and runAsHostUser is meaningless by + // construction on a bare host process that already runs as that host + // user. + // cacheUnityInstallationOnMac: build-parameters-adapter.ts DOES assign + // bp.cacheUnityInstallationOnMac, but nothing downstream (no provider, + // no workflow) ever reads it back - it's a currently-dead field for + // `orchestrate`, so it is not carried forward despite being Mac-native + // (i.e. not actually Docker-only) in principle. + // linux64RemoveExecutableExtension: not assigned by the adapter at all. +]; +/** + * New orchestrator-only inputs surfaced for providerStrategy=local-system. + * All four are confirmed both registered as `orchestrate` CLI options + * (orchestrator-options-plugin.ts) and consumed by + * build-parameters-adapter.ts. `middlewarePipeline` is available in the same + * places but deliberately deferred - its expected value shape is not yet + * documented/stable enough to lock into this action's public input surface. + */ +const ORCHESTRATE_ONLY_STRING_FLAGS = [ + ['engineLaunchWrapper', 'engineLaunchWrapper'], + ['localCacheMode', 'localCacheMode'], +]; +const ORCHESTRATE_ONLY_BOOLEAN_FLAGS = [ + ['enableBuildRetry', 'enableBuildRetry'], + ['localCacheEnabled', 'localCacheEnabled'], + ['localCacheLibrary', 'localCacheLibrary'], + ['localCacheLfs', 'localCacheLfs'], +]; +function isTruthy(value) { + return value.trim().toLowerCase() === 'true'; +} +function pushStringFlags(args, getInput, flags) { + for (const [input, flag] of flags) { + const value = getInput(input); + // "--flag value" as two argv tokens is ambiguous when value itself + // starts with "-" (e.g. customParameters="-profile Foo -someBoolean"): + // yargs sees the next token starting with "-" and assumes the flag + // takes no value, leaving the value string to be mis-parsed as its own + // (partly alias-colliding) short-flag cluster. "--flag=value" glues + // them into one token, which is unambiguous. + if (value) + args.push(`--${flag}=${value}`); + } +} +function pushBooleanFlags(args, getInput, flags) { + for (const [input, flag] of flags) { + const value = getInput(input); + if (value && isTruthy(value)) + args.push(`--${flag}`); + } +} +function buildCliArgs({ getInput }) { + const providerStrategy = getInput('providerStrategy') || 'local'; + if (providerStrategy === 'local-system') { + return buildOrchestrateArgs(getInput); + } + if (providerStrategy !== 'local') { + throw new Error(`Provider strategy "${providerStrategy}" is not supported by this thin wrapper. ` + + "Use providerStrategy=local, or invoke game-ci/cli's `orchestrate` command directly " + + 'for remote builds.'); + } + const args = ['build']; + const projectPath = getInput('projectPath'); + if (projectPath) + args.push(projectPath); + const targetPlatform = getInput('targetPlatform'); + if (!targetPlatform) { + throw new Error('targetPlatform is required.'); + } + args.push(`--targetPlatform=${targetPlatform}`); + const unityVersion = getInput('unityVersion'); + if (unityVersion && unityVersion !== 'auto') { + args.push(`--engineVersion=${unityVersion}`); + } + pushStringFlags(args, getInput, STRING_FLAGS); + pushBooleanFlags(args, getInput, BOOLEAN_FLAGS); + return args; +} +exports.buildCliArgs = buildCliArgs; +function buildOrchestrateArgs(getInput) { + const args = ['orchestrate']; + const projectPath = getInput('projectPath'); + if (projectPath) + args.push(projectPath); + const targetPlatform = getInput('targetPlatform'); + if (!targetPlatform) { + throw new Error('targetPlatform is required.'); + } + args.push(`--targetPlatform=${targetPlatform}`); + args.push('--providerStrategy=local-system'); + pushStringFlags(args, getInput, ORCHESTRATE_STRING_FLAGS); + pushStringFlags(args, getInput, ORCHESTRATE_ONLY_STRING_FLAGS); + pushBooleanFlags(args, getInput, ORCHESTRATE_BOOLEAN_FLAGS); + pushBooleanFlags(args, getInput, ORCHESTRATE_ONLY_BOOLEAN_FLAGS); + return args; +} + + +/***/ }), + +/***/ 83431: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.downloadCli = exports.resolveLatestTag = exports.binaryNameFor = void 0; +const fs = __importStar(__nccwpck_require__(93977)); +const os = __importStar(__nccwpck_require__(70612)); +const path = __importStar(__nccwpck_require__(49411)); +const cache = __importStar(__nccwpck_require__(27799)); +const core = __importStar(__nccwpck_require__(42186)); +const exec = __importStar(__nccwpck_require__(71514)); +const CLI_REPO = 'game-ci/cli'; +/** The binary's name once extracted - matches release-cli.yml's per-platform `binary` matrix value. */ +function binaryNameFor(platform) { + return platform === 'win32' ? 'game-ci.exe' : 'game-ci'; +} +exports.binaryNameFor = binaryNameFor; +/** + * Resolves the "latest" alias to the actual release tag it currently + * points to, via a small GitHub API call - not the release-asset + * redirect, which never reveals the concrete tag it landed on. This is + * what makes caching "latest" possible at all: caching under the literal + * string "latest" would silently pin every job to whatever version + * happened to be current on the first cache write, but caching under the + * *resolved* tag self-invalidates the moment a new release ships (a new + * tag is a cache miss by construction), while still hitting cache on + * every run in between. It's also what pins install.sh (below) to a + * specific, immutable version rather than "latest" - install.sh doesn't + * know how to resolve "latest" itself, by design, since which tag it's + * fetched at IS the version it installs. + */ +async function resolveLatestTag(fetchFn = fetch) { + const headers = { Accept: 'application/vnd.github+json' }; + // Actions runners share IPs across many concurrent jobs from unrelated + // repos/orgs, so the unauthenticated rate limit (60 req/hour per IP) gets + // exhausted by traffic this job never generated. The default GITHUB_TOKEN + // reads public repo data (game-ci/cli's releases) fine regardless of which + // repo the workflow runs in, and lifts the limit to 5000 req/hour. + const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN; + if (token) + headers.Authorization = `Bearer ${token}`; + const response = await fetchFn(`https://api.github.com/repos/${CLI_REPO}/releases/latest`, { + headers, + }); + if (!response.ok) { + throw new Error(`Failed to resolve the latest game-ci CLI release: GitHub API returned ${response.status}.`); + } + const body = (await response.json()); + if (!body.tag_name) { + throw new Error('Failed to resolve the latest game-ci CLI release: response had no tag_name.'); + } + return body.tag_name; +} +exports.resolveLatestTag = resolveLatestTag; +function cacheDirFor(version) { + return path.join(os.tmpdir(), 'game-ci-cli-cache', version); +} +/** + * Includes platform+arch, not just version: darwin-x64 and darwin-arm64 + * (or any two architectures on the same OS) both extract to a binary + * named plain "game-ci", so a key built from version+binaryName alone + * (this cache's previous scheme) can't tell them apart and would let one + * architecture's binary get restored onto the other's runner. + */ +function cacheKeyFor(version) { + return `game-ci-cli-${version}-${process.platform}-${process.arch}`; +} +async function restoreFromCache(version) { + if (!cache.isFeatureAvailable()) + return null; + const cacheDir = cacheDirFor(version); + try { + const hitKey = await cache.restoreCache([cacheDir], cacheKeyFor(version)); + if (!hitKey) + return null; + const binaryPath = path.join(cacheDir, binaryNameFor(process.platform)); + // Cache restore doesn't guarantee the executable bit survives. + if (process.platform !== 'win32') + await fs.chmod(binaryPath, 0o755); + core.info(`Restored game-ci CLI ${version} from cache`); + return binaryPath; + } + catch (error) { + core.warning(`Failed to restore game-ci CLI from cache: ${error.message}`); + return null; + } +} +async function saveToCache(version) { + if (!cache.isFeatureAvailable()) + return; + try { + await cache.saveCache([cacheDirFor(version)], cacheKeyFor(version)); + } + catch (error) { + // A cache miss on save (e.g. another concurrent job already saved this + // key) isn't fatal - the install itself already succeeded. + core.warning(`Failed to save game-ci CLI to cache: ${error.message}`); + } +} +/** + * Downloads (or reuses a cached copy of) the game-ci CLI release archive + * matching the current runner, extracts it, and returns the path to the + * binary inside. + * + * The actual install mechanics - platform/arch detection, archive format, + * download, extraction - live in exactly one place: game-ci/cli's own + * scripts/install.sh, fetched and run at the resolved version's tag. That + * script is what every engine wrapper (this one today, others later) + * delegates to, so a bugfix or a new supported platform ships once, there, + * and every wrapper picks it up on its next run with no code change of its + * own - see game-ci/cli#187. GitHub Actions caching stays here, in the + * wrapper: it's an Actions-only service with no shell-callable API, so + * install.sh has no way to drive it itself. + * + * Every version - including "latest" - is cached via @actions/cache + * (GitHub's cache service), so repeat jobs on ephemeral, GitHub-hosted + * runners skip the archive download entirely. "latest" is resolved to its + * concrete tag first (see resolveLatestTag) and cached under *that*, not + * under the literal string "latest" - a real new release is a fresh tag, + * so it's a cache miss by construction, never a stale hit. + * + * @param version A release tag (e.g. "v0.1.0"), or "latest". + */ +async function downloadCli(version) { + const resolvedVersion = version === 'latest' ? await resolveLatestTag() : version; + const cached = await restoreFromCache(resolvedVersion); + if (cached) + return cached; + const destDir = cacheDirFor(resolvedVersion); + await fs.mkdir(destDir, { recursive: true }); + const installScriptUrl = `https://raw.githubusercontent.com/${CLI_REPO}/${resolvedVersion}/scripts/install.sh`; + core.info(`Installing game-ci CLI ${resolvedVersion} via ${installScriptUrl}`); + // Fetched and written to a file, then run as `bash `, + // rather than piped straight into a `bash -c '... "$0" ...'` wrapper: a + // curl-into-bash one-liner needs resolvedVersion/destDir interpolated + // into the -c script text (even safely, as quoted positional params), + // which is exactly the shape CodeQL's uncontrolled-command-line query + // flags. Passing a real file path plus a plain string[] of args - the + // same pattern this file's own callers already use for the CLI binary + // itself - has no such shell-text construction step to flag at all. + const scriptResponse = await fetch(installScriptUrl); + if (!scriptResponse.ok) { + throw new Error(`Failed to fetch install.sh for game-ci CLI ${resolvedVersion}: ` + + `GitHub returned ${scriptResponse.status} for ${installScriptUrl}.`); + } + const scriptPath = path.join(os.tmpdir(), `game-ci-install-${resolvedVersion.replace(/[^\w.-]/g, '_')}.sh`); + await fs.writeFile(scriptPath, await scriptResponse.text(), { mode: 0o755 }); + let stdout = ''; + await exec.exec('bash', [scriptPath, resolvedVersion, destDir], { + listeners: { + stdout: (data) => { + stdout += data.toString(); + }, + }, + }); + // install.sh writes progress to stderr and only the final binary path to + // stdout, but take the last non-empty line regardless - defensive against + // any stray stdout noise from a future version of the script. Walked + // backwards by index rather than toReversed()/reverse() - toReversed() + // isn't available on this project's target Node version, and reverse() + // mutates in place, which unicorn/no-array-reverse flags even when the + // array being mutated is a fresh one from map(). + const lines = stdout.split('\n').map((line) => line.trim()); + let binaryPath; + for (let i = lines.length - 1; i >= 0; i -= 1) { + if (lines[i]) { + binaryPath = lines[i]; + break; + } + } + if (!binaryPath) { + throw new Error(`Failed to install the game-ci CLI ${resolvedVersion}: install.sh produced no output.`); + } + await saveToCache(resolvedVersion); + return binaryPath; +} +exports.downloadCli = downloadCli; + + +/***/ }), + /***/ 94822: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { @@ -29,2593 +483,93 @@ var __importStar = (this && this.__importStar) || function (mod) { __setModuleDefault(result, mod); return result; }; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.runMain = void 0; +exports.run = void 0; +// Thin wrapper: this action installs and shells out to the game-ci CLI +// (game-ci/cli's `build` command) as a subprocess, so the exact same code +// path this runs in CI also runs when a developer invokes the CLI directly +// on their own machine. See game-ci/roadmap#11 (workstream 2), and the +// matching rewrite already shipped for game-ci/unity-activate. +// +// Unity credentials (UNITY_EMAIL, UNITY_PASSWORD, UNITY_SERIAL, +// UNITY_LICENSE, UNITY_LICENSING_SERVER) are read by the CLI itself from +// its own process environment - never passed as CLI arguments, since argv +// can leak through process listings and command-logging. +const fs = __importStar(__nccwpck_require__(87561)); +const path = __importStar(__nccwpck_require__(49411)); const core = __importStar(__nccwpck_require__(42186)); -const model_1 = __nccwpck_require__(41359); -const cli_1 = __nccwpck_require__(55651); -const mac_builder_1 = __importDefault(__nccwpck_require__(39364)); -const platform_setup_1 = __importDefault(__nccwpck_require__(64423)); -const plugin_1 = __nccwpck_require__(67270); -// Exported so tests can drive the lifecycle directly without depending on -// vitest's module re-loading (which changed in vitest 4). -async function runMain() { +const exec = __importStar(__nccwpck_require__(71514)); +const build_args_1 = __nccwpck_require__(10089); +const download_cli_1 = __nccwpck_require__(83431); +const resolve_project_path_1 = __nccwpck_require__(2833); +async function run() { try { - if (cli_1.Cli.InitCliMode()) { - await cli_1.Cli.RunCli(); - return; - } - model_1.Action.checkCompatibility(); - model_1.Cache.verify(); - const { workspace, actionFolder } = model_1.Action; - const buildParameters = await model_1.BuildParameters.create(); - const baseImage = new model_1.ImageTag(buildParameters); - // Load optional plugin. The default implementation is @game-ci/orchestrator. - const plugin = await (0, plugin_1.loadPlugin)(); - await plugin?.initialize(buildParameters, workspace); - let exitCode = -1; - if (plugin?.canHandleBuild()) { - // Plugin handles the build entirely (remote providers, hot runner, test workflows) - const result = await plugin.handleBuild(baseImage.toString()); - exitCode = result.fallbackToLocal - ? await runLocalBuild(buildParameters, baseImage, workspace, actionFolder, plugin) - : result.exitCode; - } - else if (buildParameters.providerStrategy === 'local') { - exitCode = await runLocalBuild(buildParameters, baseImage, workspace, actionFolder, plugin); - } - else { - throw new Error(`Provider strategy "${buildParameters.providerStrategy}" requires @game-ci/orchestrator. ` + - 'Install it via the game-ci/orchestrator action, or use providerStrategy=local.'); - } - // Set core outputs - await model_1.Output.setBuildVersion(buildParameters.buildVersion); - await model_1.Output.setAndroidVersionCode(buildParameters.androidVersionCode); - await model_1.Output.setEngineExitCode(exitCode); - // Plugin handles post-build (artifacts, archiving, retention) - await plugin?.handlePostBuild(exitCode); + const cliVersion = core.getInput('cliVersion') || 'latest'; + const cliPath = await (0, download_cli_1.downloadCli)(cliVersion); + const projectPath = (0, resolve_project_path_1.resolveProjectPath)({ + input: core.getInput('projectPath'), + existsSync: fs.existsSync, + joinPath: path.join, + }); + const args = (0, build_args_1.buildCliArgs)({ + getInput: (name) => (name === 'projectPath' ? projectPath : core.getInput(name)), + }); + // CodeQL flags this line (js/command-line-injection) since args + // ultimately derives from Action inputs. Verified false positive: args + // is an array of discrete argv entries, not a concatenated shell + // string, and @actions/exec's toolrunner.js passes it straight to + // child_process.spawn(fileName, args, options) - verified by reading + // node_modules/@actions/exec/lib/toolrunner.js - never a shell string, + // never shell-parsed. CodeQL's static analysis can't see through + // @actions/exec's internals to confirm that. This comment does not + // suppress the alert (GitHub Code Scanning's default setup has no + // inline-suppression-comment mechanism - that was legacy LGTM.com + // behavior); the alert needs dismissing via the Security tab/API. + const exitCode = await exec.exec(cliPath, args, { ignoreReturnCode: true }); + // Matches the original action's engineExitCode output: 0 on success, + // otherwise the exit code of whichever step (activation or build) - or, + // for providerStrategy=local-system, whichever stage of the + // orchestrator's setup/build/cleanup workflow - failed. Either way it's + // exactly what the CLI subprocess itself exits with, so no special + // handling is needed here for the orchestrate path. + core.setOutput('engineExitCode', exitCode); if (exitCode !== 0) { core.setFailed(`Build failed with exit code ${exitCode}`); } + // buildVersion/androidVersionCode are set by the CLI subprocess itself + // via @actions/core, which writes directly to the file at + // $GITHUB_OUTPUT - inherited by the child process, so no extra + // plumbing is needed here to forward them. } catch (error) { core.setFailed(error.message); } } -exports.runMain = runMain; -async function runLocalBuild(buildParameters, baseImage, workspace, actionFolder, plugin) { - await plugin?.beforeLocalBuild(workspace); - await platform_setup_1.default.setup(buildParameters, actionFolder); - const exitCode = process.platform === 'darwin' - ? await mac_builder_1.default.run(actionFolder) - : await model_1.Docker.run(baseImage.toString(), { - workspace, - actionFolder, - ...buildParameters, - }); - await plugin?.afterLocalBuild(workspace, exitCode); - return exitCode; -} -// Auto-run when this module is the entry point. Tests import the file via -// `await import('./index')` purely to register the mock factories and then -// call `runMain()` directly. +exports.run = run; if (process.env.NODE_ENV !== 'test') { - runMain(); + run(); } /***/ }), -/***/ 89088: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const node_path_1 = __importDefault(__nccwpck_require__(49411)); -class Action { - static get supportedPlatforms() { - return ['linux', 'win32', 'darwin']; - } - static get isRunningLocally() { - return process.env.RUNNER_WORKSPACE === undefined; - } - static get isRunningFromSource() { - return node_path_1.default.basename(__dirname) === 'model'; - } - static get canonicalName() { - if (Action.isRunningFromSource) { - return node_path_1.default.basename(node_path_1.default.dirname(node_path_1.default.join(node_path_1.default.dirname(__filename), '/..'))); - } - return 'unity-builder'; - } - static get rootFolder() { - if (Action.isRunningFromSource) { - return node_path_1.default.dirname(node_path_1.default.dirname(node_path_1.default.dirname(__filename))); - } - return node_path_1.default.dirname(node_path_1.default.dirname(__filename)); - } - static get actionFolder() { - return `${Action.rootFolder}/dist`; - } - static get workspace() { - return process.env.GITHUB_WORKSPACE; - } - static checkCompatibility() { - const currentPlatform = process.platform; - if (!Action.supportedPlatforms.includes(currentPlatform)) { - throw new Error(`Currently ${currentPlatform}-platform is not supported`); - } - } -} -exports["default"] = Action; - - -/***/ }), - -/***/ 43059: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core = __importStar(__nccwpck_require__(42186)); -const semver = __importStar(__nccwpck_require__(11383)); -class AndroidVersioning { - static determineVersionCode(version, inputVersionCode) { - if (inputVersionCode === '') { - return AndroidVersioning.versionToVersionCode(version); - } - return inputVersionCode; - } - static versionToVersionCode(version) { - if (version === 'none') { - core.info(`Versioning strategy is set to ${version}, so android version code should not be applied.`); - return '0'; - } - const parsedVersion = semver.parse(version); - if (!parsedVersion) { - core.warning(`Could not parse "${version}" to semver, defaulting android version code to 1`); - return '1'; - } - // The greatest value Google Plays allows is 2100000000. - // Allow for 3 patch digits, 3 minor digits and 3 major digits. - const versionCode = parsedVersion.major * 1000000 + parsedVersion.minor * 1000 + parsedVersion.patch; - if (versionCode >= 2050000000) { - throw new Error(`Generated versionCode ${versionCode} is dangerously close to the maximum allowed number 2100000000. Consider a different versioning scheme to be able to continue updating your application.`); - } - core.info(`Using android versionCode ${versionCode}`); - return versionCode.toString(); - } - static determineSdkManagerParameters(targetSdkVersion) { - const parsedVersion = Number.parseInt(targetSdkVersion.slice(-2), 10); - return Number.isNaN(parsedVersion) ? '' : `platforms;android-${parsedVersion}`; - } -} -exports["default"] = AndroidVersioning; - - -/***/ }), - -/***/ 80787: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const nanoid_1 = __nccwpck_require__(17592); -const android_versioning_1 = __importDefault(__nccwpck_require__(43059)); -const input_1 = __importDefault(__nccwpck_require__(91933)); -const platform_1 = __importDefault(__nccwpck_require__(9707)); -const unity_versioning_1 = __importDefault(__nccwpck_require__(17146)); -const versioning_1 = __importDefault(__nccwpck_require__(88729)); -const git_repo_1 = __nccwpck_require__(24271); -const github_cli_1 = __nccwpck_require__(44990); -const cli_1 = __nccwpck_require__(55651); -const github_1 = __importDefault(__nccwpck_require__(83654)); -const core = __importStar(__nccwpck_require__(42186)); -class BuildParameters { - editorVersion; - customImage; - unitySerial; - unityLicensingServer; - skipActivation; - runnerTempPath; - targetPlatform; - projectPath; - buildProfile; - buildName; - buildPath; - buildFile; - buildMethod; - buildVersion; - manualExit; - enableGpu; - androidVersionCode; - androidKeystoreName; - androidKeystoreBase64; - androidKeystorePass; - androidKeyaliasName; - androidKeyaliasPass; - androidTargetSdkVersion; - androidSdkManagerParameters; - androidExportType; - androidSymbolType; - dockerCpuLimit; - dockerMemoryLimit; - dockerIsolationMode; - containerRegistryRepository; - containerRegistryImageVersion; - customParameters; - useHostNetwork; - sshAgent; - sshPublicKeysDirectoryPath; - providerStrategy; - gitPrivateToken; - runAsHostUser; - chownFilesTo; - runNumber; - branch; - githubRepo; - gitSha; - logId; - buildGuid; - buildPlatform; - isCliMode; - cacheUnityInstallationOnMac; - unityHubVersionOnMac; - dockerWorkspacePath; - static async create() { - const buildFile = this.parseBuildFile(input_1.default.buildName, input_1.default.targetPlatform, input_1.default.androidExportType); - const editorVersion = unity_versioning_1.default.determineUnityVersion(input_1.default.projectPath, input_1.default.unityVersion); - const buildVersion = await versioning_1.default.determineBuildVersion(input_1.default.versioningStrategy, input_1.default.specifiedVersion); - const androidVersionCode = android_versioning_1.default.determineVersionCode(buildVersion, input_1.default.androidVersionCode); - const androidSdkManagerParameters = android_versioning_1.default.determineSdkManagerParameters(input_1.default.androidTargetSdkVersion); - const androidSymbolExportType = input_1.default.androidSymbolType; - if (platform_1.default.isAndroid(input_1.default.targetPlatform)) { - switch (androidSymbolExportType) { - case 'none': - case 'public': - case 'debugging': - break; - default: - throw new Error(`Invalid androidSymbolType: ${input_1.default.androidSymbolType}. Must be one of: none, public, debugging`); - } - } - let unitySerial = ''; - if (input_1.default.unityLicensingServer === '') { - if (!input_1.default.unitySerial && github_1.default.githubInputEnabled) { - // No serial was present, so it is a personal license that we need to convert - if (!input_1.default.unityLicense) { - throw new Error(`Missing Unity License File and no Serial was found. If this - is a personal license, make sure to follow the activation - steps and set the UNITY_LICENSE GitHub secret or enter a Unity - serial number inside the UNITY_SERIAL GitHub secret.`); - } - unitySerial = this.getSerialFromLicenseFile(input_1.default.unityLicense); - } - else { - unitySerial = input_1.default.unitySerial; - } - } - if (unitySerial !== undefined && unitySerial.length === 27) { - core.setSecret(unitySerial); - core.setSecret(`${unitySerial.slice(0, -4)}XXXX`); - } - const providerStrategy = input_1.default.getInput('providerStrategy') || (cli_1.Cli.isCliMode ? 'aws' : 'local'); - return { - editorVersion, - customImage: input_1.default.customImage, - unitySerial, - unityLicensingServer: input_1.default.unityLicensingServer, - skipActivation: input_1.default.skipActivation, - runnerTempPath: input_1.default.runnerTempPath, - targetPlatform: input_1.default.targetPlatform, - projectPath: input_1.default.projectPath, - buildProfile: input_1.default.buildProfile, - buildName: input_1.default.buildName, - buildPath: `${input_1.default.buildsPath}/${input_1.default.targetPlatform}`, - buildFile, - buildMethod: input_1.default.buildMethod, - buildVersion, - manualExit: input_1.default.manualExit, - enableGpu: input_1.default.enableGpu, - androidVersionCode, - androidKeystoreName: input_1.default.androidKeystoreName, - androidKeystoreBase64: input_1.default.androidKeystoreBase64, - androidKeystorePass: input_1.default.androidKeystorePass, - androidKeyaliasName: input_1.default.androidKeyaliasName, - androidKeyaliasPass: input_1.default.androidKeyaliasPass, - androidTargetSdkVersion: input_1.default.androidTargetSdkVersion, - androidSdkManagerParameters, - androidExportType: input_1.default.androidExportType, - androidSymbolType: androidSymbolExportType, - customParameters: input_1.default.customParameters, - useHostNetwork: input_1.default.useHostNetwork, - sshAgent: input_1.default.sshAgent, - sshPublicKeysDirectoryPath: input_1.default.sshPublicKeysDirectoryPath, - gitPrivateToken: input_1.default.gitPrivateToken ?? (await github_cli_1.GithubCliReader.GetGitHubAuthToken()), - runAsHostUser: input_1.default.runAsHostUser, - chownFilesTo: input_1.default.chownFilesTo, - dockerCpuLimit: input_1.default.dockerCpuLimit, - dockerMemoryLimit: input_1.default.dockerMemoryLimit, - dockerIsolationMode: input_1.default.dockerIsolationMode, - containerRegistryRepository: input_1.default.containerRegistryRepository, - containerRegistryImageVersion: input_1.default.containerRegistryImageVersion, - providerStrategy, - buildPlatform: providerStrategy !== 'local' ? 'linux' : process.platform, - runNumber: input_1.default.runNumber, - branch: input_1.default.branch.replace('/head', '') || (await git_repo_1.GitRepoReader.GetBranch()), - githubRepo: (input_1.default.githubRepo ?? (await git_repo_1.GitRepoReader.GetRemote())) || 'game-ci/unity-builder', - gitSha: input_1.default.gitSha, - logId: (0, nanoid_1.customAlphabet)('0123456789abcdefghijklmnopqrstuvwxyz', 9)(), - buildGuid: `${input_1.default.runNumber}-${input_1.default.targetPlatform.toLowerCase().replace('standalone', '')}-${(0, nanoid_1.customAlphabet)('0123456789abcdefghijklmnopqrstuvwxyz', 4)()}`, - isCliMode: cli_1.Cli.isCliMode, - cacheUnityInstallationOnMac: input_1.default.cacheUnityInstallationOnMac, - unityHubVersionOnMac: input_1.default.unityHubVersionOnMac, - dockerWorkspacePath: input_1.default.dockerWorkspacePath, - }; - } - static parseBuildFile(filename, platform, androidExportType) { - if (platform_1.default.isWindows(platform)) { - return `${filename}.exe`; - } - if (platform_1.default.isAndroid(platform)) { - switch (androidExportType) { - case `androidPackage`: - return `${filename}.apk`; - case `androidAppBundle`: - return `${filename}.aab`; - case `androidStudioProject`: - return filename; - default: - throw new Error(`Unknown Android Export Type: ${androidExportType}. Must be one of androidPackage for apk, androidAppBundle for aab, androidStudioProject for android project`); - } - } - return filename; - } - static getSerialFromLicenseFile(license) { - const startKey = ``; - const startIndex = license.indexOf(startKey) + startKey.length; - if (startIndex < 0) { - throw new Error(`License File was corrupted, unable to locate serial`); - } - const endIndex = license.indexOf(endKey, startIndex); - // Slice off the first 4 characters as they are garbage values - return Buffer.from(license.slice(startIndex, endIndex), 'base64').toString('binary').slice(4); - } -} -exports["default"] = BuildParameters; - - -/***/ }), - -/***/ 97134: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core = __importStar(__nccwpck_require__(42186)); -const node_fs_1 = __importDefault(__nccwpck_require__(87561)); -const action_1 = __importDefault(__nccwpck_require__(89088)); -const project_1 = __importDefault(__nccwpck_require__(88666)); -class Cache { - static verify() { - if (!node_fs_1.default.existsSync(project_1.default.libraryFolder)) { - this.notifyAboutCachingPossibility(); - } - } - static notifyAboutCachingPossibility() { - if (action_1.default.isRunningLocally) { - return; - } - core.warning(` - Library folder does not exist. - Consider setting up caching to speed up your workflow, - if this is not your first build. - `); - } -} -exports["default"] = Cache; - - -/***/ }), - -/***/ 85301: +/***/ 2833: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CliFunction = exports.CliFunctionsRepository = void 0; -class CliFunctionsRepository { - static targets = []; - static PushCliFunction(target, propertyKey, descriptor, key, description) { - CliFunctionsRepository.targets.push({ - target, - propertyKey, - descriptor, - key, - description, - }); - } - static GetCliFunctions(key) { - const results = CliFunctionsRepository.targets.find((x) => x.key === key); - if (results === undefined || results.length === 0) { - throw new Error(`no CLI mode found for ${key}`); - } - return results; - } - static GetAllCliModes() { - return CliFunctionsRepository.targets.map((x) => { - return { - key: x.key, - description: x.description, - }; - }); - } - // eslint-disable-next-line no-unused-vars - static PushCliFunctionSource(cliFunction) { } +exports.resolveProjectPath = void 0; +function resolveProjectPath({ input, existsSync, joinPath, }) { + if (input) + return input.replace(/\/$/, ''); + const hasTestProject = existsSync(joinPath('test-project', 'ProjectSettings', 'ProjectVersion.txt')); + const hasRootProject = existsSync(joinPath('ProjectSettings', 'ProjectVersion.txt')); + if (hasTestProject && !hasRootProject) + return 'test-project'; + return ''; } -exports.CliFunctionsRepository = CliFunctionsRepository; -function CliFunction(key, description) { - return (target, propertyKey, descriptor) => { - CliFunctionsRepository.PushCliFunction(target, propertyKey, descriptor, key, description); - }; -} -exports.CliFunction = CliFunction; - - -/***/ }), - -/***/ 55651: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Cli = void 0; -const commander_ts_1 = __nccwpck_require__(40451); -const __1 = __nccwpck_require__(41359); -const core = __importStar(__nccwpck_require__(42186)); -const action_yaml_1 = __nccwpck_require__(11091); -const cli_functions_repository_1 = __nccwpck_require__(85301); -class Cli { - static options; - static get isCliMode() { - return Cli.options !== undefined && Cli.options.mode !== undefined && Cli.options.mode !== ''; - } - static query(key, alternativeKey) { - if (Cli.options && Cli.options[key] !== undefined) { - return Cli.options[key]; - } - if (Cli.options && alternativeKey && Cli.options[alternativeKey] !== undefined) { - return Cli.options[alternativeKey]; - } - return; - } - static InitCliMode() { - const program = new commander_ts_1.Command(); - program.version('0.0.1'); - const actionYamlReader = new action_yaml_1.ActionYamlReader(); - const properties = Object.getOwnPropertyNames(__1.Input).filter((p) => p !== 'length' && p !== 'prototype' && p !== 'name'); - for (const element of properties) { - program.option(`--${element} <${element}>`, actionYamlReader.GetActionYamlValue(element)); - } - program.option('-m, --mode ', cli_functions_repository_1.CliFunctionsRepository.GetAllCliModes() - .map((x) => `${x.key} (${x.description})`) - .join(` | `)); - program.option('--populateOverride ', 'should use override query to pull input false by default'); - program.option('--cachePushFrom ', 'cache push from source folder'); - program.option('--cachePushTo ', 'cache push to caching folder'); - program.option('--artifactName ', 'caching artifact name'); - program.option('--select