GCP-secret run, cache key

pull/353/head
Frostebite 2022-03-14 23:50:59 +00:00
parent 73149fb464
commit e4490cd3ca
8 changed files with 48 additions and 17 deletions

View File

@ -154,15 +154,18 @@ inputs:
default: '5Gi' default: '5Gi'
required: false required: false
description: 'Amount of disc space to assign the Kubernetes Persistent Volume' description: 'Amount of disc space to assign the Kubernetes Persistent Volume'
# To Do - enables resilience cacheKey:
# checkDependencyHealthOverride: default: 'branch'
# default: '' required: false
# required: false description: 'Cache key to indicate bucket for cache'
# description: 'Use to specify a way to check depdency services health to enable resilient self-starting jobs' checkDependencyHealthOverride:
# startDependenciesOverride: default: ''
# default: '' required: false
# required: false description: 'Use to specify a way to check depdency services health to enable resilient self-starting jobs'
# description: 'Use to specify a way to start depdency services health to enable resilient self-starting jobs' startDependenciesOverride:
default: ''
required: false
description: 'Use to specify a way to start depdency services health to enable resilient self-starting jobs'
outputs: outputs:
volume: volume:
description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes' description: 'The Persistent Volume (PV) where the build artifacts have been stored by Kubernetes'

11
dist/index.js vendored
View File

@ -328,6 +328,9 @@ class BuildParameters {
readInputOverrideCommand: input_1.default.readInputOverrideCommand(), readInputOverrideCommand: input_1.default.readInputOverrideCommand(),
readInputFromOverrideList: input_1.default.readInputFromOverrideList(), readInputFromOverrideList: input_1.default.readInputFromOverrideList(),
kubeStorageClass: input_1.default.kubeStorageClass, kubeStorageClass: input_1.default.kubeStorageClass,
checkDependencyHealthOverride: input_1.default.checkDependencyHealthOverride,
startDependenciesOverride: input_1.default.startDependenciesOverride,
cacheKey: input_1.default.cacheKey,
}; };
}); });
} }
@ -2994,7 +2997,7 @@ class CloudRunnerState {
return path_1.default.join(`/`, CloudRunnerState.buildVolumeFolder, CloudRunnerState.buildParams.buildGuid); return path_1.default.join(`/`, CloudRunnerState.buildVolumeFolder, CloudRunnerState.buildParams.buildGuid);
} }
static get cacheFolderFull() { static get cacheFolderFull() {
return path_1.default.join('/', CloudRunnerState.buildVolumeFolder, CloudRunnerState.cacheFolder, CloudRunnerState.branchName); return path_1.default.join('/', CloudRunnerState.buildVolumeFolder, CloudRunnerState.cacheFolder, CloudRunnerState.cacheKey);
} }
static setup(buildParameters) { static setup(buildParameters) {
CloudRunnerState.buildParams = buildParameters; CloudRunnerState.buildParams = buildParameters;
@ -3002,6 +3005,9 @@ class CloudRunnerState {
static get branchName() { static get branchName() {
return CloudRunnerState.buildParams.branch; return CloudRunnerState.buildParams.branch;
} }
static get cacheKey() {
return CloudRunnerState.buildParams.cacheKey || CloudRunnerState.buildParams.branch;
}
static get builderPathFull() { static get builderPathFull() {
return path_1.default.join(CloudRunnerState.buildPathFull, `builder`); return path_1.default.join(CloudRunnerState.buildPathFull, `builder`);
} }
@ -4240,6 +4246,9 @@ class Input {
static get startDependenciesOverride() { static get startDependenciesOverride() {
return Input.getInput('startDependenciesOverride') || ''; return Input.getInput('startDependenciesOverride') || '';
} }
static get cacheKey() {
return Input.getInput('cacheKey') || '';
}
static ToEnvVarFormat(input) { static ToEnvVarFormat(input) {
return input return input
.replace(/([A-Z])/g, ' $1') .replace(/([A-Z])/g, ' $1')

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,7 @@
"format": "prettier --write \"src/**/*.{js,ts}\"", "format": "prettier --write \"src/**/*.{js,ts}\"",
"prepare": "husky install", "prepare": "husky install",
"cli": "yarn ts-node src/index.ts -m cli", "cli": "yarn ts-node src/index.ts -m cli",
"gcp-secrets-cli": "cross-env readInputOverrideCommand=\"gcloud secrets versions access 0 --secret=\"{0}\"\" yarn ts-node src/index.ts -m cli",
"cli-aws": "cross-env cloudRunnerCluster=aws yarn run test-cli", "cli-aws": "cross-env cloudRunnerCluster=aws yarn run test-cli",
"cli-k8s": "cross-env cloudRunnerCluster=k8s yarn run test-cli", "cli-k8s": "cross-env cloudRunnerCluster=k8s yarn run test-cli",
"test-cli": "cross-env cloudRunnerTests=true yarn ts-node src/index.ts -m cli --projectPath test-project", "test-cli": "cross-env cloudRunnerTests=true yarn ts-node src/index.ts -m cli --projectPath test-project",

View File

@ -47,6 +47,9 @@ class BuildParameters {
public cachePullOverrideCommand!: string; public cachePullOverrideCommand!: string;
public readInputFromOverrideList!: string; public readInputFromOverrideList!: string;
public readInputOverrideCommand!: string; public readInputOverrideCommand!: string;
public checkDependencyHealthOverride!: string;
public startDependenciesOverride!: string;
public cacheKey!: string;
public postBuildSteps!: string; public postBuildSteps!: string;
public preBuildSteps!: string; public preBuildSteps!: string;
@ -135,6 +138,9 @@ class BuildParameters {
readInputOverrideCommand: Input.readInputOverrideCommand(), readInputOverrideCommand: Input.readInputOverrideCommand(),
readInputFromOverrideList: Input.readInputFromOverrideList(), readInputFromOverrideList: Input.readInputFromOverrideList(),
kubeStorageClass: Input.kubeStorageClass, kubeStorageClass: Input.kubeStorageClass,
checkDependencyHealthOverride: Input.checkDependencyHealthOverride,
startDependenciesOverride: Input.startDependenciesOverride,
cacheKey: Input.cacheKey,
}; };
} }

View File

@ -5,6 +5,14 @@ import { CloudRunnerStatics } from './cloud-runner-statics';
import { TaskParameterSerializer } from './services/task-parameter-serializer'; import { TaskParameterSerializer } from './services/task-parameter-serializer';
import UnityVersioning from '../unity-versioning'; import UnityVersioning from '../unity-versioning';
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', () => { describe('Cloud Runner', () => {
it('responds', () => {}); it('responds', () => {});
}); });
@ -55,6 +63,7 @@ describe('Cloud Runner', () => {
versioning: 'None', versioning: 'None',
projectPath: 'test-project', projectPath: 'test-project',
unityVersion: UnityVersioning.read('test-project'), unityVersion: UnityVersioning.read('test-project'),
cacheKey: `test-case-${guidGenerator()}`,
}; };
Input.githubInputEnabled = false; Input.githubInputEnabled = false;
const buildParameter = await BuildParameters.create(); const buildParameter = await BuildParameters.create();

