cleanup logging for github check updates
parent
4afa20ec5c
commit
e1f3cb3e99
|
|
@ -207,6 +207,9 @@ const cli_1 = __nccwpck_require__(55651);
|
||||||
const github_1 = __importDefault(__nccwpck_require__(83654));
|
const github_1 = __importDefault(__nccwpck_require__(83654));
|
||||||
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
|
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
|
||||||
class BuildParameters {
|
class BuildParameters {
|
||||||
|
static useRetainedWorkspaceMode(buildParameters) {
|
||||||
|
return buildParameters.retainWorkspaces > 0;
|
||||||
|
}
|
||||||
static async create() {
|
static async create() {
|
||||||
const buildFile = this.parseBuildFile(input_1.default.buildName, input_1.default.targetPlatform, input_1.default.androidExportType);
|
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 editorVersion = unity_versioning_1.default.determineUnityVersion(input_1.default.projectPath, input_1.default.unityVersion);
|
||||||
|
|
@ -289,14 +292,13 @@ class BuildParameters {
|
||||||
logId: nanoid_1.customAlphabet(cloud_runner_constants_1.default.alphabet, 9)(),
|
logId: nanoid_1.customAlphabet(cloud_runner_constants_1.default.alphabet, 9)(),
|
||||||
buildGuid: cloud_runner_guid_1.default.generateGuid(input_1.default.runNumber, input_1.default.targetPlatform),
|
buildGuid: cloud_runner_guid_1.default.generateGuid(input_1.default.runNumber, input_1.default.targetPlatform),
|
||||||
customJobHooks: cloud_runner_options_1.default.customJobHooks(),
|
customJobHooks: cloud_runner_options_1.default.customJobHooks(),
|
||||||
readInputOverrideCommand: cloud_runner_options_1.default.readInputOverrideCommand(),
|
inputOverrideCommand: cloud_runner_options_1.default.inputOverrideCommand(),
|
||||||
readInputFromOverrideList: cloud_runner_options_1.default.readInputFromOverrideList(),
|
inputOverrides: cloud_runner_options_1.default.inputOverrides(),
|
||||||
kubeStorageClass: cloud_runner_options_1.default.kubeStorageClass,
|
kubeStorageClass: cloud_runner_options_1.default.kubeStorageClass,
|
||||||
cacheKey: cloud_runner_options_1.default.cacheKey,
|
cacheKey: cloud_runner_options_1.default.cacheKey,
|
||||||
retainWorkspaces: cloud_runner_options_1.default.retainWorkspaces,
|
retainWorkspaces: cloud_runner_options_1.default.retainWorkspaces,
|
||||||
useSharedLargePackages: cloud_runner_options_1.default.useSharedLargePackages,
|
useSharedLargePackages: cloud_runner_options_1.default.useSharedLargePackages,
|
||||||
useLz4Compression: cloud_runner_options_1.default.useLz4Compression,
|
compressionStrategy: cloud_runner_options_1.default.compressionStrategy,
|
||||||
maxRetainedWorkspaces: cloud_runner_options_1.default.maxRetainedWorkspaces,
|
|
||||||
garbageCollectionMaxAge: cloud_runner_options_1.default.garbageCollectionMaxAge,
|
garbageCollectionMaxAge: cloud_runner_options_1.default.garbageCollectionMaxAge,
|
||||||
githubChecks: cloud_runner_options_1.default.githubChecks,
|
githubChecks: cloud_runner_options_1.default.githubChecks,
|
||||||
asyncWorkflow: cloud_runner_options_1.default.asyncCloudRunner,
|
asyncWorkflow: cloud_runner_options_1.default.asyncCloudRunner,
|
||||||
|
|
@ -617,7 +619,7 @@ class Cli {
|
||||||
core.info(`Running POST build tasks`);
|
core.info(`Running POST build tasks`);
|
||||||
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-${__1.CloudRunner.buildParameters.buildGuid}`);
|
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-${__1.CloudRunner.buildParameters.buildGuid}`);
|
||||||
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-${__1.CloudRunner.buildParameters.buildGuid}`);
|
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-${__1.CloudRunner.buildParameters.buildGuid}`);
|
||||||
if (!__1.CloudRunner.buildParameters.retainWorkspaces) {
|
if (!__1.BuildParameters.useRetainedWorkspaceMode(__1.CloudRunner.buildParameters)) {
|
||||||
await cloud_runner_system_1.CloudRunnerSystem.Run(`rm -r ${cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute)}`);
|
await cloud_runner_system_1.CloudRunnerSystem.Run(`rm -r ${cloud_runner_folders_1.CloudRunnerFolders.ToLinuxFolder(cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute)}`);
|
||||||
}
|
}
|
||||||
await remote_client_1.RemoteClient.runCustomHookFiles(`after-build`);
|
await remote_client_1.RemoteClient.runCustomHookFiles(`after-build`);
|
||||||
|
|
@ -814,11 +816,11 @@ class CloudRunnerOptions {
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
// Input override handling
|
// Input override handling
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
static readInputFromOverrideList() {
|
static inputOverrides() {
|
||||||
return CloudRunnerOptions.getInput('readInputFromOverrideList') || '';
|
return CloudRunnerOptions.getInput('inputOverrides') || '';
|
||||||
}
|
}
|
||||||
static readInputOverrideCommand() {
|
static inputOverrideCommand() {
|
||||||
const value = CloudRunnerOptions.getInput('readInputOverrideCommand');
|
const value = CloudRunnerOptions.getInput('inputOverrideCommand');
|
||||||
if (value === 'gcp-secret-manager') {
|
if (value === 'gcp-secret-manager') {
|
||||||
return 'gcloud secrets versions access 1 --secret="{0}"';
|
return 'gcloud secrets versions access 1 --secret="{0}"';
|
||||||
}
|
}
|
||||||
|
|
@ -860,14 +862,10 @@ class CloudRunnerOptions {
|
||||||
static get cloudRunnerDebug() {
|
static get cloudRunnerDebug() {
|
||||||
return (CloudRunnerOptions.getInput(`cloudRunnerTests`) === `true` ||
|
return (CloudRunnerOptions.getInput(`cloudRunnerTests`) === `true` ||
|
||||||
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
||||||
|
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
||||||
|
CloudRunnerOptions.getInput(`cloudRunnerDebugEnv`) === `true` ||
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
static get cloudRunnerDebugTree() {
|
|
||||||
return CloudRunnerOptions.getInput(`cloudRunnerDebugTree`) === `true` || false;
|
|
||||||
}
|
|
||||||
static get cloudRunnerDebugEnv() {
|
|
||||||
return CloudRunnerOptions.getInput(`cloudRunnerDebugEnv`) === `true` || false;
|
|
||||||
}
|
|
||||||
static get skipLFS() {
|
static get skipLFS() {
|
||||||
return CloudRunnerOptions.getInput(`skipLFS`) === `true` || false;
|
return CloudRunnerOptions.getInput(`skipLFS`) === `true` || false;
|
||||||
}
|
}
|
||||||
|
|
@ -883,8 +881,8 @@ class CloudRunnerOptions {
|
||||||
static get useSharedBuilder() {
|
static get useSharedBuilder() {
|
||||||
return (CloudRunnerOptions.getInput(`useSharedBuilder`) || 'false') === 'true';
|
return (CloudRunnerOptions.getInput(`useSharedBuilder`) || 'false') === 'true';
|
||||||
}
|
}
|
||||||
static get useLz4Compression() {
|
static get compressionStrategy() {
|
||||||
return (CloudRunnerOptions.getInput(`useLz4Compression`) || 'false') === 'true';
|
return (CloudRunnerOptions.getInput(`compressionStrategy`) || 'false') === 'true';
|
||||||
}
|
}
|
||||||
static get useCleanupCron() {
|
static get useCleanupCron() {
|
||||||
return (CloudRunnerOptions.getInput(`useCleanupCron`) || 'true') === 'true';
|
return (CloudRunnerOptions.getInput(`useCleanupCron`) || 'true') === 'true';
|
||||||
|
|
@ -893,10 +891,7 @@ class CloudRunnerOptions {
|
||||||
// Retained Workspace
|
// Retained Workspace
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
static get retainWorkspaces() {
|
static get retainWorkspaces() {
|
||||||
return CloudRunnerOptions.getInput(`retainWorkspaces`) || false;
|
return CloudRunnerOptions.getInput(`retainWorkspaces`) || 0;
|
||||||
}
|
|
||||||
static get maxRetainedWorkspaces() {
|
|
||||||
return Number(CloudRunnerOptions.getInput(`maxRetainedWorkspaces`)) || 3;
|
|
||||||
}
|
}
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
// Garbage Collection
|
// Garbage Collection
|
||||||
|
|
@ -1014,7 +1009,7 @@ class CloudRunner {
|
||||||
// CloudRunnerLogger.log(`Cloud Runner output ${Input.ToEnvVarFormat(element)} = ${buildParameters[element]}`);
|
// CloudRunnerLogger.log(`Cloud Runner output ${Input.ToEnvVarFormat(element)} = ${buildParameters[element]}`);
|
||||||
core.setOutput(__1.Input.ToEnvVarFormat(element), buildParameters[element]);
|
core.setOutput(__1.Input.ToEnvVarFormat(element), buildParameters[element]);
|
||||||
}
|
}
|
||||||
core.setOutput(__1.Input.ToEnvVarFormat(`buildArtifact`), `build-${CloudRunner.buildParameters.buildGuid}.tar${CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''}`);
|
core.setOutput(__1.Input.ToEnvVarFormat(`buildArtifact`), `build-${CloudRunner.buildParameters.buildGuid}.tar${CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static setupSelectedBuildPlatform() {
|
static setupSelectedBuildPlatform() {
|
||||||
|
|
@ -1045,7 +1040,7 @@ class CloudRunner {
|
||||||
if (!CloudRunner.buildParameters.isCliMode)
|
if (!CloudRunner.buildParameters.isCliMode)
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
try {
|
try {
|
||||||
if (buildParameters.retainWorkspaces) {
|
if (__1.BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
CloudRunner.lockedWorkspace = shared_workspace_locking_1.default.NewWorkspaceName();
|
CloudRunner.lockedWorkspace = shared_workspace_locking_1.default.NewWorkspaceName();
|
||||||
const result = await shared_workspace_locking_1.default.GetOrCreateLockedWorkspace(CloudRunner.lockedWorkspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
const result = await shared_workspace_locking_1.default.GetOrCreateLockedWorkspace(CloudRunner.lockedWorkspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|
@ -1056,8 +1051,8 @@ class CloudRunner {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cloud_runner_logger_1.default.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
cloud_runner_logger_1.default.log(`Max retained workspaces reached ${buildParameters.retainWorkspaces}`);
|
||||||
buildParameters.retainWorkspaces = false;
|
buildParameters.retainWorkspaces = 0;
|
||||||
CloudRunner.lockedWorkspace = undefined;
|
CloudRunner.lockedWorkspace = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1074,7 +1069,7 @@ class CloudRunner {
|
||||||
if (!CloudRunner.buildParameters.isCliMode)
|
if (!CloudRunner.buildParameters.isCliMode)
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
await github_1.default.updateGitHubCheck(CloudRunner.buildParameters.buildGuid, `success`, `success`, `completed`);
|
await github_1.default.updateGitHubCheck(CloudRunner.buildParameters.buildGuid, `success`, `success`, `completed`);
|
||||||
if (CloudRunner.buildParameters.retainWorkspaces) {
|
if (__1.BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
const workspace = CloudRunner.lockedWorkspace || ``;
|
const workspace = CloudRunner.lockedWorkspace || ``;
|
||||||
await shared_workspace_locking_1.default.ReleaseWorkspace(workspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
await shared_workspace_locking_1.default.ReleaseWorkspace(workspace, CloudRunner.buildParameters.buildGuid, CloudRunner.buildParameters);
|
||||||
const isLocked = await shared_workspace_locking_1.default.IsWorkspaceLocked(workspace, CloudRunner.buildParameters);
|
const isLocked = await shared_workspace_locking_1.default.IsWorkspaceLocked(workspace, CloudRunner.buildParameters);
|
||||||
|
|
@ -2927,9 +2922,9 @@ class LocalDockerCloudRunner {
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
defaultSecretsArray) {
|
defaultSecretsArray) {
|
||||||
const { workspace } = __1.Action;
|
const { workspace } = __1.Action;
|
||||||
if (fs.existsSync(`${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''}`)) {
|
if (fs.existsSync(`${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''}`)) {
|
||||||
await cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${workspace}/cloud-runner-cache/cache/build/`);
|
await cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${workspace}/cloud-runner-cache/cache/build/`);
|
||||||
await cloud_runner_system_1.CloudRunnerSystem.Run(`rm -r ${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''}`);
|
await cloud_runner_system_1.CloudRunnerSystem.Run(`rm -r ${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setupWorkflow(buildGuid, buildParameters,
|
setupWorkflow(buildGuid, buildParameters,
|
||||||
|
|
@ -3030,6 +3025,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
const k8s = __importStar(__nccwpck_require__(89679));
|
const k8s = __importStar(__nccwpck_require__(89679));
|
||||||
|
const __1 = __nccwpck_require__(41359);
|
||||||
const core = __importStar(__nccwpck_require__(42186));
|
const core = __importStar(__nccwpck_require__(42186));
|
||||||
const kubernetes_storage_1 = __importDefault(__nccwpck_require__(49043));
|
const kubernetes_storage_1 = __importDefault(__nccwpck_require__(49043));
|
||||||
const kubernetes_task_runner_1 = __importDefault(__nccwpck_require__(70801));
|
const kubernetes_task_runner_1 = __importDefault(__nccwpck_require__(70801));
|
||||||
|
|
@ -3105,7 +3101,9 @@ class Kubernetes {
|
||||||
defaultSecretsArray) {
|
defaultSecretsArray) {
|
||||||
try {
|
try {
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
const id = buildParameters.retainWorkspaces ? cloud_runner_1.default.lockedWorkspace : buildParameters.buildGuid;
|
const id = __1.BuildParameters.useRetainedWorkspaceMode(buildParameters)
|
||||||
|
? cloud_runner_1.default.lockedWorkspace
|
||||||
|
: buildParameters.buildGuid;
|
||||||
this.pvcName = `unity-builder-pvc-${id}`;
|
this.pvcName = `unity-builder-pvc-${id}`;
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
||||||
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
||||||
|
|
@ -3266,7 +3264,7 @@ class Kubernetes {
|
||||||
branchName,
|
branchName,
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
defaultSecretsArray) {
|
defaultSecretsArray) {
|
||||||
if (buildParameters.retainWorkspaces) {
|
if (__1.BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cloud_runner_logger_1.default.log(`deleting PVC`);
|
cloud_runner_logger_1.default.log(`deleting PVC`);
|
||||||
|
|
@ -4039,10 +4037,10 @@ class Caching {
|
||||||
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
||||||
const startPath = process.cwd();
|
const startPath = process.cwd();
|
||||||
let compressionSuffix = '';
|
let compressionSuffix = '';
|
||||||
if (cloud_runner_1.default.buildParameters.useLz4Compression === true) {
|
if (cloud_runner_1.default.buildParameters.compressionStrategy === true) {
|
||||||
compressionSuffix = `.lz4`;
|
compressionSuffix = `.lz4`;
|
||||||
}
|
}
|
||||||
cloud_runner_logger_1.default.log(`Compression: ${cloud_runner_1.default.buildParameters.useLz4Compression} ${compressionSuffix}`);
|
cloud_runner_logger_1.default.log(`Compression: ${cloud_runner_1.default.buildParameters.compressionStrategy} ${compressionSuffix}`);
|
||||||
try {
|
try {
|
||||||
if (!(await fileExists(cacheFolder))) {
|
if (!(await fileExists(cacheFolder))) {
|
||||||
await cloud_runner_system_1.CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
|
await cloud_runner_system_1.CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
|
||||||
|
|
@ -4080,7 +4078,7 @@ class Caching {
|
||||||
}
|
}
|
||||||
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
||||||
let compressionSuffix = '';
|
let compressionSuffix = '';
|
||||||
if (cloud_runner_1.default.buildParameters.useLz4Compression === true) {
|
if (cloud_runner_1.default.buildParameters.compressionStrategy === true) {
|
||||||
compressionSuffix = `.lz4`;
|
compressionSuffix = `.lz4`;
|
||||||
}
|
}
|
||||||
const startPath = process.cwd();
|
const startPath = process.cwd();
|
||||||
|
|
@ -4179,6 +4177,7 @@ const cloud_runner_system_1 = __nccwpck_require__(99393);
|
||||||
const yaml_1 = __importDefault(__nccwpck_require__(44603));
|
const yaml_1 = __importDefault(__nccwpck_require__(44603));
|
||||||
const github_1 = __importDefault(__nccwpck_require__(83654));
|
const github_1 = __importDefault(__nccwpck_require__(83654));
|
||||||
const task_parameter_serializer_1 = __nccwpck_require__(35346);
|
const task_parameter_serializer_1 = __nccwpck_require__(35346);
|
||||||
|
const build_parameters_1 = __importDefault(__nccwpck_require__(80787));
|
||||||
class RemoteClient {
|
class RemoteClient {
|
||||||
static async runRemoteClientJob() {
|
static async runRemoteClientJob() {
|
||||||
if (!(await RemoteClient.handleRetainedWorkspace())) {
|
if (!(await RemoteClient.handleRetainedWorkspace())) {
|
||||||
|
|
@ -4236,10 +4235,10 @@ class RemoteClient {
|
||||||
}
|
}
|
||||||
static async cloneRepoWithoutLFSFiles() {
|
static async cloneRepoWithoutLFSFiles() {
|
||||||
process.chdir(`${cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute}`);
|
process.chdir(`${cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute}`);
|
||||||
if (cloud_runner_1.default.buildParameters.retainWorkspaces) {
|
if (build_parameters_1.default.useRetainedWorkspaceMode(cloud_runner_1.default.buildParameters)) {
|
||||||
if (node_fs_1.default.existsSync(node_path_1.default.join(cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute, `.git`))) {
|
if (node_fs_1.default.existsSync(node_path_1.default.join(cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute, `.git`))) {
|
||||||
process.chdir(cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute);
|
process.chdir(cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute);
|
||||||
remote_client_logger_1.RemoteClientLogger.log(`${cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute} repo exists - skipping clone - retained workspace mode ${cloud_runner_1.default.buildParameters.retainWorkspaces}`);
|
remote_client_logger_1.RemoteClientLogger.log(`${cloud_runner_folders_1.CloudRunnerFolders.repoPathAbsolute} repo exists - skipping clone - retained workspace mode ${build_parameters_1.default.useRetainedWorkspaceMode(cloud_runner_1.default.buildParameters)}`);
|
||||||
await cloud_runner_system_1.CloudRunnerSystem.Run(`git fetch && git reset --hard ${cloud_runner_1.default.buildParameters.gitSha}`);
|
await cloud_runner_system_1.CloudRunnerSystem.Run(`git fetch && git reset --hard ${cloud_runner_1.default.buildParameters.gitSha}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -4291,7 +4290,7 @@ class RemoteClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static async handleRetainedWorkspace() {
|
static async handleRetainedWorkspace() {
|
||||||
if (!cloud_runner_1.default.buildParameters.retainWorkspaces) {
|
if (!build_parameters_1.default.useRetainedWorkspaceMode(cloud_runner_1.default.buildParameters)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
remote_client_logger_1.RemoteClientLogger.log(`Retained Workspace: ${cloud_runner_1.default.lockedWorkspace !== undefined}`);
|
remote_client_logger_1.RemoteClientLogger.log(`Retained Workspace: ${cloud_runner_1.default.lockedWorkspace !== undefined}`);
|
||||||
|
|
@ -4403,7 +4402,7 @@ class CloudRunnerCustomHooks {
|
||||||
cloud_runner_logger_1.default.log(`Applying hooks ${hooks.length}`);
|
cloud_runner_logger_1.default.log(`Applying hooks ${hooks.length}`);
|
||||||
return `echo "---"
|
return `echo "---"
|
||||||
echo "start cloud runner init"
|
echo "start cloud runner init"
|
||||||
${cloud_runner_options_1.default.cloudRunnerDebugEnv ? `printenv` : `#`}
|
${cloud_runner_options_1.default.cloudRunnerDebug ? `printenv` : `#`}
|
||||||
echo "start of cloud runner job"
|
echo "start of cloud runner job"
|
||||||
${hooks.filter((x) => x.hook.includes(`before`)).map((x) => x.commands) || ' '}
|
${hooks.filter((x) => x.hook.includes(`before`)).map((x) => x.commands) || ' '}
|
||||||
${commands}
|
${commands}
|
||||||
|
|
@ -4571,8 +4570,8 @@ class CloudRunnerCustomSteps {
|
||||||
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID --profile default
|
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID --profile default
|
||||||
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile default
|
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile default
|
||||||
aws configure set region $AWS_DEFAULT_REGION --profile default
|
aws configure set region $AWS_DEFAULT_REGION --profile default
|
||||||
aws s3 cp /data/cache/$CI_CACHE_KEY/build/build-${cloud_runner_1.default.buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''} s3://${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''}
|
aws s3 cp /data/cache/$CI_CACHE_KEY/build/build-${cloud_runner_1.default.buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''} s3://${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''}
|
||||||
rm /data/cache/$CI_CACHE_KEY/build/build-${cloud_runner_1.default.buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''}
|
rm /data/cache/$CI_CACHE_KEY/build/build-${cloud_runner_1.default.buildParameters.buildGuid}.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''}
|
||||||
secrets:
|
secrets:
|
||||||
- name: awsAccessKeyId
|
- name: awsAccessKeyId
|
||||||
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
||||||
|
|
@ -4588,7 +4587,7 @@ class CloudRunnerCustomSteps {
|
||||||
aws configure set region $CI_AWS_DEFAULT_REGION --profile default
|
aws configure set region $CI_AWS_DEFAULT_REGION --profile default
|
||||||
aws s3 ls ${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/ || true
|
aws s3 ls ${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/ || true
|
||||||
aws s3 ls ${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build || true
|
aws s3 ls ${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build || true
|
||||||
aws s3 cp s3://${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''} /data/cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${cloud_runner_1.default.buildParameters.useLz4Compression ? '.lz4' : ''}
|
aws s3 cp s3://${cloud_runner_1.default.buildParameters.awsBaseStackName}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''} /data/cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${cloud_runner_1.default.buildParameters.compressionStrategy ? '.lz4' : ''}
|
||||||
secrets:
|
secrets:
|
||||||
- name: CI_AWS_ACCESS_KEY_ID
|
- name: CI_AWS_ACCESS_KEY_ID
|
||||||
- name: CI_AWS_SECRET_ACCESS_KEY
|
- name: CI_AWS_SECRET_ACCESS_KEY
|
||||||
|
|
@ -4677,8 +4676,8 @@ class CloudRunnerCustomSteps {
|
||||||
hook: after
|
hook: after
|
||||||
commands: |
|
commands: |
|
||||||
apt-get update > /dev/null
|
apt-get update > /dev/null
|
||||||
${cloud_runner_options_1.default.cloudRunnerDebugTree ? `apt-get install -y tree > /dev/null` : `#`}
|
${cloud_runner_options_1.default.cloudRunnerDebug ? `apt-get install -y tree > /dev/null` : `#`}
|
||||||
${cloud_runner_options_1.default.cloudRunnerDebugTree ? `tree -L 3 /data/cache` : `#`}
|
${cloud_runner_options_1.default.cloudRunnerDebug ? `tree -L 3 /data/cache` : `#`}
|
||||||
secrets:
|
secrets:
|
||||||
- name: awsAccessKeyId
|
- name: awsAccessKeyId
|
||||||
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
||||||
|
|
@ -4796,13 +4795,16 @@ exports.CloudRunnerFolders = void 0;
|
||||||
const node_path_1 = __importDefault(__nccwpck_require__(49411));
|
const node_path_1 = __importDefault(__nccwpck_require__(49411));
|
||||||
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
|
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
|
||||||
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
|
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
|
||||||
|
const build_parameters_1 = __importDefault(__nccwpck_require__(80787));
|
||||||
class CloudRunnerFolders {
|
class CloudRunnerFolders {
|
||||||
static ToLinuxFolder(folder) {
|
static ToLinuxFolder(folder) {
|
||||||
return folder.replace(/\\/g, `/`);
|
return folder.replace(/\\/g, `/`);
|
||||||
}
|
}
|
||||||
// Only the following paths that do not start a path.join with another "Full" suffixed property need to start with an absolute /
|
// Only the following paths that do not start a path.join with another "Full" suffixed property need to start with an absolute /
|
||||||
static get uniqueCloudRunnerJobFolderAbsolute() {
|
static get uniqueCloudRunnerJobFolderAbsolute() {
|
||||||
return cloud_runner_1.default.buildParameters && cloud_runner_1.default.buildParameters.retainWorkspaces && cloud_runner_1.default.lockedWorkspace
|
return cloud_runner_1.default.buildParameters &&
|
||||||
|
build_parameters_1.default.useRetainedWorkspaceMode(cloud_runner_1.default.buildParameters) &&
|
||||||
|
cloud_runner_1.default.lockedWorkspace
|
||||||
? node_path_1.default.join(`/`, CloudRunnerFolders.buildVolumeFolder, cloud_runner_1.default.lockedWorkspace)
|
? node_path_1.default.join(`/`, CloudRunnerFolders.buildVolumeFolder, cloud_runner_1.default.lockedWorkspace)
|
||||||
: node_path_1.default.join(`/`, CloudRunnerFolders.buildVolumeFolder, cloud_runner_1.default.buildParameters.buildGuid);
|
: node_path_1.default.join(`/`, CloudRunnerFolders.buildVolumeFolder, cloud_runner_1.default.buildParameters.buildGuid);
|
||||||
}
|
}
|
||||||
|
|
@ -4995,10 +4997,10 @@ class CloudRunnerQueryOverride {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
static shouldUseOverride(query) {
|
static shouldUseOverride(query) {
|
||||||
if (cloud_runner_options_1.default.readInputOverrideCommand() !== '') {
|
if (cloud_runner_options_1.default.inputOverrideCommand() !== '') {
|
||||||
if (cloud_runner_options_1.default.readInputFromOverrideList() !== '') {
|
if (cloud_runner_options_1.default.inputOverrides() !== '') {
|
||||||
const doesInclude = cloud_runner_options_1.default.readInputFromOverrideList().split(',').includes(query) ||
|
const doesInclude = cloud_runner_options_1.default.inputOverrides().split(',').includes(query) ||
|
||||||
cloud_runner_options_1.default.readInputFromOverrideList().split(',').includes(input_1.default.ToEnvVarFormat(query));
|
cloud_runner_options_1.default.inputOverrides().split(',').includes(input_1.default.ToEnvVarFormat(query));
|
||||||
return doesInclude ? true : false;
|
return doesInclude ? true : false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -5010,10 +5012,10 @@ class CloudRunnerQueryOverride {
|
||||||
if (!this.shouldUseOverride(query)) {
|
if (!this.shouldUseOverride(query)) {
|
||||||
throw new Error(`Should not be trying to run override query on ${query}`);
|
throw new Error(`Should not be trying to run override query on ${query}`);
|
||||||
}
|
}
|
||||||
return await generic_input_reader_1.GenericInputReader.Run(formatFunction(cloud_runner_options_1.default.readInputOverrideCommand(), [{ key: 0, value: query }]));
|
return await generic_input_reader_1.GenericInputReader.Run(formatFunction(cloud_runner_options_1.default.inputOverrideCommand(), [{ key: 0, value: query }]));
|
||||||
}
|
}
|
||||||
static async PopulateQueryOverrideInput() {
|
static async PopulateQueryOverrideInput() {
|
||||||
const queries = cloud_runner_options_1.default.readInputFromOverrideList().split(',');
|
const queries = cloud_runner_options_1.default.inputOverrides().split(',');
|
||||||
CloudRunnerQueryOverride.queryOverrides = {};
|
CloudRunnerQueryOverride.queryOverrides = {};
|
||||||
for (const element of queries) {
|
for (const element of queries) {
|
||||||
if (CloudRunnerQueryOverride.shouldUseOverride(element)) {
|
if (CloudRunnerQueryOverride.shouldUseOverride(element)) {
|
||||||
|
|
@ -5263,7 +5265,7 @@ exports.SharedWorkspaceLocking = void 0;
|
||||||
const cloud_runner_system_1 = __nccwpck_require__(99393);
|
const cloud_runner_system_1 = __nccwpck_require__(99393);
|
||||||
const node_fs_1 = __importDefault(__nccwpck_require__(87561));
|
const node_fs_1 = __importDefault(__nccwpck_require__(87561));
|
||||||
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
||||||
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
|
const build_parameters_1 = __importDefault(__nccwpck_require__(80787));
|
||||||
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
|
const cloud_runner_1 = __importDefault(__nccwpck_require__(79144));
|
||||||
class SharedWorkspaceLocking {
|
class SharedWorkspaceLocking {
|
||||||
static get workspaceBucketRoot() {
|
static get workspaceBucketRoot() {
|
||||||
|
|
@ -5309,7 +5311,7 @@ class SharedWorkspaceLocking {
|
||||||
.filter((x) => x.includes(workspace) && x.endsWith(`_lock`));
|
.filter((x) => x.includes(workspace) && x.endsWith(`_lock`));
|
||||||
}
|
}
|
||||||
static async GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) {
|
static async GetOrCreateLockedWorkspace(workspace, runId, buildParametersContext) {
|
||||||
if (!cloud_runner_options_1.default.retainWorkspaces) {
|
if (!build_parameters_1.default.useRetainedWorkspaceMode(buildParametersContext)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (await SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext)) {
|
if (await SharedWorkspaceLocking.DoesCacheKeyTopLevelExist(buildParametersContext)) {
|
||||||
|
|
@ -5366,8 +5368,7 @@ class SharedWorkspaceLocking {
|
||||||
static async IsWorkspaceBelowMax(workspace, buildParametersContext) {
|
static async IsWorkspaceBelowMax(workspace, buildParametersContext) {
|
||||||
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
||||||
if (workspace === ``) {
|
if (workspace === ``) {
|
||||||
return (workspaces.length < buildParametersContext.maxRetainedWorkspaces ||
|
return (workspaces.length < buildParametersContext.retainWorkspaces || buildParametersContext.retainWorkspaces === 0);
|
||||||
buildParametersContext.maxRetainedWorkspaces === 0);
|
|
||||||
}
|
}
|
||||||
const ordered = [];
|
const ordered = [];
|
||||||
for (const ws of workspaces) {
|
for (const ws of workspaces) {
|
||||||
|
|
@ -5379,8 +5380,8 @@ class SharedWorkspaceLocking {
|
||||||
ordered.sort((x) => x.timestamp);
|
ordered.sort((x) => x.timestamp);
|
||||||
const matches = ordered.filter((x) => x.name.includes(workspace));
|
const matches = ordered.filter((x) => x.name.includes(workspace));
|
||||||
const isWorkspaceBelowMax = matches.length > 0 &&
|
const isWorkspaceBelowMax = matches.length > 0 &&
|
||||||
(ordered.indexOf(matches[0]) < buildParametersContext.maxRetainedWorkspaces ||
|
(ordered.indexOf(matches[0]) < buildParametersContext.retainWorkspaces ||
|
||||||
buildParametersContext.maxRetainedWorkspaces === 0);
|
buildParametersContext.retainWorkspaces === 0);
|
||||||
return isWorkspaceBelowMax;
|
return isWorkspaceBelowMax;
|
||||||
}
|
}
|
||||||
static async GetWorkspaceTimestamp(workspace, buildParametersContext) {
|
static async GetWorkspaceTimestamp(workspace, buildParametersContext) {
|
||||||
|
|
@ -5417,7 +5418,7 @@ class SharedWorkspaceLocking {
|
||||||
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
||||||
cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`);
|
cloud_runner_logger_1.default.log(`All workspaces ${workspaces}`);
|
||||||
if (!(await SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext))) {
|
if (!(await SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext))) {
|
||||||
cloud_runner_logger_1.default.log(`Workspace is above max ${workspaces} ${buildParametersContext.maxRetainedWorkspaces}`);
|
cloud_runner_logger_1.default.log(`Workspace is above max ${workspaces} ${buildParametersContext.retainWorkspaces}`);
|
||||||
await SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext);
|
await SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -5788,7 +5789,7 @@ rm ${cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolut
|
||||||
node ${builderPath} -m remote-cli-post-build`;
|
node ${builderPath} -m remote-cli-post-build`;
|
||||||
}
|
}
|
||||||
static get TreeCommand() {
|
static get TreeCommand() {
|
||||||
return cloud_runner_options_1.default.cloudRunnerDebugTree
|
return cloud_runner_options_1.default.cloudRunnerDebug
|
||||||
? `tree -L 2 ${cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute} && tree -L 2 ${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForCacheKeyFull} && du -h -s /${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}/ && du -h -s ${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForAllFull}`
|
? `tree -L 2 ${cloud_runner_folders_1.CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute} && tree -L 2 ${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForCacheKeyFull} && du -h -s /${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}/ && du -h -s ${cloud_runner_folders_1.CloudRunnerFolders.cacheFolderForAllFull}`
|
||||||
: `#`;
|
: `#`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -53,8 +53,8 @@ class BuildParameters {
|
||||||
public kubeStorageClass!: string;
|
public kubeStorageClass!: string;
|
||||||
public chownFilesTo!: string;
|
public chownFilesTo!: string;
|
||||||
public customJobHooks!: string;
|
public customJobHooks!: string;
|
||||||
public readInputFromOverrideList!: string;
|
public inputOverrides!: string;
|
||||||
public readInputOverrideCommand!: string;
|
public inputOverrideCommand!: string;
|
||||||
public cacheKey!: string;
|
public cacheKey!: string;
|
||||||
|
|
||||||
public postBuildSteps!: string;
|
public postBuildSteps!: string;
|
||||||
|
|
@ -70,10 +70,9 @@ class BuildParameters {
|
||||||
public cloudRunnerDebug!: boolean | undefined;
|
public cloudRunnerDebug!: boolean | undefined;
|
||||||
public cloudRunnerBuilderPlatform!: string | undefined;
|
public cloudRunnerBuilderPlatform!: string | undefined;
|
||||||
public isCliMode!: boolean;
|
public isCliMode!: boolean;
|
||||||
public retainWorkspaces!: boolean;
|
public retainWorkspaces!: number;
|
||||||
public maxRetainedWorkspaces!: number;
|
|
||||||
public useSharedLargePackages!: boolean;
|
public useSharedLargePackages!: boolean;
|
||||||
public useLz4Compression!: boolean;
|
public compressionStrategy!: boolean;
|
||||||
public garbageCollectionMaxAge!: number;
|
public garbageCollectionMaxAge!: number;
|
||||||
public githubChecks!: boolean;
|
public githubChecks!: boolean;
|
||||||
public asyncWorkflow!: boolean;
|
public asyncWorkflow!: boolean;
|
||||||
|
|
@ -83,6 +82,9 @@ class BuildParameters {
|
||||||
public skipCache!: boolean;
|
public skipCache!: boolean;
|
||||||
public cacheUnityInstallationOnMac!: boolean;
|
public cacheUnityInstallationOnMac!: boolean;
|
||||||
public unityHubVersionOnMac!: string;
|
public unityHubVersionOnMac!: string;
|
||||||
|
public static useRetainedWorkspaceMode(buildParameters: BuildParameters) {
|
||||||
|
return buildParameters.retainWorkspaces > 0;
|
||||||
|
}
|
||||||
|
|
||||||
static async create(): Promise<BuildParameters> {
|
static async create(): Promise<BuildParameters> {
|
||||||
const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidExportType);
|
const buildFile = this.parseBuildFile(Input.buildName, Input.targetPlatform, Input.androidExportType);
|
||||||
|
|
@ -170,14 +172,13 @@ class BuildParameters {
|
||||||
logId: customAlphabet(CloudRunnerConstants.alphabet, 9)(),
|
logId: customAlphabet(CloudRunnerConstants.alphabet, 9)(),
|
||||||
buildGuid: CloudRunnerBuildGuid.generateGuid(Input.runNumber, Input.targetPlatform),
|
buildGuid: CloudRunnerBuildGuid.generateGuid(Input.runNumber, Input.targetPlatform),
|
||||||
customJobHooks: CloudRunnerOptions.customJobHooks(),
|
customJobHooks: CloudRunnerOptions.customJobHooks(),
|
||||||
readInputOverrideCommand: CloudRunnerOptions.readInputOverrideCommand(),
|
inputOverrideCommand: CloudRunnerOptions.inputOverrideCommand(),
|
||||||
readInputFromOverrideList: CloudRunnerOptions.readInputFromOverrideList(),
|
inputOverrides: CloudRunnerOptions.inputOverrides(),
|
||||||
kubeStorageClass: CloudRunnerOptions.kubeStorageClass,
|
kubeStorageClass: CloudRunnerOptions.kubeStorageClass,
|
||||||
cacheKey: CloudRunnerOptions.cacheKey,
|
cacheKey: CloudRunnerOptions.cacheKey,
|
||||||
retainWorkspaces: CloudRunnerOptions.retainWorkspaces,
|
retainWorkspaces: CloudRunnerOptions.retainWorkspaces,
|
||||||
useSharedLargePackages: CloudRunnerOptions.useSharedLargePackages,
|
useSharedLargePackages: CloudRunnerOptions.useSharedLargePackages,
|
||||||
useLz4Compression: CloudRunnerOptions.useLz4Compression,
|
compressionStrategy: CloudRunnerOptions.compressionStrategy,
|
||||||
maxRetainedWorkspaces: CloudRunnerOptions.maxRetainedWorkspaces,
|
|
||||||
garbageCollectionMaxAge: CloudRunnerOptions.garbageCollectionMaxAge,
|
garbageCollectionMaxAge: CloudRunnerOptions.garbageCollectionMaxAge,
|
||||||
githubChecks: CloudRunnerOptions.githubChecks,
|
githubChecks: CloudRunnerOptions.githubChecks,
|
||||||
asyncWorkflow: CloudRunnerOptions.asyncCloudRunner,
|
asyncWorkflow: CloudRunnerOptions.asyncCloudRunner,
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@ export class Cli {
|
||||||
`build-${CloudRunner.buildParameters.buildGuid}`,
|
`build-${CloudRunner.buildParameters.buildGuid}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!CloudRunner.buildParameters.retainWorkspaces) {
|
if (!BuildParameters.useRetainedWorkspaceMode(CloudRunner.buildParameters)) {
|
||||||
await CloudRunnerSystem.Run(
|
await CloudRunnerSystem.Run(
|
||||||
`rm -r ${CloudRunnerFolders.ToLinuxFolder(CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute)}`,
|
`rm -r ${CloudRunnerFolders.ToLinuxFolder(CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute)}`,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -181,12 +181,12 @@ class CloudRunnerOptions {
|
||||||
// Input override handling
|
// Input override handling
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
|
|
||||||
static readInputFromOverrideList() {
|
static inputOverrides() {
|
||||||
return CloudRunnerOptions.getInput('readInputFromOverrideList') || '';
|
return CloudRunnerOptions.getInput('inputOverrides') || '';
|
||||||
}
|
}
|
||||||
|
|
||||||
static readInputOverrideCommand() {
|
static inputOverrideCommand() {
|
||||||
const value = CloudRunnerOptions.getInput('readInputOverrideCommand');
|
const value = CloudRunnerOptions.getInput('inputOverrideCommand');
|
||||||
|
|
||||||
if (value === 'gcp-secret-manager') {
|
if (value === 'gcp-secret-manager') {
|
||||||
return 'gcloud secrets versions access 1 --secret="{0}"';
|
return 'gcloud secrets versions access 1 --secret="{0}"';
|
||||||
|
|
@ -241,15 +241,11 @@ class CloudRunnerOptions {
|
||||||
return (
|
return (
|
||||||
CloudRunnerOptions.getInput(`cloudRunnerTests`) === `true` ||
|
CloudRunnerOptions.getInput(`cloudRunnerTests`) === `true` ||
|
||||||
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
||||||
|
CloudRunnerOptions.getInput(`cloudRunnerDebug`) === `true` ||
|
||||||
|
CloudRunnerOptions.getInput(`cloudRunnerDebugEnv`) === `true` ||
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
static get cloudRunnerDebugTree(): boolean {
|
|
||||||
return CloudRunnerOptions.getInput(`cloudRunnerDebugTree`) === `true` || false;
|
|
||||||
}
|
|
||||||
static get cloudRunnerDebugEnv(): boolean {
|
|
||||||
return CloudRunnerOptions.getInput(`cloudRunnerDebugEnv`) === `true` || false;
|
|
||||||
}
|
|
||||||
static get skipLFS(): boolean {
|
static get skipLFS(): boolean {
|
||||||
return CloudRunnerOptions.getInput(`skipLFS`) === `true` || false;
|
return CloudRunnerOptions.getInput(`skipLFS`) === `true` || false;
|
||||||
}
|
}
|
||||||
|
|
@ -269,8 +265,8 @@ class CloudRunnerOptions {
|
||||||
return (CloudRunnerOptions.getInput(`useSharedBuilder`) || 'false') === 'true';
|
return (CloudRunnerOptions.getInput(`useSharedBuilder`) || 'false') === 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static get useLz4Compression(): boolean {
|
public static get compressionStrategy(): boolean {
|
||||||
return (CloudRunnerOptions.getInput(`useLz4Compression`) || 'false') === 'true';
|
return (CloudRunnerOptions.getInput(`compressionStrategy`) || 'false') === 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static get useCleanupCron(): boolean {
|
public static get useCleanupCron(): boolean {
|
||||||
|
|
@ -281,12 +277,8 @@ class CloudRunnerOptions {
|
||||||
// Retained Workspace
|
// Retained Workspace
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
|
|
||||||
public static get retainWorkspaces(): boolean {
|
public static get retainWorkspaces(): number {
|
||||||
return CloudRunnerOptions.getInput(`retainWorkspaces`) || false;
|
return CloudRunnerOptions.getInput(`retainWorkspaces`) || 0;
|
||||||
}
|
|
||||||
|
|
||||||
static get maxRetainedWorkspaces(): number {
|
|
||||||
return Number(CloudRunnerOptions.getInput(`maxRetainedWorkspaces`)) || 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ### ### ###
|
// ### ### ###
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ class CloudRunner {
|
||||||
core.setOutput(
|
core.setOutput(
|
||||||
Input.ToEnvVarFormat(`buildArtifact`),
|
Input.ToEnvVarFormat(`buildArtifact`),
|
||||||
`build-${CloudRunner.buildParameters.buildGuid}.tar${
|
`build-${CloudRunner.buildParameters.buildGuid}.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}`,
|
}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -91,7 +91,7 @@ class CloudRunner {
|
||||||
);
|
);
|
||||||
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
||||||
try {
|
try {
|
||||||
if (buildParameters.retainWorkspaces) {
|
if (BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
CloudRunner.lockedWorkspace = SharedWorkspaceLocking.NewWorkspaceName();
|
CloudRunner.lockedWorkspace = SharedWorkspaceLocking.NewWorkspaceName();
|
||||||
|
|
||||||
const result = await SharedWorkspaceLocking.GetOrCreateLockedWorkspace(
|
const result = await SharedWorkspaceLocking.GetOrCreateLockedWorkspace(
|
||||||
|
|
@ -107,8 +107,8 @@ class CloudRunner {
|
||||||
{ name: `CI_LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
{ name: `CI_LOCKED_WORKSPACE`, value: CloudRunner.lockedWorkspace },
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
CloudRunnerLogger.log(`Max retained workspaces reached ${buildParameters.maxRetainedWorkspaces}`);
|
CloudRunnerLogger.log(`Max retained workspaces reached ${buildParameters.retainWorkspaces}`);
|
||||||
buildParameters.retainWorkspaces = false;
|
buildParameters.retainWorkspaces = 0;
|
||||||
CloudRunner.lockedWorkspace = undefined;
|
CloudRunner.lockedWorkspace = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -131,7 +131,7 @@ class CloudRunner {
|
||||||
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
if (!CloudRunner.buildParameters.isCliMode) core.endGroup();
|
||||||
await GitHub.updateGitHubCheck(CloudRunner.buildParameters.buildGuid, `success`, `success`, `completed`);
|
await GitHub.updateGitHubCheck(CloudRunner.buildParameters.buildGuid, `success`, `success`, `completed`);
|
||||||
|
|
||||||
if (CloudRunner.buildParameters.retainWorkspaces) {
|
if (BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
const workspace = CloudRunner.lockedWorkspace || ``;
|
const workspace = CloudRunner.lockedWorkspace || ``;
|
||||||
await SharedWorkspaceLocking.ReleaseWorkspace(
|
await SharedWorkspaceLocking.ReleaseWorkspace(
|
||||||
workspace,
|
workspace,
|
||||||
|
|
|
||||||
|
|
@ -51,14 +51,14 @@ class LocalDockerCloudRunner implements ProviderInterface {
|
||||||
if (
|
if (
|
||||||
fs.existsSync(
|
fs.existsSync(
|
||||||
`${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${
|
`${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}`,
|
}`,
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
await CloudRunnerSystem.Run(`ls ${workspace}/cloud-runner-cache/cache/build/`);
|
await CloudRunnerSystem.Run(`ls ${workspace}/cloud-runner-cache/cache/build/`);
|
||||||
await CloudRunnerSystem.Run(
|
await CloudRunnerSystem.Run(
|
||||||
`rm -r ${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${
|
`rm -r ${workspace}/cloud-runner-cache/cache/build/build-${buildParameters.buildGuid}.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}`,
|
}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,9 @@ class Kubernetes implements ProviderInterface {
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
this.buildParameters = buildParameters;
|
this.buildParameters = buildParameters;
|
||||||
const id = buildParameters.retainWorkspaces ? CloudRunner.lockedWorkspace : buildParameters.buildGuid;
|
const id = BuildParameters.useRetainedWorkspaceMode(buildParameters)
|
||||||
|
? CloudRunner.lockedWorkspace
|
||||||
|
: buildParameters.buildGuid;
|
||||||
this.pvcName = `unity-builder-pvc-${id}`;
|
this.pvcName = `unity-builder-pvc-${id}`;
|
||||||
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
this.cleanupCronJobName = `unity-builder-cronjob-${id}`;
|
||||||
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
this.serviceAccountName = `service-account-${buildParameters.buildGuid}`;
|
||||||
|
|
@ -332,7 +334,7 @@ class Kubernetes implements ProviderInterface {
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
|
||||||
) {
|
) {
|
||||||
if (buildParameters.retainWorkspaces) {
|
if (BuildParameters.useRetainedWorkspaceMode(buildParameters)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CloudRunnerLogger.log(`deleting PVC`);
|
CloudRunnerLogger.log(`deleting PVC`);
|
||||||
|
|
|
||||||
|
|
@ -48,10 +48,10 @@ export class Caching {
|
||||||
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
||||||
const startPath = process.cwd();
|
const startPath = process.cwd();
|
||||||
let compressionSuffix = '';
|
let compressionSuffix = '';
|
||||||
if (CloudRunner.buildParameters.useLz4Compression === true) {
|
if (CloudRunner.buildParameters.compressionStrategy === true) {
|
||||||
compressionSuffix = `.lz4`;
|
compressionSuffix = `.lz4`;
|
||||||
}
|
}
|
||||||
CloudRunnerLogger.log(`Compression: ${CloudRunner.buildParameters.useLz4Compression} ${compressionSuffix}`);
|
CloudRunnerLogger.log(`Compression: ${CloudRunner.buildParameters.compressionStrategy} ${compressionSuffix}`);
|
||||||
try {
|
try {
|
||||||
if (!(await fileExists(cacheFolder))) {
|
if (!(await fileExists(cacheFolder))) {
|
||||||
await CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
|
await CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
|
||||||
|
|
@ -106,7 +106,7 @@ export class Caching {
|
||||||
}
|
}
|
||||||
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
cacheArtifactName = cacheArtifactName.replace(' ', '');
|
||||||
let compressionSuffix = '';
|
let compressionSuffix = '';
|
||||||
if (CloudRunner.buildParameters.useLz4Compression === true) {
|
if (CloudRunner.buildParameters.compressionStrategy === true) {
|
||||||
compressionSuffix = `.lz4`;
|
compressionSuffix = `.lz4`;
|
||||||
}
|
}
|
||||||
const startPath = process.cwd();
|
const startPath = process.cwd();
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import { CloudRunnerSystem } from '../services/cloud-runner-system';
|
||||||
import YAML from 'yaml';
|
import YAML from 'yaml';
|
||||||
import GitHub from '../../github';
|
import GitHub from '../../github';
|
||||||
import { TaskParameterSerializer } from '../services/task-parameter-serializer';
|
import { TaskParameterSerializer } from '../services/task-parameter-serializer';
|
||||||
|
import BuildParameters from '../../build-parameters';
|
||||||
|
|
||||||
export class RemoteClient {
|
export class RemoteClient {
|
||||||
@CliFunction(`remote-cli-pre-build`, `sets up a repository, usually before a game-ci build`)
|
@CliFunction(`remote-cli-pre-build`, `sets up a repository, usually before a game-ci build`)
|
||||||
|
|
@ -89,11 +90,15 @@ export class RemoteClient {
|
||||||
private static async cloneRepoWithoutLFSFiles() {
|
private static async cloneRepoWithoutLFSFiles() {
|
||||||
process.chdir(`${CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute}`);
|
process.chdir(`${CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute}`);
|
||||||
|
|
||||||
if (CloudRunner.buildParameters.retainWorkspaces) {
|
if (BuildParameters.useRetainedWorkspaceMode(CloudRunner.buildParameters)) {
|
||||||
if (fs.existsSync(path.join(CloudRunnerFolders.repoPathAbsolute, `.git`))) {
|
if (fs.existsSync(path.join(CloudRunnerFolders.repoPathAbsolute, `.git`))) {
|
||||||
process.chdir(CloudRunnerFolders.repoPathAbsolute);
|
process.chdir(CloudRunnerFolders.repoPathAbsolute);
|
||||||
RemoteClientLogger.log(
|
RemoteClientLogger.log(
|
||||||
`${CloudRunnerFolders.repoPathAbsolute} repo exists - skipping clone - retained workspace mode ${CloudRunner.buildParameters.retainWorkspaces}`,
|
`${
|
||||||
|
CloudRunnerFolders.repoPathAbsolute
|
||||||
|
} repo exists - skipping clone - retained workspace mode ${BuildParameters.useRetainedWorkspaceMode(
|
||||||
|
CloudRunner.buildParameters,
|
||||||
|
)}`,
|
||||||
);
|
);
|
||||||
await CloudRunnerSystem.Run(`git fetch && git reset --hard ${CloudRunner.buildParameters.gitSha}`);
|
await CloudRunnerSystem.Run(`git fetch && git reset --hard ${CloudRunner.buildParameters.gitSha}`);
|
||||||
|
|
||||||
|
|
@ -152,7 +157,7 @@ export class RemoteClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static async handleRetainedWorkspace() {
|
static async handleRetainedWorkspace() {
|
||||||
if (!CloudRunner.buildParameters.retainWorkspaces) {
|
if (!BuildParameters.useRetainedWorkspaceMode(CloudRunner.buildParameters)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RemoteClientLogger.log(`Retained Workspace: ${CloudRunner.lockedWorkspace !== undefined}`);
|
RemoteClientLogger.log(`Retained Workspace: ${CloudRunner.lockedWorkspace !== undefined}`);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export class CloudRunnerCustomHooks {
|
||||||
|
|
||||||
return `echo "---"
|
return `echo "---"
|
||||||
echo "start cloud runner init"
|
echo "start cloud runner init"
|
||||||
${CloudRunnerOptions.cloudRunnerDebugEnv ? `printenv` : `#`}
|
${CloudRunnerOptions.cloudRunnerDebug ? `printenv` : `#`}
|
||||||
echo "start of cloud runner job"
|
echo "start of cloud runner job"
|
||||||
${hooks.filter((x) => x.hook.includes(`before`)).map((x) => x.commands) || ' '}
|
${hooks.filter((x) => x.hook.includes(`before`)).map((x) => x.commands) || ' '}
|
||||||
${commands}
|
${commands}
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,14 @@ export class CloudRunnerCustomSteps {
|
||||||
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile default
|
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile default
|
||||||
aws configure set region $AWS_DEFAULT_REGION --profile default
|
aws configure set region $AWS_DEFAULT_REGION --profile default
|
||||||
aws s3 cp /data/cache/$CI_CACHE_KEY/build/build-${CloudRunner.buildParameters.buildGuid}.tar${
|
aws s3 cp /data/cache/$CI_CACHE_KEY/build/build-${CloudRunner.buildParameters.buildGuid}.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
} s3://${
|
} s3://${
|
||||||
CloudRunner.buildParameters.awsBaseStackName
|
CloudRunner.buildParameters.awsBaseStackName
|
||||||
}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID.tar${
|
}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}
|
}
|
||||||
rm /data/cache/$CI_CACHE_KEY/build/build-${CloudRunner.buildParameters.buildGuid}.tar${
|
rm /data/cache/$CI_CACHE_KEY/build/build-${CloudRunner.buildParameters.buildGuid}.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}
|
}
|
||||||
secrets:
|
secrets:
|
||||||
- name: awsAccessKeyId
|
- name: awsAccessKeyId
|
||||||
|
|
@ -73,9 +73,9 @@ export class CloudRunnerCustomSteps {
|
||||||
aws s3 cp s3://${
|
aws s3 cp s3://${
|
||||||
CloudRunner.buildParameters.awsBaseStackName
|
CloudRunner.buildParameters.awsBaseStackName
|
||||||
}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${
|
}/cloud-runner-cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
} /data/cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${
|
} /data/cache/$CI_CACHE_KEY/build/build-$BUILD_GUID_TARGET.tar${
|
||||||
CloudRunner.buildParameters.useLz4Compression ? '.lz4' : ''
|
CloudRunner.buildParameters.compressionStrategy ? '.lz4' : ''
|
||||||
}
|
}
|
||||||
secrets:
|
secrets:
|
||||||
- name: CI_AWS_ACCESS_KEY_ID
|
- name: CI_AWS_ACCESS_KEY_ID
|
||||||
|
|
@ -169,8 +169,8 @@ export class CloudRunnerCustomSteps {
|
||||||
hook: after
|
hook: after
|
||||||
commands: |
|
commands: |
|
||||||
apt-get update > /dev/null
|
apt-get update > /dev/null
|
||||||
${CloudRunnerOptions.cloudRunnerDebugTree ? `apt-get install -y tree > /dev/null` : `#`}
|
${CloudRunnerOptions.cloudRunnerDebug ? `apt-get install -y tree > /dev/null` : `#`}
|
||||||
${CloudRunnerOptions.cloudRunnerDebugTree ? `tree -L 3 /data/cache` : `#`}
|
${CloudRunnerOptions.cloudRunnerDebug ? `tree -L 3 /data/cache` : `#`}
|
||||||
secrets:
|
secrets:
|
||||||
- name: awsAccessKeyId
|
- name: awsAccessKeyId
|
||||||
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
value: ${process.env.AWS_ACCESS_KEY_ID || ``}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import CloudRunnerOptions from '../cloud-runner-options';
|
import CloudRunnerOptions from '../cloud-runner-options';
|
||||||
import CloudRunner from './../cloud-runner';
|
import CloudRunner from './../cloud-runner';
|
||||||
|
import BuildParameters from '../../build-parameters';
|
||||||
|
|
||||||
export class CloudRunnerFolders {
|
export class CloudRunnerFolders {
|
||||||
public static readonly repositoryFolder = 'repo';
|
public static readonly repositoryFolder = 'repo';
|
||||||
|
|
@ -12,7 +13,9 @@ export class CloudRunnerFolders {
|
||||||
// Only the following paths that do not start a path.join with another "Full" suffixed property need to start with an absolute /
|
// Only the following paths that do not start a path.join with another "Full" suffixed property need to start with an absolute /
|
||||||
|
|
||||||
public static get uniqueCloudRunnerJobFolderAbsolute(): string {
|
public static get uniqueCloudRunnerJobFolderAbsolute(): string {
|
||||||
return CloudRunner.buildParameters && CloudRunner.buildParameters.retainWorkspaces && CloudRunner.lockedWorkspace
|
return CloudRunner.buildParameters &&
|
||||||
|
BuildParameters.useRetainedWorkspaceMode(CloudRunner.buildParameters) &&
|
||||||
|
CloudRunner.lockedWorkspace
|
||||||
? path.join(`/`, CloudRunnerFolders.buildVolumeFolder, CloudRunner.lockedWorkspace)
|
? path.join(`/`, CloudRunnerFolders.buildVolumeFolder, CloudRunner.lockedWorkspace)
|
||||||
: path.join(`/`, CloudRunnerFolders.buildVolumeFolder, CloudRunner.buildParameters.buildGuid);
|
: path.join(`/`, CloudRunnerFolders.buildVolumeFolder, CloudRunner.buildParameters.buildGuid);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,11 +31,11 @@ class CloudRunnerQueryOverride {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static shouldUseOverride(query: string) {
|
private static shouldUseOverride(query: string) {
|
||||||
if (CloudRunnerOptions.readInputOverrideCommand() !== '') {
|
if (CloudRunnerOptions.inputOverrideCommand() !== '') {
|
||||||
if (CloudRunnerOptions.readInputFromOverrideList() !== '') {
|
if (CloudRunnerOptions.inputOverrides() !== '') {
|
||||||
const doesInclude =
|
const doesInclude =
|
||||||
CloudRunnerOptions.readInputFromOverrideList().split(',').includes(query) ||
|
CloudRunnerOptions.inputOverrides().split(',').includes(query) ||
|
||||||
CloudRunnerOptions.readInputFromOverrideList().split(',').includes(Input.ToEnvVarFormat(query));
|
CloudRunnerOptions.inputOverrides().split(',').includes(Input.ToEnvVarFormat(query));
|
||||||
|
|
||||||
return doesInclude ? true : false;
|
return doesInclude ? true : false;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -50,12 +50,12 @@ class CloudRunnerQueryOverride {
|
||||||
}
|
}
|
||||||
|
|
||||||
return await GenericInputReader.Run(
|
return await GenericInputReader.Run(
|
||||||
formatFunction(CloudRunnerOptions.readInputOverrideCommand(), [{ key: 0, value: query }]),
|
formatFunction(CloudRunnerOptions.inputOverrideCommand(), [{ key: 0, value: query }]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async PopulateQueryOverrideInput() {
|
public static async PopulateQueryOverrideInput() {
|
||||||
const queries = CloudRunnerOptions.readInputFromOverrideList().split(',');
|
const queries = CloudRunnerOptions.inputOverrides().split(',');
|
||||||
CloudRunnerQueryOverride.queryOverrides = {};
|
CloudRunnerQueryOverride.queryOverrides = {};
|
||||||
for (const element of queries) {
|
for (const element of queries) {
|
||||||
if (CloudRunnerQueryOverride.shouldUseOverride(element)) {
|
if (CloudRunnerQueryOverride.shouldUseOverride(element)) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { CloudRunnerSystem } from './cloud-runner-system';
|
import { CloudRunnerSystem } from './cloud-runner-system';
|
||||||
import fs from 'node:fs';
|
import fs from 'node:fs';
|
||||||
import CloudRunnerLogger from './cloud-runner-logger';
|
import CloudRunnerLogger from './cloud-runner-logger';
|
||||||
import CloudRunnerOptions from '../cloud-runner-options';
|
|
||||||
import BuildParameters from '../../build-parameters';
|
import BuildParameters from '../../build-parameters';
|
||||||
import CloudRunner from '../cloud-runner';
|
import CloudRunner from '../cloud-runner';
|
||||||
export class SharedWorkspaceLocking {
|
export class SharedWorkspaceLocking {
|
||||||
|
|
@ -68,7 +67,7 @@ export class SharedWorkspaceLocking {
|
||||||
runId: string,
|
runId: string,
|
||||||
buildParametersContext: BuildParameters,
|
buildParametersContext: BuildParameters,
|
||||||
) {
|
) {
|
||||||
if (!CloudRunnerOptions.retainWorkspaces) {
|
if (!BuildParameters.useRetainedWorkspaceMode(buildParametersContext)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,8 +152,7 @@ export class SharedWorkspaceLocking {
|
||||||
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
const workspaces = await SharedWorkspaceLocking.GetAllWorkspaces(buildParametersContext);
|
||||||
if (workspace === ``) {
|
if (workspace === ``) {
|
||||||
return (
|
return (
|
||||||
workspaces.length < buildParametersContext.maxRetainedWorkspaces ||
|
workspaces.length < buildParametersContext.retainWorkspaces || buildParametersContext.retainWorkspaces === 0
|
||||||
buildParametersContext.maxRetainedWorkspaces === 0
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
const ordered: any[] = [];
|
const ordered: any[] = [];
|
||||||
|
|
@ -168,8 +166,8 @@ export class SharedWorkspaceLocking {
|
||||||
const matches = ordered.filter((x) => x.name.includes(workspace));
|
const matches = ordered.filter((x) => x.name.includes(workspace));
|
||||||
const isWorkspaceBelowMax =
|
const isWorkspaceBelowMax =
|
||||||
matches.length > 0 &&
|
matches.length > 0 &&
|
||||||
(ordered.indexOf(matches[0]) < buildParametersContext.maxRetainedWorkspaces ||
|
(ordered.indexOf(matches[0]) < buildParametersContext.retainWorkspaces ||
|
||||||
buildParametersContext.maxRetainedWorkspaces === 0);
|
buildParametersContext.retainWorkspaces === 0);
|
||||||
|
|
||||||
return isWorkspaceBelowMax;
|
return isWorkspaceBelowMax;
|
||||||
}
|
}
|
||||||
|
|
@ -230,7 +228,7 @@ export class SharedWorkspaceLocking {
|
||||||
|
|
||||||
CloudRunnerLogger.log(`All workspaces ${workspaces}`);
|
CloudRunnerLogger.log(`All workspaces ${workspaces}`);
|
||||||
if (!(await SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext))) {
|
if (!(await SharedWorkspaceLocking.IsWorkspaceBelowMax(workspace, buildParametersContext))) {
|
||||||
CloudRunnerLogger.log(`Workspace is above max ${workspaces} ${buildParametersContext.maxRetainedWorkspaces}`);
|
CloudRunnerLogger.log(`Workspace is above max ${workspaces} ${buildParametersContext.retainWorkspaces}`);
|
||||||
await SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext);
|
await SharedWorkspaceLocking.CleanupWorkspace(workspace, buildParametersContext);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ describe('Cloud Runner Retain Workspace', () => {
|
||||||
unityVersion: UnityVersioning.determineUnityVersion('test-project', UnityVersioning.read('test-project')),
|
unityVersion: UnityVersioning.determineUnityVersion('test-project', UnityVersioning.read('test-project')),
|
||||||
targetPlatform: 'StandaloneLinux64',
|
targetPlatform: 'StandaloneLinux64',
|
||||||
cacheKey: `test-case-${uuidv4()}`,
|
cacheKey: `test-case-${uuidv4()}`,
|
||||||
retainWorkspaces: true,
|
retainWorkspaces: 1,
|
||||||
};
|
};
|
||||||
const buildParameter = await CreateParameters(overrides);
|
const buildParameter = await CreateParameters(overrides);
|
||||||
expect(buildParameter.projectPath).toEqual(overrides.projectPath);
|
expect(buildParameter.projectPath).toEqual(overrides.projectPath);
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ rm ${CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute}/setEnv.sh`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static get TreeCommand(): string {
|
private static get TreeCommand(): string {
|
||||||
return CloudRunnerOptions.cloudRunnerDebugTree
|
return CloudRunnerOptions.cloudRunnerDebug
|
||||||
? `tree -L 2 ${CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute} && tree -L 2 ${CloudRunnerFolders.cacheFolderForCacheKeyFull} && du -h -s /${CloudRunnerFolders.buildVolumeFolder}/ && du -h -s ${CloudRunnerFolders.cacheFolderForAllFull}`
|
? `tree -L 2 ${CloudRunnerFolders.uniqueCloudRunnerJobFolderAbsolute} && tree -L 2 ${CloudRunnerFolders.cacheFolderForCacheKeyFull} && du -h -s /${CloudRunnerFolders.buildVolumeFolder}/ && du -h -s ${CloudRunnerFolders.cacheFolderForAllFull}`
|
||||||
: `#`;
|
: `#`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue