custom jobs start in project path by default
parent
7b00187f26
commit
bc8f67abc9
|
|
@ -4862,7 +4862,7 @@ class CustomWorkflow {
|
||||||
};
|
};
|
||||||
return secret;
|
return secret;
|
||||||
});
|
});
|
||||||
output += yield __1.CloudRunner.Provider.runTask(__1.CloudRunner.buildParameters.buildGuid, step['image'], step['commands'], `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}/`, __1.CloudRunner.cloudRunnerEnvironmentVariables, [...__1.CloudRunner.defaultSecrets, ...stepSecrets]);
|
output += yield __1.CloudRunner.Provider.runTask(__1.CloudRunner.buildParameters.buildGuid, step['image'], step['commands'], `/${cloud_runner_folders_1.CloudRunnerFolders.buildVolumeFolder}`, `/${cloud_runner_folders_1.CloudRunnerFolders.projectPathAbsolute}/`, __1.CloudRunner.cloudRunnerEnvironmentVariables, [...__1.CloudRunner.defaultSecrets, ...stepSecrets]);
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,142 +0,0 @@
|
||||||
import { BuildParameters, ImageTag } from '..';
|
|
||||||
import CloudRunner from './cloud-runner';
|
|
||||||
import Input from '../input';
|
|
||||||
import { CloudRunnerStatics } from './cloud-runner-statics';
|
|
||||||
import { TaskParameterSerializer } from './services/task-parameter-serializer';
|
|
||||||
import UnityVersioning from '../unity-versioning';
|
|
||||||
import { Cli } from '../cli/cli';
|
|
||||||
import CloudRunnerLogger from './services/cloud-runner-logger';
|
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
|
||||||
import CloudRunnerOptions from './cloud-runner-options';
|
|
||||||
import GitHub from '../github';
|
|
||||||
|
|
||||||
async function CreateParameters(overrides) {
|
|
||||||
if (overrides) {
|
|
||||||
Cli.options = overrides;
|
|
||||||
}
|
|
||||||
const originalValue = GitHub.githubInputEnabled;
|
|
||||||
GitHub.githubInputEnabled = false;
|
|
||||||
const results = await BuildParameters.create();
|
|
||||||
GitHub.githubInputEnabled = originalValue;
|
|
||||||
delete Cli.options;
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Cloud Runner', () => {
|
|
||||||
it('responds', () => {});
|
|
||||||
});
|
|
||||||
describe('Cloud Runner', () => {
|
|
||||||
const testSecretName = 'testSecretName';
|
|
||||||
const testSecretValue = 'testSecretValue';
|
|
||||||
if (CloudRunnerOptions.cloudRunnerTests) {
|
|
||||||
it('All build parameters sent to cloud runner as env vars', async () => {
|
|
||||||
// Setup parameters
|
|
||||||
const buildParameter = await CreateParameters({
|
|
||||||
versioning: 'None',
|
|
||||||
projectPath: 'test-project',
|
|
||||||
unityVersion: UnityVersioning.read('test-project'),
|
|
||||||
targetPlatform: 'StandaloneLinux64',
|
|
||||||
customJob: `
|
|
||||||
- name: 'step 1'
|
|
||||||
image: 'alpine'
|
|
||||||
commands: 'printenv'
|
|
||||||
secrets:
|
|
||||||
- name: '${testSecretName}'
|
|
||||||
value: '${testSecretValue}'
|
|
||||||
`,
|
|
||||||
});
|
|
||||||
const baseImage = new ImageTag(buildParameter);
|
|
||||||
|
|
||||||
// Run the job
|
|
||||||
const file = await CloudRunner.run(buildParameter, baseImage.toString());
|
|
||||||
|
|
||||||
// Assert results
|
|
||||||
expect(file).toContain(JSON.stringify(buildParameter));
|
|
||||||
expect(file).toContain(`${Input.ToEnvVarFormat(testSecretName)}=${testSecretValue}`);
|
|
||||||
const environmentVariables = TaskParameterSerializer.readBuildEnvironmentVariables();
|
|
||||||
const newLinePurgedFile = file
|
|
||||||
.replace(/\s+/g, '')
|
|
||||||
.replace(new RegExp(`\\[${CloudRunnerStatics.logPrefix}\\]`, 'g'), '');
|
|
||||||
for (const element of environmentVariables) {
|
|
||||||
if (element.value !== undefined && typeof element.value !== 'function') {
|
|
||||||
if (typeof element.value === `string`) {
|
|
||||||
element.value = element.value.replace(/\s+/g, '');
|
|
||||||
}
|
|
||||||
CloudRunnerLogger.log(`checking input/build param ${element.name} ${element.value}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const element of environmentVariables) {
|
|
||||||
if (element.value !== undefined && typeof element.value !== 'function') {
|
|
||||||
expect(newLinePurgedFile).toContain(`${element.name}`);
|
|
||||||
expect(newLinePurgedFile).toContain(`${element.name}=${element.value}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 100000);
|
|
||||||
it('Run one build it should not use cache, run subsequent build which should use cache', async () => {
|
|
||||||
const overrides = {
|
|
||||||
versioning: 'None',
|
|
||||||
projectPath: 'test-project',
|
|
||||||
unityVersion: UnityVersioning.determineUnityVersion('test-project', UnityVersioning.read('test-project')),
|
|
||||||
targetPlatform: 'StandaloneLinux64',
|
|
||||||
cacheKey: `test-case-${uuidv4()}`,
|
|
||||||
};
|
|
||||||
const buildParameter = await CreateParameters(overrides);
|
|
||||||
const baseImage = new ImageTag(buildParameter);
|
|
||||||
const results = await CloudRunner.run(buildParameter, baseImage.toString());
|
|
||||||
const libraryString = 'Rebuilding Library because the asset database could not be found!';
|
|
||||||
const buildSucceededString = 'Build succeeded';
|
|
||||||
|
|
||||||
test('1st build contains build success and library string', () => {
|
|
||||||
expect(results).toContain(libraryString);
|
|
||||||
expect(results).toContain(buildSucceededString);
|
|
||||||
});
|
|
||||||
CloudRunnerLogger.log(`run 1 succeeded`);
|
|
||||||
const buildParameter2 = await CreateParameters(overrides);
|
|
||||||
const baseImage2 = new ImageTag(buildParameter2);
|
|
||||||
const results2 = await CloudRunner.run(buildParameter2, baseImage2.toString());
|
|
||||||
CloudRunnerLogger.log(`run 2 succeeded`);
|
|
||||||
|
|
||||||
test('2nd build contains build success and no library string', () => {
|
|
||||||
expect(results2).toContain(buildSucceededString);
|
|
||||||
expect(results2).not.toContain(libraryString);
|
|
||||||
});
|
|
||||||
}, 1000000);
|
|
||||||
}
|
|
||||||
it('Local cloud runner returns commands', async () => {
|
|
||||||
// Setup parameters
|
|
||||||
const buildParameter = await CreateParameters({
|
|
||||||
versioning: 'None',
|
|
||||||
projectPath: 'test-project',
|
|
||||||
unityVersion: UnityVersioning.read('test-project'),
|
|
||||||
cloudRunnerCluster: 'local-system',
|
|
||||||
targetPlatform: 'StandaloneLinux64',
|
|
||||||
customJob: `
|
|
||||||
- name: 'step 1'
|
|
||||||
image: 'alpine'
|
|
||||||
commands: 'dir'
|
|
||||||
secrets:
|
|
||||||
- name: '${testSecretName}'
|
|
||||||
value: '${testSecretValue}'
|
|
||||||
`,
|
|
||||||
});
|
|
||||||
const baseImage = new ImageTag(buildParameter);
|
|
||||||
|
|
||||||
// Run the job
|
|
||||||
await expect(CloudRunner.run(buildParameter, baseImage.toString())).resolves.not.toThrow();
|
|
||||||
}, 1000000);
|
|
||||||
it('Test cloud runner returns commands', async () => {
|
|
||||||
// Setup parameters
|
|
||||||
const buildParameter = await CreateParameters({
|
|
||||||
versioning: 'None',
|
|
||||||
projectPath: 'test-project',
|
|
||||||
unityVersion: UnityVersioning.read('test-project'),
|
|
||||||
cloudRunnerCluster: 'test',
|
|
||||||
targetPlatform: 'StandaloneLinux64',
|
|
||||||
});
|
|
||||||
const baseImage = new ImageTag(buildParameter);
|
|
||||||
|
|
||||||
// Run the job
|
|
||||||
await expect(CloudRunner.run(buildParameter, baseImage.toString())).resolves.not.toThrow();
|
|
||||||
}, 1000000);
|
|
||||||
});
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
name: gcp-secret-manager
|
|
||||||
read-secret: gcloud secrets versions access 1 --secret=\"{0}\"
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
import { BuildParameters, ImageTag } from '../..';
|
||||||
|
import CloudRunner from '../cloud-runner';
|
||||||
|
import Input from '../../input';
|
||||||
|
import { CloudRunnerStatics } from '../cloud-runner-statics';
|
||||||
|
import { TaskParameterSerializer } from '../services/task-parameter-serializer';
|
||||||
|
import UnityVersioning from '../../unity-versioning';
|
||||||
|
import { Cli } from '../../cli/cli';
|
||||||
|
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
|
import CloudRunnerOptions from '../cloud-runner-options';
|
||||||
|
import GitHub from '../../github';
|
||||||
|
|
||||||
|
async function CreateParameters(overrides) {
|
||||||
|
if (overrides) {
|
||||||
|
Cli.options = overrides;
|
||||||
|
}
|
||||||
|
const originalValue = GitHub.githubInputEnabled;
|
||||||
|
GitHub.githubInputEnabled = false;
|
||||||
|
const results = await BuildParameters.create();
|
||||||
|
GitHub.githubInputEnabled = originalValue;
|
||||||
|
delete Cli.options;
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
describe('Cloud Runner', () => {
|
||||||
|
const testSecretName = 'testSecretName';
|
||||||
|
const testSecretValue = 'testSecretValue';
|
||||||
|
it('Responds', () => {});
|
||||||
|
if (CloudRunnerOptions.cloudRunnerTests) {
|
||||||
|
it('All build parameters sent to cloud runner as env vars', async () => {
|
||||||
|
// Setup parameters
|
||||||
|
const buildParameter = await CreateParameters({
|
||||||
|
versioning: 'None',
|
||||||
|
projectPath: 'test-project',
|
||||||
|
unityVersion: UnityVersioning.read('test-project'),
|
||||||
|
targetPlatform: 'StandaloneLinux64',
|
||||||
|
customJob: `
|
||||||
|
- name: 'step 1'
|
||||||
|
image: 'alpine'
|
||||||
|
commands: 'printenv'
|
||||||
|
secrets:
|
||||||
|
- name: '${testSecretName}'
|
||||||
|
value: '${testSecretValue}'
|
||||||
|
`,
|
||||||
|
});
|
||||||
|
const baseImage = new ImageTag(buildParameter);
|
||||||
|
|
||||||
|
// Run the job
|
||||||
|
const file = await CloudRunner.run(buildParameter, baseImage.toString());
|
||||||
|
|
||||||
|
// Assert results
|
||||||
|
expect(file).toContain(JSON.stringify(buildParameter));
|
||||||
|
expect(file).toContain(`${Input.ToEnvVarFormat(testSecretName)}=${testSecretValue}`);
|
||||||
|
const environmentVariables = TaskParameterSerializer.readBuildEnvironmentVariables();
|
||||||
|
const newLinePurgedFile = file
|
||||||
|
.replace(/\s+/g, '')
|
||||||
|
.replace(new RegExp(`\\[${CloudRunnerStatics.logPrefix}\\]`, 'g'), '');
|
||||||
|
for (const element of environmentVariables) {
|
||||||
|
if (element.value !== undefined && typeof element.value !== 'function') {
|
||||||
|
if (typeof element.value === `string`) {
|
||||||
|
element.value = element.value.replace(/\s+/g, '');
|
||||||
|
}
|
||||||
|
CloudRunnerLogger.log(`checking input/build param ${element.name} ${element.value}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const element of environmentVariables) {
|
||||||
|
if (element.value !== undefined && typeof element.value !== 'function') {
|
||||||
|
expect(newLinePurgedFile).toContain(`${element.name}`);
|
||||||
|
expect(newLinePurgedFile).toContain(`${element.name}=${element.value}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
import CloudRunner from '../cloud-runner';
|
||||||
|
import { BuildParameters, ImageTag } from '../..';
|
||||||
|
import UnityVersioning from '../../unity-versioning';
|
||||||
|
import { Cli } from '../../cli/cli';
|
||||||
|
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
import CloudRunnerOptions from '../cloud-runner-options';
|
||||||
|
import GitHub from '../../github';
|
||||||
|
|
||||||
|
async function CreateParameters(overrides) {
|
||||||
|
if (overrides) {
|
||||||
|
Cli.options = overrides;
|
||||||
|
}
|
||||||
|
const originalValue = GitHub.githubInputEnabled;
|
||||||
|
GitHub.githubInputEnabled = false;
|
||||||
|
const results = await BuildParameters.create();
|
||||||
|
GitHub.githubInputEnabled = originalValue;
|
||||||
|
delete Cli.options;
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('Cloud Runner', () => {
|
||||||
|
it('Responds', () => {});
|
||||||
|
});
|
||||||
|
describe('Cloud Runner', () => {
|
||||||
|
if (CloudRunnerOptions.cloudRunnerTests) {
|
||||||
|
it('Run one build it should not use cache, run subsequent build which should use cache', async () => {
|
||||||
|
const overrides = {
|
||||||
|
versioning: 'None',
|
||||||
|
projectPath: 'test-project',
|
||||||
|
unityVersion: UnityVersioning.determineUnityVersion('test-project', UnityVersioning.read('test-project')),
|
||||||
|
targetPlatform: 'StandaloneLinux64',
|
||||||
|
cacheKey: `test-case-${uuidv4()}`,
|
||||||
|
};
|
||||||
|
const buildParameter = await CreateParameters(overrides);
|
||||||
|
const baseImage = new ImageTag(buildParameter);
|
||||||
|
const results = await CloudRunner.run(buildParameter, baseImage.toString());
|
||||||
|
const libraryString = 'Rebuilding Library because the asset database could not be found!';
|
||||||
|
const buildSucceededString = 'Build succeeded';
|
||||||
|
|
||||||
|
test('1st build contains build success and library string', () => {
|
||||||
|
expect(results).toContain(libraryString);
|
||||||
|
expect(results).toContain(buildSucceededString);
|
||||||
|
});
|
||||||
|
CloudRunnerLogger.log(`run 1 succeeded`);
|
||||||
|
const buildParameter2 = await CreateParameters(overrides);
|
||||||
|
const baseImage2 = new ImageTag(buildParameter2);
|
||||||
|
const results2 = await CloudRunner.run(buildParameter2, baseImage2.toString());
|
||||||
|
CloudRunnerLogger.log(`run 2 succeeded`);
|
||||||
|
|
||||||
|
test('2nd build contains build success and no library string', () => {
|
||||||
|
expect(results2).toContain(buildSucceededString);
|
||||||
|
expect(results2).not.toContain(libraryString);
|
||||||
|
});
|
||||||
|
}, 1000000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
import { BuildParameters, ImageTag } from '../..';
|
||||||
|
import CloudRunner from '../cloud-runner';
|
||||||
|
import Input from '../../input';
|
||||||
|
import { CloudRunnerStatics } from '../cloud-runner-statics';
|
||||||
|
import { TaskParameterSerializer } from '../services/task-parameter-serializer';
|
||||||
|
import UnityVersioning from '../../unity-versioning';
|
||||||
|
import { Cli } from '../../cli/cli';
|
||||||
|
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||||
|
import CloudRunnerOptions from '../cloud-runner-options';
|
||||||
|
import GitHub from '../../github';
|
||||||
|
|
||||||
|
async function CreateParameters(overrides) {
|
||||||
|
if (overrides) {
|
||||||
|
Cli.options = overrides;
|
||||||
|
}
|
||||||
|
const originalValue = GitHub.githubInputEnabled;
|
||||||
|
GitHub.githubInputEnabled = false;
|
||||||
|
const results = await BuildParameters.create();
|
||||||
|
GitHub.githubInputEnabled = originalValue;
|
||||||
|
delete Cli.options;
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
describe('Cloud Runner', () => {
|
||||||
|
const testSecretName = 'testSecretName';
|
||||||
|
const testSecretValue = 'testSecretValue';
|
||||||
|
it('Responds', () => {});
|
||||||
|
|
||||||
|
if (CloudRunnerOptions.cloudRunnerTests) {
|
||||||
|
it('All build parameters sent to cloud runner as env vars', async () => {
|
||||||
|
// Setup parameters
|
||||||
|
const buildParameter = await CreateParameters({
|
||||||
|
versioning: 'None',
|
||||||
|
projectPath: 'test-project',
|
||||||
|
unityVersion: UnityVersioning.read('test-project'),
|
||||||
|
targetPlatform: 'StandaloneLinux64',
|
||||||
|
customJob: `
|
||||||
|
- name: 'step 1'
|
||||||
|
image: 'alpine'
|
||||||
|
commands: 'printenv'
|
||||||
|
secrets:
|
||||||
|
- name: '${testSecretName}'
|
||||||
|
value: '${testSecretValue}'
|
||||||
|
`,
|
||||||
|
});
|
||||||
|
const baseImage = new ImageTag(buildParameter);
|
||||||
|
|
||||||
|
// Run the job
|
||||||
|
const file = await CloudRunner.run(buildParameter, baseImage.toString());
|
||||||
|
|
||||||
|
// Assert results
|
||||||
|
expect(file).toContain(JSON.stringify(buildParameter));
|
||||||
|
expect(file).toContain(`${Input.ToEnvVarFormat(testSecretName)}=${testSecretValue}`);
|
||||||
|
const environmentVariables = TaskParameterSerializer.readBuildEnvironmentVariables();
|
||||||
|
const newLinePurgedFile = file
|
||||||
|
.replace(/\s+/g, '')
|
||||||
|
.replace(new RegExp(`\\[${CloudRunnerStatics.logPrefix}\\]`, 'g'), '');
|
||||||
|
for (const element of environmentVariables) {
|
||||||
|
if (element.value !== undefined && typeof element.value !== 'function') {
|
||||||
|
if (typeof element.value === `string`) {
|
||||||
|
element.value = element.value.replace(/\s+/g, '');
|
||||||
|
}
|
||||||
|
CloudRunnerLogger.log(`checking input/build param ${element.name} ${element.value}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const element of environmentVariables) {
|
||||||
|
if (element.value !== undefined && typeof element.value !== 'function') {
|
||||||
|
expect(newLinePurgedFile).toContain(`${element.name}`);
|
||||||
|
expect(newLinePurgedFile).toContain(`${element.name}=${element.value}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -33,7 +33,7 @@ export class CustomWorkflow {
|
||||||
step['image'],
|
step['image'],
|
||||||
step['commands'],
|
step['commands'],
|
||||||
`/${CloudRunnerFolders.buildVolumeFolder}`,
|
`/${CloudRunnerFolders.buildVolumeFolder}`,
|
||||||
`/${CloudRunnerFolders.buildVolumeFolder}/`,
|
`/${CloudRunnerFolders.projectPathAbsolute}/`,
|
||||||
CloudRunner.cloudRunnerEnvironmentVariables,
|
CloudRunner.cloudRunnerEnvironmentVariables,
|
||||||
[...CloudRunner.defaultSecrets, ...stepSecrets],
|
[...CloudRunner.defaultSecrets, ...stepSecrets],
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue