import cli methods

pull/353/head
Frostebite 2022-04-08 19:22:01 +01:00
parent 97358c6298
commit df84273a78
4 changed files with 75 additions and 15 deletions

14
dist/index.js vendored
View File

@ -2571,9 +2571,9 @@ class Caching {
if (!fs_1.default.existsSync(cacheFolder)) { if (!fs_1.default.existsSync(cacheFolder)) {
yield cloud_runner_system_1.CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
} }
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${cacheFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${cacheFolder.replace(/\\/g, `/`)}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${path_1.default.resolve(sourceFolder, '..')}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${path_1.default.resolve(sourceFolder, '..').replace(/\\/g, `/`)}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${path_1.default.resolve(sourceFolder)}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${path_1.default.resolve(sourceFolder).replace(/\\/g, `/`)}`);
process.chdir(path_1.default.resolve(sourceFolder, '..')); process.chdir(path_1.default.resolve(sourceFolder, '..'));
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls`);
if (cloud_runner_1.default.buildParameters.cloudRunnerIntegrationTests) { if (cloud_runner_1.default.buildParameters.cloudRunnerIntegrationTests) {
@ -2586,9 +2586,9 @@ class Caching {
return typeof arguments_[number] != 'undefined' ? arguments_[number] : match; return typeof arguments_[number] != 'undefined' ? arguments_[number] : match;
}); });
}; };
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${sourceFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${sourceFolder.replace(/\\/g, `/`)}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`zip -q ${cacheArtifactName}.zip ${path_1.default.basename(sourceFolder)}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`zip -q ${cacheArtifactName}.zip ${path_1.default.basename(sourceFolder)}`);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${sourceFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${sourceFolder.replace(/\\/g, `/`)}`);
console_1.assert(fs_1.default.existsSync(`${cacheArtifactName}.zip`), 'cache zip exists'); console_1.assert(fs_1.default.existsSync(`${cacheArtifactName}.zip`), 'cache zip exists');
console_1.assert(fs_1.default.existsSync(path_1.default.basename(sourceFolder)), 'source folder exists'); console_1.assert(fs_1.default.existsSync(path_1.default.basename(sourceFolder)), 'source folder exists');
if (cloud_runner_1.default.buildParameters.cachePushOverrideCommand) { if (cloud_runner_1.default.buildParameters.cachePushOverrideCommand) {
@ -2621,7 +2621,7 @@ class Caching {
.replace(/\n/g, ``) .replace(/\n/g, ``)
.replace('.zip', ''); .replace('.zip', '');
process.chdir(cacheFolder); process.chdir(cacheFolder);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${cacheFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`ls ${cacheFolder.replace(/\\/g, `/`)}`);
const cacheSelection = cacheArtifactName !== `` && fs_1.default.existsSync(`${cacheArtifactName}.zip`) ? cacheArtifactName : latestInBranch; const cacheSelection = cacheArtifactName !== `` && fs_1.default.existsSync(`${cacheArtifactName}.zip`) ? cacheArtifactName : latestInBranch;
yield cloud_runner_logger_1.default.log(`cache key ${cacheArtifactName} selection ${cacheSelection}`); yield cloud_runner_logger_1.default.log(`cache key ${cacheArtifactName} selection ${cacheSelection}`);
// eslint-disable-next-line func-style // eslint-disable-next-line func-style
@ -2643,7 +2643,7 @@ class Caching {
yield cloud_runner_system_1.CloudRunnerSystem.Run(`unzip -q ${cacheSelection}.zip -d ${path_1.default.basename(resultsFolder)}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`unzip -q ${cacheSelection}.zip -d ${path_1.default.basename(resultsFolder)}`);
remote_client_logger_1.RemoteClientLogger.log(`cache item extracted to ${fullResultsFolder}`); remote_client_logger_1.RemoteClientLogger.log(`cache item extracted to ${fullResultsFolder}`);
remote_client_logger_1.RemoteClientLogger.log(` `); remote_client_logger_1.RemoteClientLogger.log(` `);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`du -h ${fullResultsFolder}`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`du -h ${fullResultsFolder.replace(/\\/g, `/`)}`);
remote_client_logger_1.RemoteClientLogger.log(` `); remote_client_logger_1.RemoteClientLogger.log(` `);
yield cloud_runner_system_1.CloudRunnerSystem.Run(`du -h ${fullResultsFolder}/resultsFolder`); yield cloud_runner_system_1.CloudRunnerSystem.Run(`du -h ${fullResultsFolder}/resultsFolder`);
remote_client_logger_1.RemoteClientLogger.log(` `); remote_client_logger_1.RemoteClientLogger.log(` `);

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,59 @@
import fs from 'fs';
import path from 'path';
import BuildParameters from '../../build-parameters';
import { CLI } from '../../cli/cli';
import Input from '../../input';
import UnityVersioning from '../../unity-versioning';
import CloudRunner from '../cloud-runner';
import { Caching } from './caching';
function guid() {
return Math.trunc((1 + Math.random()) * 0x10000)
.toString(16)
.slice(1);
}
function guidGenerator() {
return `${guid() + guid()}-${guid()}-${guid()}-${guid()}-${guid()}${guid()}${guid()}`;
}
describe('Cloud Runner Caching', () => {
it('responds', () => {});
});
describe('Cloud Runner Caching', () => {
if (process.platform === 'linux') {
it('Simple caching works', async () => {
CLI.options = {
versioning: 'None',
projectPath: 'test-project',
unityVersion: UnityVersioning.read('test-project'),
targetPlatform: 'StandaloneLinux64',
cacheKey: `test-case-${guidGenerator()}`,
};
Input.githubInputEnabled = false;
const buildParameter = await BuildParameters.create();
CloudRunner.buildParameters = buildParameter;
// create test folder
const testFolder = path.resolve(__dirname, CLI.options.cacheKey);
fs.mkdirSync(testFolder);
// crate cache folder
const cacheFolder = path.resolve(__dirname, `cache-${CLI.options.cacheKey}`);
fs.mkdirSync(cacheFolder);
// add test has file to test folders
fs.writeFileSync(path.resolve(testFolder, 'test.txt'), CLI.options.cacheKey);
await Caching.PushToCache(cacheFolder, testFolder, `${CLI.options.cacheKey}.zip`);
// delete test folder
fs.rmdirSync(testFolder);
await Caching.PullFromCache(
cacheFolder.replace(/\\/g, `/`),
testFolder.replace(/\\/g, `/`),
`${CLI.options.cacheKey}.zip`,
);
// compare validity to original hash
expect(fs.readFileSync(path.resolve(testFolder, 'test.txt'))).toContain(CLI.options.cacheKey);
fs.rmdirSync(testFolder);
fs.rmdirSync(cacheFolder);
Input.githubInputEnabled = true;
delete CLI.options;
}, 1000000);
}
});

View File

@ -40,6 +40,7 @@ export class Caching {
CloudRunnerLogger.log(`${error}`); CloudRunnerLogger.log(`${error}`);
} }
} }
public static async PushToCache(cacheFolder: string, sourceFolder: string, cacheArtifactName: string) { public static async PushToCache(cacheFolder: string, sourceFolder: string, cacheArtifactName: string) {
cacheArtifactName = cacheArtifactName.replace(' ', ''); cacheArtifactName = cacheArtifactName.replace(' ', '');
const startPath = process.cwd(); const startPath = process.cwd();
@ -47,9 +48,9 @@ export class Caching {
if (!fs.existsSync(cacheFolder)) { if (!fs.existsSync(cacheFolder)) {
await CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`); await CloudRunnerSystem.Run(`mkdir -p ${cacheFolder}`);
} }
await CloudRunnerSystem.Run(`ls ${cacheFolder}`); await CloudRunnerSystem.Run(`ls ${cacheFolder.replace(/\\/g, `/`)}`);
await CloudRunnerSystem.Run(`ls ${path.resolve(sourceFolder, '..')}`); await CloudRunnerSystem.Run(`ls ${path.resolve(sourceFolder, '..').replace(/\\/g, `/`)}`);
await CloudRunnerSystem.Run(`ls ${path.resolve(sourceFolder)}`); await CloudRunnerSystem.Run(`ls ${path.resolve(sourceFolder).replace(/\\/g, `/`)}`);
process.chdir(path.resolve(sourceFolder, '..')); process.chdir(path.resolve(sourceFolder, '..'));
await CloudRunnerSystem.Run(`ls`); await CloudRunnerSystem.Run(`ls`);
@ -70,9 +71,9 @@ export class Caching {
return typeof arguments_[number] != 'undefined' ? arguments_[number] : match; return typeof arguments_[number] != 'undefined' ? arguments_[number] : match;
}); });
}; };
await CloudRunnerSystem.Run(`ls ${sourceFolder}`); await CloudRunnerSystem.Run(`ls ${sourceFolder.replace(/\\/g, `/`)}`);
await CloudRunnerSystem.Run(`zip -q ${cacheArtifactName}.zip ${path.basename(sourceFolder)}`); await CloudRunnerSystem.Run(`zip -q ${cacheArtifactName}.zip ${path.basename(sourceFolder)}`);
await CloudRunnerSystem.Run(`ls ${sourceFolder}`); await CloudRunnerSystem.Run(`ls ${sourceFolder.replace(/\\/g, `/`)}`);
assert(fs.existsSync(`${cacheArtifactName}.zip`), 'cache zip exists'); assert(fs.existsSync(`${cacheArtifactName}.zip`), 'cache zip exists');
assert(fs.existsSync(path.basename(sourceFolder)), 'source folder exists'); assert(fs.existsSync(path.basename(sourceFolder)), 'source folder exists');
if (CloudRunner.buildParameters.cachePushOverrideCommand) { if (CloudRunner.buildParameters.cachePushOverrideCommand) {
@ -105,7 +106,7 @@ export class Caching {
.replace('.zip', ''); .replace('.zip', '');
process.chdir(cacheFolder); process.chdir(cacheFolder);
await CloudRunnerSystem.Run(`ls ${cacheFolder}`); await CloudRunnerSystem.Run(`ls ${cacheFolder.replace(/\\/g, `/`)}`);
const cacheSelection = const cacheSelection =
cacheArtifactName !== `` && fs.existsSync(`${cacheArtifactName}.zip`) ? cacheArtifactName : latestInBranch; cacheArtifactName !== `` && fs.existsSync(`${cacheArtifactName}.zip`) ? cacheArtifactName : latestInBranch;
@ -135,7 +136,7 @@ export class Caching {
await CloudRunnerSystem.Run(`unzip -q ${cacheSelection}.zip -d ${path.basename(resultsFolder)}`); await CloudRunnerSystem.Run(`unzip -q ${cacheSelection}.zip -d ${path.basename(resultsFolder)}`);
RemoteClientLogger.log(`cache item extracted to ${fullResultsFolder}`); RemoteClientLogger.log(`cache item extracted to ${fullResultsFolder}`);
RemoteClientLogger.log(` `); RemoteClientLogger.log(` `);
await CloudRunnerSystem.Run(`du -h ${fullResultsFolder}`); await CloudRunnerSystem.Run(`du -h ${fullResultsFolder.replace(/\\/g, `/`)}`);
RemoteClientLogger.log(` `); RemoteClientLogger.log(` `);
await CloudRunnerSystem.Run(`du -h ${fullResultsFolder}/resultsFolder`); await CloudRunnerSystem.Run(`du -h ${fullResultsFolder}/resultsFolder`);
RemoteClientLogger.log(` `); RemoteClientLogger.log(` `);