require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 94822: /***/ (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_path_1 = __importDefault(__nccwpck_require__(49411)); 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 orchestrator_plugin_1 = __nccwpck_require__(2075); async function runMain() { try { if (cli_1.Cli.InitCliMode()) { await cli_1.Cli.RunCli(); return; } model_1.Action.checkCompatibility(); model_1.Cache.verify(); const enterprise = await (0, orchestrator_plugin_1.loadEnterpriseServices)(); // Always configure git environment for CI reliability enterprise?.BuildReliabilityService.configureGitEnvironment(); const { workspace, actionFolder } = model_1.Action; const buildParameters = await model_1.BuildParameters.create(); // If a test suite path is provided, use the test workflow engine // instead of the standard build execution path if (buildParameters.testSuitePath) { core.info('[TestWorkflow] Test suite path detected, using test workflow engine'); const results = await enterprise?.TestWorkflowService.executeTestSuite(buildParameters.testSuitePath, buildParameters); let totalFailed = 0; for (const result of results || []) { totalFailed += result.failed; } if (totalFailed > 0) { core.setFailed(`Test workflow completed with ${totalFailed} failure(s)`); } else { core.info('[TestWorkflow] All test runs passed'); } return; } const baseImage = new model_1.ImageTag(buildParameters); // Pre-build reliability checks if (buildParameters.gitIntegrityCheck) { core.info('Running git integrity checks...'); const isHealthy = enterprise?.BuildReliabilityService.checkGitIntegrity(workspace); enterprise?.BuildReliabilityService.cleanStaleLockFiles(workspace); enterprise?.BuildReliabilityService.validateSubmoduleBackingStores(workspace); if (buildParameters.cleanReservedFilenames) { enterprise?.BuildReliabilityService.cleanReservedFilenames(buildParameters.projectPath); } if (!isHealthy && buildParameters.gitAutoRecover) { core.info('Git corruption detected, attempting automatic recovery...'); const recovered = enterprise?.BuildReliabilityService.recoverCorruptedRepo(workspace); if (!recovered) { core.warning('Automatic recovery failed. Build may encounter issues.'); } } } else if (buildParameters.cleanReservedFilenames) { // cleanReservedFilenames can run independently of gitIntegrityCheck enterprise?.BuildReliabilityService.cleanReservedFilenames(buildParameters.projectPath); } let exitCode = -1; // Hot runner path: attempt to use a persistent Unity editor instance if (buildParameters.hotRunnerEnabled) { core.info('[HotRunner] Hot runner mode enabled, attempting hot build...'); const hotRunnerConfig = { enabled: true, transport: buildParameters.hotRunnerTransport, host: buildParameters.hotRunnerHost, port: buildParameters.hotRunnerPort, healthCheckInterval: buildParameters.hotRunnerHealthInterval, maxIdleTime: buildParameters.hotRunnerMaxIdle, maxJobsBeforeRecycle: 0, // no automatic recycle by job count }; if (!enterprise?.HotRunnerService) { throw new Error('[HotRunner] Enterprise services required for hot runner mode'); } const hotRunnerService = new enterprise.HotRunnerService(); try { await hotRunnerService.initialize(hotRunnerConfig); const result = await hotRunnerService.submitBuild(buildParameters, (output) => { core.info(output); }); exitCode = result.exitCode; core.info(`[HotRunner] Build completed with exit code ${exitCode}`); await hotRunnerService.shutdown(); } catch (hotRunnerError) { await hotRunnerService.shutdown(); if (buildParameters.hotRunnerFallbackToCold) { core.warning(`[HotRunner] Hot runner failed: ${hotRunnerError.message}. Falling back to cold build.`); exitCode = await runColdBuild(buildParameters, baseImage, workspace, actionFolder); } else { throw hotRunnerError; } } } else if (buildParameters.providerStrategy === 'local') { core.info('Building locally'); // Child workspace isolation - restore cached workspace before any other setup let childWorkspaceConfig; if (buildParameters.childWorkspacesEnabled && buildParameters.childWorkspaceName) { const ChildWorkspaceService = await enterprise?.loadChildWorkspaceService(); const cacheRoot = buildParameters.childWorkspaceCacheRoot || node_path_1.default.join(buildParameters.runnerTempPath || process.env.RUNNER_TEMP || '', 'game-ci-workspaces'); childWorkspaceConfig = ChildWorkspaceService?.buildConfig({ childWorkspacesEnabled: buildParameters.childWorkspacesEnabled, childWorkspaceName: buildParameters.childWorkspaceName, childWorkspaceCacheRoot: cacheRoot, childWorkspacePreserveGit: buildParameters.childWorkspacePreserveGit, childWorkspaceSeparateLibrary: buildParameters.childWorkspaceSeparateLibrary, }); const projectFullPath = node_path_1.default.join(workspace, buildParameters.projectPath); const restored = ChildWorkspaceService?.initializeWorkspace(projectFullPath, childWorkspaceConfig); core.info(`Child workspace "${buildParameters.childWorkspaceName}": ${restored ? 'restored from cache' : 'starting fresh'}`); // Log workspace size for resource tracking const size = ChildWorkspaceService?.getWorkspaceSize(projectFullPath); core.info(`Child workspace size after restore: ${size}`); } // Submodule profile initialization if (buildParameters.submoduleProfilePath) { core.info('Initializing submodules from profile...'); const SubmoduleProfileService = await enterprise?.loadSubmoduleProfileService(); const plan = await SubmoduleProfileService?.createInitPlan(buildParameters.submoduleProfilePath, buildParameters.submoduleVariantPath, workspace); if (plan) { await SubmoduleProfileService?.execute(plan, workspace, buildParameters.submoduleToken || buildParameters.gitPrivateToken); } } // Configure custom LFS transfer agent if (buildParameters.lfsTransferAgent) { core.info('Configuring custom LFS transfer agent...'); const LfsAgentService = await enterprise?.loadLfsAgentService(); await LfsAgentService?.configure(buildParameters.lfsTransferAgent, buildParameters.lfsTransferAgentArgs, buildParameters.lfsStoragePaths ? buildParameters.lfsStoragePaths.split(';') : [], workspace); } // Local build caching - restore let cacheRoot = ''; let cacheKey = ''; // eslint-disable-next-line no-undef let LocalCacheService; if (buildParameters.localCacheEnabled) { LocalCacheService = await enterprise?.loadLocalCacheService(); cacheRoot = LocalCacheService?.resolveCacheRoot(buildParameters) || ''; cacheKey = LocalCacheService?.generateCacheKey(buildParameters.targetPlatform, buildParameters.editorVersion, buildParameters.branch || '') || ''; if (buildParameters.localCacheLfs) { await LocalCacheService?.restoreLfsCache(workspace, cacheRoot, cacheKey); } if (buildParameters.localCacheLibrary) { const projectFullPath = node_path_1.default.join(workspace, buildParameters.projectPath); await LocalCacheService?.restoreLibraryCache(projectFullPath, cacheRoot, cacheKey); } } // Git hooks — opt-in only. When disabled (default), do not touch hooks at all. if (buildParameters.gitHooksEnabled) { const GitHooksService = await enterprise?.loadGitHooksService(); await GitHooksService?.installHooks(workspace); if (buildParameters.gitHooksSkipList) { const environment = GitHooksService?.configureSkipList(buildParameters.gitHooksSkipList.split(',')); if (environment) { Object.assign(process.env, environment); } } } // Apply incremental sync strategy before build const syncStrategy = buildParameters.syncStrategy; if (syncStrategy !== 'full') { core.info(`[Sync] Applying sync strategy: ${syncStrategy}`); await applySyncStrategy(buildParameters, workspace, enterprise); } await platform_setup_1.default.setup(buildParameters, actionFolder); exitCode = process.platform === 'darwin' ? await mac_builder_1.default.run(actionFolder) : await model_1.Docker.run(baseImage.toString(), { workspace, actionFolder, ...buildParameters, }); // Local build caching - save if (buildParameters.localCacheEnabled && LocalCacheService) { if (buildParameters.localCacheLibrary) { const projectFullPath = node_path_1.default.join(workspace, buildParameters.projectPath); await LocalCacheService.saveLibraryCache(projectFullPath, cacheRoot, cacheKey); } if (buildParameters.localCacheLfs) { await LocalCacheService.saveLfsCache(workspace, cacheRoot, cacheKey); } } // Child workspace isolation - save workspace for next run if (childWorkspaceConfig && childWorkspaceConfig.enabled) { const ChildWorkspaceService = await enterprise?.loadChildWorkspaceService(); const projectFullPath = node_path_1.default.join(workspace, buildParameters.projectPath); const preSaveSize = ChildWorkspaceService?.getWorkspaceSize(projectFullPath); core.info(`Child workspace size before save: ${preSaveSize}`); ChildWorkspaceService?.saveWorkspace(projectFullPath, childWorkspaceConfig); core.info(`Child workspace "${buildParameters.childWorkspaceName}" saved to cache`); } // Revert overlays after job completion if configured if (buildParameters.syncRevertAfter && syncStrategy !== 'full') { core.info('[Sync] Reverting overlay changes after job completion'); try { await enterprise?.IncrementalSyncService.revertOverlays(workspace, buildParameters.syncStatePath); } catch (revertError) { core.warning(`[Sync] Overlay revert failed: ${revertError.message}`); } } } else { const orchestrator = await (0, orchestrator_plugin_1.loadOrchestrator)(); if (!orchestrator) { throw new Error('Orchestrator package not available. Install @game-ci/orchestrator or use providerStrategy=local.'); } await orchestrator.run(buildParameters, baseImage.toString()); exitCode = 0; } // Post-build: archive and enforce retention if (buildParameters.buildArchiveEnabled && exitCode === 0) { core.info('Archiving build output...'); enterprise?.BuildReliabilityService.archiveBuildOutput(buildParameters.buildPath, buildParameters.buildArchivePath); enterprise?.BuildReliabilityService.enforceRetention(buildParameters.buildArchivePath, buildParameters.buildArchiveRetention); } // Set output await model_1.Output.setBuildVersion(buildParameters.buildVersion); await model_1.Output.setAndroidVersionCode(buildParameters.androidVersionCode); await model_1.Output.setEngineExitCode(exitCode); // Artifact collection and upload (runs on both success and failure) try { // Register custom output types if provided if (buildParameters.artifactCustomTypes) { try { const customTypes = JSON.parse(buildParameters.artifactCustomTypes); if (Array.isArray(customTypes)) { for (const ct of customTypes) { enterprise?.OutputTypeRegistry.registerType({ name: ct.name, defaultPath: ct.defaultPath || ct.pattern || `./${ct.name}/`, description: ct.description || `Custom output type: ${ct.name}`, builtIn: false, }); } } } catch (parseError) { core.warning(`Failed to parse artifactCustomTypes: ${parseError.message}`); } } // Collect outputs and generate manifest const manifestPath = node_path_1.default.join(buildParameters.projectPath, 'output-manifest.json'); const manifest = await enterprise?.OutputService.collectOutputs(buildParameters.projectPath, buildParameters.buildGuid, buildParameters.artifactOutputTypes, manifestPath); core.setOutput('artifactManifestPath', manifestPath); if (manifest) { // Upload artifacts const uploadConfig = enterprise?.ArtifactUploadHandler.parseConfig(buildParameters.artifactUploadTarget, buildParameters.artifactUploadPath || undefined, buildParameters.artifactCompression, buildParameters.artifactRetentionDays); if (uploadConfig) { const uploadResult = await enterprise?.ArtifactUploadHandler.uploadArtifacts(manifest, uploadConfig, buildParameters.projectPath); if (uploadResult && !uploadResult.success) { core.warning(`Artifact upload completed with errors: ${uploadResult.entries .filter((entry) => !entry.success) .map((entry) => `${entry.type}: ${entry.error}`) .join('; ')}`); } } } } catch (artifactError) { core.warning(`Artifact collection/upload failed: ${artifactError.message}`); } if (exitCode !== 0) { core.setFailed(`Build failed with exit code ${exitCode}`); } } catch (error) { core.setFailed(error.message); } } async function runColdBuild(buildParameters, baseImage, workspace, actionFolder) { if (buildParameters.providerStrategy === 'local') { core.info('Building locally'); await platform_setup_1.default.setup(buildParameters, actionFolder); return process.platform === 'darwin' ? await mac_builder_1.default.run(actionFolder) : await model_1.Docker.run(baseImage.toString(), { workspace, actionFolder, ...buildParameters, }); } else { const orchestrator = await (0, orchestrator_plugin_1.loadOrchestrator)(); if (!orchestrator) { throw new Error('Orchestrator package not available. Install @game-ci/orchestrator or use providerStrategy=local.'); } await orchestrator.run(buildParameters, baseImage.toString()); return 0; } } /** * Apply the configured sync strategy to the workspace before build. */ async function applySyncStrategy(buildParameters, workspace, enterprise) { if (!enterprise?.IncrementalSyncService) { core.warning('[Sync] Enterprise services not available, skipping sync strategy'); return; } const { IncrementalSyncService } = enterprise; const strategy = buildParameters.syncStrategy; const resolvedStrategy = IncrementalSyncService.resolveStrategy(strategy, workspace, buildParameters.syncStatePath); if (resolvedStrategy === 'full') { core.info('[Sync] Resolved to full sync (no incremental state available)'); return; } switch (resolvedStrategy) { case 'git-delta': { const targetReference = buildParameters.gitSha || buildParameters.branch; const changedFiles = await IncrementalSyncService.syncGitDelta(workspace, targetReference, buildParameters.syncStatePath); core.info(`[Sync] Git delta sync applied: ${changedFiles} file(s) changed`); break; } case 'direct-input': { if (!buildParameters.syncInputRef) { throw new Error('[Sync] direct-input strategy requires syncInputRef to be set'); } const overlays = await IncrementalSyncService.applyDirectInput(workspace, buildParameters.syncInputRef, buildParameters.syncStorageRemote || undefined, buildParameters.syncStatePath); core.info(`[Sync] Direct input applied: ${overlays.length} overlay(s)`); break; } case 'storage-pull': { if (!buildParameters.syncInputRef) { throw new Error('[Sync] storage-pull strategy requires syncInputRef to be set'); } const pulledFiles = await IncrementalSyncService.syncStoragePull(workspace, buildParameters.syncInputRef, { rcloneRemote: buildParameters.syncStorageRemote || undefined, syncRevertAfter: buildParameters.syncRevertAfter, statePath: buildParameters.syncStatePath, }); core.info(`[Sync] Storage pull complete: ${pulledFiles.length} file(s)`); break; } default: core.warning(`[Sync] Unknown sync strategy: ${resolvedStrategy}`); } } runMain(); /***/ }), /***/ 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 { 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`); } 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, 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: input_1.default.getInput('providerStrategy') || (cli_1.Cli.isCliMode ? 'aws' : 'local'), fallbackProviderStrategy: input_1.default.getInput('fallbackProviderStrategy') || '', runnerCheckEnabled: input_1.default.getInput('runnerCheckEnabled') === 'true', runnerCheckLabels: (input_1.default.getInput('runnerCheckLabels') || '') .split(',') .map((l) => l.trim()) .filter(Boolean), runnerCheckMinAvailable: Number(input_1.default.getInput('runnerCheckMinAvailable')) || 1, retryOnFallback: input_1.default.getInput('retryOnFallback') === 'true', providerInitTimeout: Number(input_1.default.getInput('providerInitTimeout')) || 0, gitAuthMode: input_1.default.getInput('gitAuthMode') || 'header', buildPlatform: input_1.default.getInput('buildPlatform') || ((input_1.default.getInput('providerStrategy') || 'local') !== 'local' ? 'linux' : process.platform), kubeConfig: input_1.default.getInput('kubeConfig') || '', containerMemory: input_1.default.getInput('containerMemory') || '3072', containerCpu: input_1.default.getInput('containerCpu') || '1024', containerNamespace: input_1.default.getInput('containerNamespace') || 'default', kubeVolumeSize: input_1.default.getInput('kubeVolumeSize') || '25Gi', kubeVolume: input_1.default.getInput('kubeVolume') || '', postBuildContainerHooks: input_1.default.getInput('postBuildContainerHooks') || '', preBuildContainerHooks: input_1.default.getInput('preBuildContainerHooks') || '', customJob: input_1.default.getInput('customJob') || '', runNumber: input_1.default.runNumber, branch: input_1.default.branch.replace('/head', '') || (await git_repo_1.GitRepoReader.GetBranch()), orchestratorBranch: (input_1.default.getInput('orchestratorBranch') || 'main').split('/').reverse()[0], orchestratorDebug: input_1.default.getInput('orchestratorDebug') === 'true' || input_1.default.getInput('orchestratorTests') === 'true', githubRepo: (input_1.default.githubRepo ?? (await git_repo_1.GitRepoReader.GetRemote())) || input_1.default.getInput('orchestratorRepoName') || 'game-ci/unity-builder', orchestratorRepoName: input_1.default.getInput('orchestratorRepoName') || 'game-ci/unity-builder', cloneDepth: Number.parseInt(input_1.default.getInput('cloneDepth') || '50'), isCliMode: cli_1.Cli.isCliMode, awsStackName: input_1.default.getInput('awsStackName') || 'game-ci', awsEndpoint: input_1.default.getInput('awsEndpoint'), awsCloudFormationEndpoint: input_1.default.getInput('awsCloudFormationEndpoint') || input_1.default.getInput('awsEndpoint'), awsEcsEndpoint: input_1.default.getInput('awsEcsEndpoint') || input_1.default.getInput('awsEndpoint'), awsKinesisEndpoint: input_1.default.getInput('awsKinesisEndpoint') || input_1.default.getInput('awsEndpoint'), awsCloudWatchLogsEndpoint: input_1.default.getInput('awsCloudWatchLogsEndpoint') || input_1.default.getInput('awsEndpoint'), awsS3Endpoint: input_1.default.getInput('awsS3Endpoint') || input_1.default.getInput('awsEndpoint'), storageProvider: input_1.default.getInput('storageProvider') || 's3', rcloneRemote: input_1.default.getInput('rcloneRemote') || '', 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)()}`, commandHooks: input_1.default.getInput('commandHooks') || '', inputPullCommand: input_1.default.getInput('inputPullCommand') || '', pullInputList: (input_1.default.getInput('pullInputList') || '').split(',').filter(Boolean), kubeStorageClass: input_1.default.getInput('kubeStorageClass') || '', gcpProject: input_1.default.gcpProject, gcpRegion: input_1.default.gcpRegion, gcpStorageType: input_1.default.gcpStorageType, gcpBucket: input_1.default.gcpBucket, gcpFilestoreIp: input_1.default.gcpFilestoreIp, gcpFilestoreShare: input_1.default.gcpFilestoreShare, gcpMachineType: input_1.default.gcpMachineType, gcpDiskSizeGb: input_1.default.gcpDiskSizeGb, gcpServiceAccount: input_1.default.gcpServiceAccount, gcpVpcConnector: input_1.default.gcpVpcConnector, azureResourceGroup: input_1.default.azureResourceGroup, azureLocation: input_1.default.azureLocation, azureStorageType: input_1.default.azureStorageType, azureStorageAccount: input_1.default.azureStorageAccount, azureBlobContainer: input_1.default.azureBlobContainer, azureFileShareName: input_1.default.azureFileShareName, azureSubscriptionId: input_1.default.azureSubscriptionId, azureCpu: input_1.default.azureCpu, azureMemoryGb: input_1.default.azureMemoryGb, azureDiskSizeGb: input_1.default.azureDiskSizeGb, azureSubnetId: input_1.default.azureSubnetId, cacheKey: input_1.default.getInput('cacheKey') || input_1.default.branch, maxRetainedWorkspaces: Number.parseInt(input_1.default.getInput('maxRetainedWorkspaces') || '0'), useLargePackages: input_1.default.getInput('useLargePackages') === 'true', useCompressionStrategy: input_1.default.getInput('useCompressionStrategy') === 'true', garbageMaxAge: Number(input_1.default.getInput('garbageMaxAge')) || 24, githubChecks: input_1.default.getInput('githubChecks') === 'true', asyncWorkflow: input_1.default.getInput('asyncOrchestrator') === 'true', githubCheckId: input_1.default.getInput('githubCheckId') || '', finalHooks: (input_1.default.getInput('finalHooks') || '').split(',').filter(Boolean), skipLfs: input_1.default.getInput('skipLfs') === 'true', skipCache: input_1.default.getInput('skipCache') === 'true', cacheUnityInstallationOnMac: input_1.default.cacheUnityInstallationOnMac, unityHubVersionOnMac: input_1.default.unityHubVersionOnMac, dockerWorkspacePath: input_1.default.dockerWorkspacePath, submoduleProfilePath: input_1.default.submoduleProfilePath, submoduleVariantPath: input_1.default.submoduleVariantPath, submoduleToken: input_1.default.submoduleToken, localCacheEnabled: input_1.default.localCacheEnabled, localCacheRoot: input_1.default.localCacheRoot, localCacheLibrary: input_1.default.localCacheLibrary, localCacheLfs: input_1.default.localCacheLfs, childWorkspacesEnabled: input_1.default.childWorkspacesEnabled, childWorkspaceName: input_1.default.childWorkspaceName, childWorkspaceCacheRoot: input_1.default.childWorkspaceCacheRoot, childWorkspacePreserveGit: input_1.default.childWorkspacePreserveGit, childWorkspaceSeparateLibrary: input_1.default.childWorkspaceSeparateLibrary, lfsTransferAgent: input_1.default.lfsTransferAgent, lfsTransferAgentArgs: input_1.default.lfsTransferAgentArgs, lfsStoragePaths: input_1.default.lfsStoragePaths, gitHooksEnabled: input_1.default.gitHooksEnabled, gitHooksSkipList: input_1.default.gitHooksSkipList, gitHooksRunBeforeBuild: input_1.default.gitHooksRunBeforeBuild, providerExecutable: input_1.default.providerExecutable, // Remote PowerShell provider remotePowershellHost: input_1.default.remotePowershellHost, remotePowershellCredential: input_1.default.remotePowershellCredential, remotePowershellTransport: input_1.default.remotePowershellTransport, // GitHub Actions provider githubActionsRepo: input_1.default.githubActionsRepo, githubActionsWorkflow: input_1.default.githubActionsWorkflow, githubActionsToken: input_1.default.githubActionsToken, githubActionsRef: input_1.default.githubActionsRef, // GitLab CI provider gitlabProjectId: input_1.default.gitlabProjectId, gitlabTriggerToken: input_1.default.gitlabTriggerToken, gitlabApiUrl: input_1.default.gitlabApiUrl, gitlabRef: input_1.default.gitlabRef, // Ansible provider ansibleInventory: input_1.default.ansibleInventory, ansiblePlaybook: input_1.default.ansiblePlaybook, ansibleExtraVars: input_1.default.ansibleExtraVars, ansibleVaultPassword: input_1.default.ansibleVaultPassword, gitIntegrityCheck: input_1.default.gitIntegrityCheck, gitAutoRecover: input_1.default.gitAutoRecover, cleanReservedFilenames: input_1.default.cleanReservedFilenames, buildArchiveEnabled: input_1.default.buildArchiveEnabled, buildArchivePath: input_1.default.buildArchivePath, buildArchiveRetention: input_1.default.buildArchiveRetention, testSuitePath: input_1.default.testSuitePath, testSuiteEvent: input_1.default.testSuiteEvent, testTaxonomyPath: input_1.default.testTaxonomyPath, testResultFormat: input_1.default.testResultFormat, testResultPath: input_1.default.testResultPath, hotRunnerEnabled: input_1.default.hotRunnerEnabled, hotRunnerTransport: input_1.default.hotRunnerTransport, hotRunnerHost: input_1.default.hotRunnerHost, hotRunnerPort: input_1.default.hotRunnerPort, hotRunnerHealthInterval: input_1.default.hotRunnerHealthInterval, hotRunnerMaxIdle: input_1.default.hotRunnerMaxIdle, hotRunnerFallbackToCold: input_1.default.hotRunnerFallbackToCold, artifactOutputTypes: input_1.default.artifactOutputTypes, artifactUploadTarget: input_1.default.artifactUploadTarget, artifactUploadPath: input_1.default.artifactUploadPath, artifactCompression: input_1.default.artifactCompression, artifactRetentionDays: input_1.default.artifactRetentionDays, artifactCustomTypes: input_1.default.artifactCustomTypes, syncStrategy: input_1.default.syncStrategy, syncInputRef: input_1.default.syncInputRef, syncStorageRemote: input_1.default.syncStorageRemote, syncRevertAfter: input_1.default.syncRevertAfter, syncStatePath: input_1.default.syncStatePath, }; } 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: /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.CliFunction = exports.CliFunctionsRepository = void 0; class CliFunctionsRepository { 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.CliFunctionsRepository = CliFunctionsRepository; CliFunctionsRepository.targets = []; 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 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