This commit is contained in:
frostebite
2026-01-23 21:15:32 +00:00
parent 1cf4f0326b
commit 5c9bac600a
2 changed files with 100 additions and 1 deletions

99
dist/index.js generated vendored
View File

@@ -766,6 +766,7 @@ const shared_workspace_locking_1 = __importDefault(__nccwpck_require__(71372));
const follow_log_stream_service_1 = __nccwpck_require__(40266);
const cloud_runner_result_1 = __importDefault(__nccwpck_require__(69567));
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(66965));
const resource_tracking_1 = __importDefault(__nccwpck_require__(28819));
class CloudRunner {
static get isCloudRunnerEnvironment() {
return process.env[`GITHUB_ACTIONS`] !== `true`;
@@ -777,6 +778,8 @@ class CloudRunner {
cloud_runner_logger_1.default.setup();
cloud_runner_logger_1.default.log(`Setting up cloud runner`);
CloudRunner.buildParameters = buildParameters;
resource_tracking_1.default.logAllocationSummary('setup');
await resource_tracking_1.default.logDiskUsageSnapshot('setup');
if (CloudRunner.buildParameters.githubCheckId === ``) {
CloudRunner.buildParameters.githubCheckId = await github_1.default.createGitHubCheck(CloudRunner.buildParameters.buildGuid);
}
@@ -1405,6 +1408,9 @@ class CloudRunnerOptions {
static get asyncCloudRunner() {
return CloudRunnerOptions.getInput('asyncCloudRunner') === 'true';
}
static get resourceTracking() {
return CloudRunnerOptions.getInput('resourceTracking') === 'true';
}
static get useLargePackages() {
return CloudRunnerOptions.getInput(`useLargePackages`) === `true`;
}
@@ -3063,6 +3069,7 @@ const garbage_collection_service_1 = __nccwpck_require__(53859);
const task_service_1 = __nccwpck_require__(67205);
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(66965));
const aws_client_factory_1 = __nccwpck_require__(30161);
const resource_tracking_1 = __importDefault(__nccwpck_require__(28819));
class AWSBuildEnvironment {
constructor(buildParameters) {
this.baseStackName = buildParameters.awsStackName;
@@ -3115,6 +3122,8 @@ class AWSBuildEnvironment {
}
async runTaskInWorkflow(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
process.env.AWS_REGION = __1.Input.region;
resource_tracking_1.default.logAllocationSummary('aws workflow');
await resource_tracking_1.default.logDiskUsageSnapshot('aws workflow (host)');
aws_client_factory_1.AwsClientFactory.getECS();
const CF = aws_client_factory_1.AwsClientFactory.getCloudFormation();
aws_client_factory_1.AwsClientFactory.getKinesis();
@@ -3648,6 +3657,7 @@ const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
const remote_client_logger_1 = __nccwpck_require__(59412);
const kubernetes_role_1 = __nccwpck_require__(88231);
const cloud_runner_system_1 = __nccwpck_require__(4197);
const resource_tracking_1 = __importDefault(__nccwpck_require__(28819));
class Kubernetes {
constructor(buildParameters) {
this.buildGuid = '';
@@ -3740,6 +3750,9 @@ class Kubernetes {
async runTaskInWorkflow(buildGuid, image, commands, mountdir, workingdir, environment, secrets) {
try {
cloud_runner_logger_1.default.log('Cloud Runner K8s workflow!');
resource_tracking_1.default.logAllocationSummary('k8s workflow');
await resource_tracking_1.default.logDiskUsageSnapshot('k8s workflow (host)');
await resource_tracking_1.default.logK3dNodeDiskUsage('k8s workflow (before job)');
// Setup
const id = __1.BuildParameters && __1.BuildParameters.shouldUseRetainedWorkspaceMode(this.buildParameters)
? cloud_runner_1.default.lockedWorkspace
@@ -6434,9 +6447,11 @@ const github_1 = __importDefault(__nccwpck_require__(83654));
const build_parameters_1 = __importDefault(__nccwpck_require__(80787));
const cli_1 = __nccwpck_require__(55651);
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(66965));
const resource_tracking_1 = __importDefault(__nccwpck_require__(28819));
class RemoteClient {
static async setupRemoteClient() {
cloud_runner_logger_1.default.log(`bootstrap game ci cloud runner...`);
await resource_tracking_1.default.logDiskUsageSnapshot('remote-cli-pre-build (start)');
if (!(await RemoteClient.handleRetainedWorkspace())) {
await RemoteClient.bootstrapRepository();
}
@@ -6597,6 +6612,7 @@ class RemoteClient {
// that read from the log file rather than stdout
remote_client_logger_1.RemoteClientLogger.log(successMessage);
cloud_runner_logger_1.default.log(successMessage);
await resource_tracking_1.default.logDiskUsageSnapshot('remote-cli-post-build (end)');
return new Promise((result) => result(``));
}
static async runCustomHookFiles(hookLifecycle) {
@@ -7217,6 +7233,89 @@ FollowLogStreamService.errors = ``;
FollowLogStreamService.DidReceiveEndOfTransmission = false;
/***/ }),
/***/ 28819:
/***/ (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 cloud_runner_logger_1 = __importDefault(__nccwpck_require__(42864));
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(66965));
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
const cloud_runner_system_1 = __nccwpck_require__(4197);
class ResourceTracking {
static isEnabled() {
return (cloud_runner_options_1.default.resourceTracking ||
cloud_runner_options_1.default.cloudRunnerDebug ||
process.env['cloudRunnerTests'] === 'true');
}
static logAllocationSummary(context) {
if (!ResourceTracking.isEnabled()) {
return;
}
const buildParameters = cloud_runner_1.default.buildParameters;
const allocations = {
providerStrategy: buildParameters.providerStrategy,
containerCpu: buildParameters.containerCpu,
containerMemory: buildParameters.containerMemory,
dockerCpuLimit: buildParameters.dockerCpuLimit,
dockerMemoryLimit: buildParameters.dockerMemoryLimit,
kubeVolumeSize: buildParameters.kubeVolumeSize,
kubeStorageClass: buildParameters.kubeStorageClass,
kubeVolume: buildParameters.kubeVolume,
containerNamespace: buildParameters.containerNamespace,
storageProvider: buildParameters.storageProvider,
rcloneRemote: buildParameters.rcloneRemote,
dockerWorkspacePath: buildParameters.dockerWorkspacePath,
cacheKey: buildParameters.cacheKey,
maxRetainedWorkspaces: buildParameters.maxRetainedWorkspaces,
useCompressionStrategy: buildParameters.useCompressionStrategy,
useLargePackages: buildParameters.useLargePackages,
ephemeralStorageRequest: process.env['cloudRunnerTests'] === 'true' ? 'not set' : '2Gi',
};
cloud_runner_logger_1.default.log(`[ResourceTracking] Allocation summary (${context}):`);
cloud_runner_logger_1.default.log(JSON.stringify(allocations, undefined, 2));
}
static async logDiskUsageSnapshot(context) {
if (!ResourceTracking.isEnabled()) {
return;
}
cloud_runner_logger_1.default.log(`[ResourceTracking] Disk usage snapshot (${context})`);
await ResourceTracking.runAndLog('df -h', 'df -h');
await ResourceTracking.runAndLog('du -sh .', 'du -sh .');
await ResourceTracking.runAndLog('du -sh ./cloud-runner-cache', 'du -sh ./cloud-runner-cache');
await ResourceTracking.runAndLog('du -sh ./temp', 'du -sh ./temp');
await ResourceTracking.runAndLog('du -sh ./logs', 'du -sh ./logs');
}
static async logK3dNodeDiskUsage(context) {
if (!ResourceTracking.isEnabled()) {
return;
}
const nodes = ['k3d-unity-builder-agent-0', 'k3d-unity-builder-server-0'];
cloud_runner_logger_1.default.log(`[ResourceTracking] K3d node disk usage (${context})`);
for (const node of nodes) {
await ResourceTracking.runAndLog(`k3d node ${node}`, `docker exec ${node} sh -c "df -h /var/lib/rancher/k3s 2>/dev/null || df -h / 2>/dev/null || true" || true`);
}
}
static async runAndLog(label, command) {
try {
const output = await cloud_runner_system_1.CloudRunnerSystem.Run(command, true, true);
const trimmed = output.trim();
cloud_runner_logger_1.default.log(`[ResourceTracking] ${label}:\n${trimmed || 'no output'}`);
}
catch (error) {
cloud_runner_logger_1.default.log(`[ResourceTracking] ${label} failed: ${error?.message || error}`);
}
}
}
exports["default"] = ResourceTracking;
/***/ }),
/***/ 71372:

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long