Default input for read input override to use cloud secret managers

pull/419/head
Frostebite 2022-08-28 22:46:17 +01:00
parent c0be6bf4d7
commit e92396db8f
7 changed files with 21 additions and 103 deletions

68
dist/index.js vendored
View File

@ -295,8 +295,6 @@ class BuildParameters {
readInputOverrideCommand: cloud_runner_options_1.default.readInputOverrideCommand(), readInputOverrideCommand: cloud_runner_options_1.default.readInputOverrideCommand(),
readInputFromOverrideList: cloud_runner_options_1.default.readInputFromOverrideList(), readInputFromOverrideList: cloud_runner_options_1.default.readInputFromOverrideList(),
kubeStorageClass: cloud_runner_options_1.default.kubeStorageClass, kubeStorageClass: cloud_runner_options_1.default.kubeStorageClass,
checkDependencyHealthOverride: cloud_runner_options_1.default.checkDependencyHealthOverride,
startDependenciesOverride: cloud_runner_options_1.default.startDependenciesOverride,
cacheKey: cloud_runner_options_1.default.cacheKey, cacheKey: cloud_runner_options_1.default.cacheKey,
}; };
}); });
@ -654,7 +652,14 @@ class CloudRunnerOptions {
return CloudRunnerOptions.getInput('readInputFromOverrideList') || ''; return CloudRunnerOptions.getInput('readInputFromOverrideList') || '';
} }
static readInputOverrideCommand() { static readInputOverrideCommand() {
return CloudRunnerOptions.getInput('readInputOverrideCommand') || ''; const value = CloudRunnerOptions.getInput('readInputOverrideCommand');
if (value === 'gcp-secret-manager') {
return 'gcloud secrets versions access 1 --secret="{0}"';
}
else if (value === 'aws-secret-manager') {
return 'aws secretsmanager get-secret-value --secret-id {0}';
}
return value || '';
} }
static get cloudRunnerBranch() { static get cloudRunnerBranch() {
return CloudRunnerOptions.getInput('cloudRunnerBranch') || 'cloud-runner-develop'; return CloudRunnerOptions.getInput('cloudRunnerBranch') || 'cloud-runner-develop';
@ -692,12 +697,6 @@ class CloudRunnerOptions {
static get kubeStorageClass() { static get kubeStorageClass() {
return CloudRunnerOptions.getInput('kubeStorageClass') || ''; return CloudRunnerOptions.getInput('kubeStorageClass') || '';
} }
static get checkDependencyHealthOverride() {
return CloudRunnerOptions.getInput('checkDependencyHealthOverride') || '';
}
static get startDependenciesOverride() {
return CloudRunnerOptions.getInput('startDependenciesOverride') || '';
}
static get cacheKey() { static get cacheKey() {
return CloudRunnerOptions.getInput('cacheKey') || CloudRunnerOptions.branch; return CloudRunnerOptions.getInput('cacheKey') || CloudRunnerOptions.branch;
} }
@ -2738,7 +2737,6 @@ const async_wait_until_1 = __importDefault(__nccwpck_require__(41299));
const kubernetes_job_spec_factory_1 = __importDefault(__nccwpck_require__(3610)); const kubernetes_job_spec_factory_1 = __importDefault(__nccwpck_require__(3610));
const kubernetes_service_account_1 = __importDefault(__nccwpck_require__(47319)); const kubernetes_service_account_1 = __importDefault(__nccwpck_require__(47319));
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const depdency_override_service_1 = __importDefault(__nccwpck_require__(69862));
class Kubernetes { class Kubernetes {
constructor(buildParameters) { constructor(buildParameters) {
this.buildGuid = ''; this.buildGuid = '';
@ -2783,9 +2781,6 @@ class Kubernetes {
this.pvcName = `unity-builder-pvc-${buildGuid}`; this.pvcName = `unity-builder-pvc-${buildGuid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`; this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
this.serviceAccountName = `service-account-${buildGuid}`; this.serviceAccountName = `service-account-${buildGuid}`;
if (yield depdency_override_service_1.default.CheckHealth()) {
yield depdency_override_service_1.default.TryStartDependencies();
}
yield kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace); yield kubernetes_storage_1.default.createPersistentVolumeClaim(buildParameters, this.pvcName, this.kubeClient, this.namespace);
yield kubernetes_service_account_1.default.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient); yield kubernetes_service_account_1.default.createServiceAccount(this.serviceAccountName, this.namespace, this.kubeClient);
} }
@ -4345,53 +4340,6 @@ class CloudRunnerSystem {
exports.CloudRunnerSystem = CloudRunnerSystem; exports.CloudRunnerSystem = CloudRunnerSystem;
/***/ }),
/***/ 69862:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_system_1 = __nccwpck_require__(99393);
const cloud_runner_options_1 = __importDefault(__nccwpck_require__(96552));
class DependencyOverrideService {
static CheckHealth() {
return __awaiter(this, void 0, void 0, function* () {
if (cloud_runner_options_1.default.checkDependencyHealthOverride) {
try {
yield cloud_runner_system_1.CloudRunnerSystem.Run(cloud_runner_options_1.default.checkDependencyHealthOverride);
}
catch (_a) {
return false;
}
}
return true;
});
}
static TryStartDependencies() {
return __awaiter(this, void 0, void 0, function* () {
if (cloud_runner_options_1.default.startDependenciesOverride) {
yield cloud_runner_system_1.CloudRunnerSystem.Run(cloud_runner_options_1.default.startDependenciesOverride);
}
});
}
}
exports["default"] = DependencyOverrideService;
/***/ }), /***/ }),
/***/ 64121: /***/ 64121:

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -12,9 +12,9 @@
"lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts", "lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts",
"format": "prettier --write \"src/**/*.{js,ts}\"", "format": "prettier --write \"src/**/*.{js,ts}\"",
"cli": "yarn ts-node src/index.ts -m cli", "cli": "yarn ts-node src/index.ts -m cli",
"gcp-secrets-tests": "cross-env cloudRunnerCluster=aws cloudRunnerTests=true readInputOverrideCommand=\"gcloud secrets versions access 1 --secret=\"{0}\"\" populateOverride=true readInputFromOverrideList=UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD yarn test -i -t \"cloud runner\"", "gcp-secrets-tests": "cross-env cloudRunnerCluster=aws cloudRunnerTests=true readInputOverrideCommand=\"gcp-secret-manager\" populateOverride=true readInputFromOverrideList=UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD yarn test -i -t \"cloud runner\"",
"gcp-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"gcloud secrets versions access 1 --secret=\"{0}\"\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", "gcp-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"gcp-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD",
"aws-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"aws secretsmanager get-secret-value --secret-id {0}\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD", "aws-secrets-cli": "cross-env cloudRunnerTests=true readInputOverrideCommand=\"aws-secret-manager\" yarn ts-node src/index.ts -m cli --populateOverride true --readInputFromOverrideList UNITY_EMAIL,UNITY_SERIAL,UNITY_PASSWORD",
"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