View File

@ -16,12 +16,7 @@ export class CloudRunnerState {
} }
public static get cacheFolderFull(): string { public static get cacheFolderFull(): string {
return path.join( return path.join('/', CloudRunnerState.buildVolumeFolder, CloudRunnerState.cacheFolder, CloudRunnerState.cacheKey);
'/',
CloudRunnerState.buildVolumeFolder,
CloudRunnerState.cacheFolder,
CloudRunnerState.branchName,
);
} }
static setup(buildParameters: BuildParameters) { static setup(buildParameters: BuildParameters) {
@ -31,6 +26,10 @@ export class CloudRunnerState {
public static get branchName(): string { public static get branchName(): string {
return CloudRunnerState.buildParams.branch; return CloudRunnerState.buildParams.branch;
} }
public static get cacheKey(): string {
return CloudRunnerState.buildParams.cacheKey || CloudRunnerState.buildParams.branch;
}
public static get builderPathFull(): string { public static get builderPathFull(): string {
return path.join(CloudRunnerState.buildPathFull, `builder`); return path.join(CloudRunnerState.buildPathFull, `builder`);
} }

View File

@ -287,6 +287,10 @@ class Input {
return Input.getInput('startDependenciesOverride') || ''; return Input.getInput('startDependenciesOverride') || '';
} }
static get cacheKey(): string {
return Input.getInput('cacheKey') || '';
}
public static ToEnvVarFormat(input: string) { public static ToEnvVarFormat(input: string) {
return input return input
.replace(/([A-Z])/g, ' $1') .replace(/([A-Z])/g, ' $1')