From 677ab6b84c0b3941a9a6f504ed5cb9d4e73da1b6 Mon Sep 17 00:00:00 2001 From: Ethan Rogers Date: Fri, 27 Sep 2019 10:48:13 -0400 Subject: [PATCH] fix(bake/kustomize): fix name validation (#7450) name is only a required field for manifest baked with helm so we should only validate that it's supplied if the rendering engine is of type HELM2. --- .../stages/bakeManifest/bakeManifestStage.ts | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/app/scripts/modules/core/src/pipeline/config/stages/bakeManifest/bakeManifestStage.ts b/app/scripts/modules/core/src/pipeline/config/stages/bakeManifest/bakeManifestStage.ts index 184a86be676..472dfd36016 100644 --- a/app/scripts/modules/core/src/pipeline/config/stages/bakeManifest/bakeManifestStage.ts +++ b/app/scripts/modules/core/src/pipeline/config/stages/bakeManifest/bakeManifestStage.ts @@ -1,17 +1,39 @@ import { get } from 'lodash'; import { ArtifactReferenceService, ExecutionArtifactTab, ExpectedArtifactService } from 'core/artifact'; -import { ExecutionDetailsTasks } from 'core/pipeline'; -import { IArtifact, IStage } from 'core/domain'; +import { ExecutionDetailsTasks, IValidatorConfig } from 'core/pipeline'; + +import { IArtifact, IStage, IPipeline, IStageOrTriggerTypeConfig } from 'core/domain'; + import { Registry } from 'core/registry'; import { SETTINGS } from 'core/config'; import { BakeManifestConfig } from './BakeManifestConfig'; import { BakeManifestDetailsTab } from './BakeManifestDetailsTab'; import { ManualExecutionBakeManifest } from './ManualExecutionBakeManifest'; +import { ICustomValidator } from '../../validation/PipelineConfigValidator'; +import { RequiredFieldValidator, IRequiredFieldValidationConfig } from '../../validation/requiredField.validator'; export const BAKE_MANIFEST_STAGE_KEY = 'bakeManifest'; if (SETTINGS.feature.versionedProviders) { + const requiredField = ( + _pipeline: IPipeline, + stage: IStage, + _validator: IValidatorConfig, + _config: IStageOrTriggerTypeConfig, + ): string => { + if (stage.templateRenderer !== 'HELM2') { + return ''; + } + + return new RequiredFieldValidator().validate( + _pipeline, + stage, + { fieldLabel: 'Name', fieldName: 'outputName' } as IRequiredFieldValidationConfig, + _config, + ); + }; + Registry.pipeline.registerStage({ label: 'Bake (Manifest)', description: 'Bake a manifest (or multi-doc manifest set) using a template renderer such as Helm.', @@ -29,7 +51,7 @@ if (SETTINGS.feature.versionedProviders) { stage.expectedArtifacts = get(stage, 'expectedArtifacts', []).filter(a => !artifactMatches(a)); stage.inputArtifacts = get(stage, 'inputArtifacts', []).filter(a => !artifactMatches(a)); }, - validators: [{ type: 'requiredField', fieldName: 'outputName', fieldLabel: 'Name' }], + validators: [{ type: 'custom', validate: requiredField } as ICustomValidator], manualExecutionComponent: ManualExecutionBakeManifest, }); }