@ -48,8 +48,6 @@ class BuildParameters {
public customJobHooks!: string; public customJobHooks!: string;
public readInputFromOverrideList!: string; public readInputFromOverrideList!: string;
public readInputOverrideCommand!: string; public readInputOverrideCommand!: string;
public checkDependencyHealthOverride!: string;
public startDependenciesOverride!: string;
public cacheKey!: string; public cacheKey!: string;
public postBuildSteps!: string; public postBuildSteps!: string;
@ -138,8 +136,6 @@ class BuildParameters {
readInputOverrideCommand: CloudRunnerOptions.readInputOverrideCommand(), readInputOverrideCommand: CloudRunnerOptions.readInputOverrideCommand(),
readInputFromOverrideList: CloudRunnerOptions.readInputFromOverrideList(), readInputFromOverrideList: CloudRunnerOptions.readInputFromOverrideList(),
kubeStorageClass: CloudRunnerOptions.kubeStorageClass, kubeStorageClass: CloudRunnerOptions.kubeStorageClass,
checkDependencyHealthOverride: CloudRunnerOptions.checkDependencyHealthOverride,
startDependenciesOverride: CloudRunnerOptions.startDependenciesOverride,
cacheKey: CloudRunnerOptions.cacheKey, cacheKey: CloudRunnerOptions.cacheKey,
}; };
} }

