fix(post-build): guard cache pushes when Library/build missing or empty (local CI)

pull/729/head
Frostebite 2025-09-05 01:55:28 +01:00
parent 0c57572a1c
commit d8ad8f9a5a
2 changed files with 39 additions and 3 deletions

36
dist/index.js generated vendored
View File

@ -4538,8 +4538,44 @@ class RemoteClient {
}
static async remoteClientPostBuild() {
remote_client_logger_1.RemoteClientLogger.log(`Running POST build tasks`);
// Guard: only push Library cache if the folder exists and has contents
try {
const libraryFolderHost = cloud_runner_folders_1.CloudRunnerFolders.libraryFolderAbsolute;
if (node_fs_1.default.existsSync(libraryFolderHost)) {
const libraryEntries = await node_fs_1.default.promises.readdir(libraryFolderHost).catch(() => []);
if (libraryEntries.length > 0) {
await caching_1.Caching.PushToCache(cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(`${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForCacheKeyFull}/Library`), cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(cloud_runner_folders_1.CloudRunnerFolders.libraryFolderAbsolute), `lib-${cloud_runner_1.default.buildParameters.buildGuid}`);
}
else {
remote_client_logger_1.RemoteClientLogger.log(`Skipping Library cache push (folder is empty)`);
}
}
else {
remote_client_logger_1.RemoteClientLogger.log(`Skipping Library cache push (folder missing)`);
}
}
catch (error) {
remote_client_logger_1.RemoteClientLogger.logWarning(`Library cache push skipped with error: ${error.message}`);
}
// Guard: only push Build cache if the folder exists and has contents
try {
const buildFolderHost = cloud_runner_folders_1.CloudRunnerFolders.projectBuildFolderAbsolute;
if (node_fs_1.default.existsSync(buildFolderHost)) {
const buildEntries = await node_fs_1.default.promises.readdir(buildFolderHost).catch(() => []);
if (buildEntries.length > 0) {
await caching_1.Caching.PushToCache(cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(`${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForCacheKeyFull}/build`), cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(cloud_runner_folders_1.CloudRunnerFolders.projectBuildFolderAbsolute), `build-${cloud_runner_1.default.buildParameters.buildGuid}`);
}
else {
remote_client_logger_1.RemoteClientLogger.log(`Skipping Build cache push (folder is empty)`);
}
}
else {
remote_client_logger_1.RemoteClientLogger.log(`Skipping Build cache push (folder missing)`);
}
}
catch (error) {
remote_client_logger_1.RemoteClientLogger.logWarning(`Build cache push skipped with error: ${error.message}`);
}
if (!build_parameters_1.default.shouldUseRetainedWorkspaceMode(cloud_runner_1.default.buildParameters)) {
await cloud_runner_system_1.CloudRunnerSystem.Run(`rm -r ${cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute)}`);
}

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long