View File

@ -82,7 +82,15 @@ class CloudRunnerOptions {
} }
static readInputOverrideCommand() { static readInputOverrideCommand() {
return CloudRunnerOptions.getInput('readInputOverrideCommand') || ''; const value = CloudRunnerOptions.getInput('readInputOverrideCommand');
if (value === 'gcp-secret-manager') {
return 'gcloud secrets versions access 1 --secret="{0}"';
} else if (value === 'aws-secret-manager') {
return 'aws secretsmanager get-secret-value --secret-id {0}';
}
return value || '';
} }
static get cloudRunnerBranch() { static get cloudRunnerBranch() {
@ -133,14 +141,6 @@ class CloudRunnerOptions {
return CloudRunnerOptions.getInput('kubeStorageClass') || ''; return CloudRunnerOptions.getInput('kubeStorageClass') || '';
} }
static get checkDependencyHealthOverride(): string {
return CloudRunnerOptions.getInput('checkDependencyHealthOverride') || '';
}
static get startDependenciesOverride(): string {
return CloudRunnerOptions.getInput('startDependenciesOverride') || '';
}
static get cacheKey(): string { static get cacheKey(): string {
return CloudRunnerOptions.getInput('cacheKey') || CloudRunnerOptions.branch; return CloudRunnerOptions.getInput('cacheKey') || CloudRunnerOptions.branch;
} }

View File

@ -12,7 +12,6 @@ import KubernetesJobSpecFactory from './kubernetes-job-spec-factory';
import KubernetesServiceAccount from './kubernetes-service-account'; import KubernetesServiceAccount from './kubernetes-service-account';
import CloudRunnerLogger from '../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { CoreV1Api } from '@kubernetes/client-node'; import { CoreV1Api } from '@kubernetes/client-node';
import DependencyOverrideService from '../../services/depdency-override-service';
class Kubernetes implements ProviderInterface { class Kubernetes implements ProviderInterface {
private kubeConfig: k8s.KubeConfig; private kubeConfig: k8s.KubeConfig;
@ -68,9 +67,6 @@ class Kubernetes implements ProviderInterface {
this.pvcName = `unity-builder-pvc-${buildGuid}`; this.pvcName = `unity-builder-pvc-${buildGuid}`;
this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`; this.cleanupCronJobName = `unity-builder-cronjob-${buildGuid}`;
this.serviceAccountName = `service-account-${buildGuid}`; this.serviceAccountName = `service-account-${buildGuid}`;
if (await DependencyOverrideService.CheckHealth()) {
await DependencyOverrideService.TryStartDependencies();
}
await KubernetesStorage.createPersistentVolumeClaim( await KubernetesStorage.createPersistentVolumeClaim(
buildParameters, buildParameters,
this.pvcName, this.pvcName,

View File

@ -1,22 +0,0 @@
import { CloudRunnerSystem } from './cloud-runner-system';
import CloudRunnerOptions from '../cloud-runner-options';
class DependencyOverrideService {
public static async CheckHealth() {
if (CloudRunnerOptions.checkDependencyHealthOverride) {
try {
await CloudRunnerSystem.Run(CloudRunnerOptions.checkDependencyHealthOverride);
} catch {
return false;
}
}
return true;
}
public static async TryStartDependencies() {
if (CloudRunnerOptions.startDependenciesOverride) {
await CloudRunnerSystem.Run(CloudRunnerOptions.startDependenciesOverride);
}
}
}
export default DependencyOverrideService;