Skip to content

Commit 81f26a4

Browse files
Merge pull request #20738 from coreydaley/bugzilla_1614155_allow_dash_in_bc_env_vars
Allow dash (-) in BuildConfig env vars
2 parents 8fa6f2f + 355a711 commit 81f26a4

File tree

3 files changed

+4
-6
lines changed

3 files changed

+4
-6
lines changed

pkg/build/apis/build/validation/validation.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -679,17 +679,15 @@ func ValidateBuildLogOptions(opts *buildapi.BuildLogOptions) field.ErrorList {
679679
return allErrs
680680
}
681681

682-
var cIdentifierErrorMsg string = `must be a C identifier (mixed-case letters, numbers, and underscores): e.g. "my_name" or "MyName"`
683-
684682
func ValidateStrategyEnv(vars []kapi.EnvVar, fldPath *field.Path) field.ErrorList {
685683
allErrs := field.ErrorList{}
686684

687685
for i, ev := range vars {
688686
idxPath := fldPath.Index(i)
689687
if len(ev.Name) == 0 {
690688
allErrs = append(allErrs, field.Required(idxPath.Child("name"), ""))
691-
} else if len(kvalidation.IsCIdentifier(ev.Name)) > 0 {
692-
allErrs = append(allErrs, field.Invalid(idxPath.Child("name"), ev.Name, cIdentifierErrorMsg))
689+
} else if errs := kvalidation.IsEnvVarName(ev.Name); len(errs) != 0 {
690+
allErrs = append(allErrs, field.Invalid(idxPath.Child("name"), ev.Name, strings.Join(errs, "; ")))
693691
}
694692
if ev.ValueFrom != nil && ev.ValueFrom.ResourceFieldRef != nil {
695693
allErrs = append(allErrs, field.Invalid(idxPath.Child("valueFrom").Child("ResourceFieldRef"), ev.Name, "ResourceFieldRef is not valid for valueFrom in build environment variables"))

pkg/oc/util/env/env.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func parseIntoEnvVar(spec []string, defaultReader io.Reader, envVarType string)
5959
parts := strings.SplitN(envSpec, "=", 2)
6060
n, v := parts[0], parts[1]
6161
if errs := validation.IsEnvVarName(n); len(errs) != 0 {
62-
return nil, nil, fmt.Errorf("%ss must be of the form key=value, but is %q", envVarType, envSpec)
62+
return nil, nil, fmt.Errorf("%s %s is invalid, %s", envVarType, envSpec, strings.Join(errs, "; "))
6363
}
6464
exists.Insert(n)
6565
env = append(env, kapi.EnvVar{

test/cmd/env.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ os::cmd::expect_success_and_text 'oc set env dc/node --list' 'deploymentconfigs/
1111
os::cmd::expect_success_and_text 'oc set env dc --all --containers="node" key-' 'deploymentconfig.apps.openshift.io/node updated'
1212
os::cmd::expect_failure_and_text 'oc set env dc --all --containers="node"' 'error: at least one environment variable must be provided'
1313
os::cmd::expect_failure_and_not_text 'oc set env --from=secret/mysecret dc/node' 'error: at least one environment variable must be provided'
14-
os::cmd::expect_failure_and_text 'oc set env dc/node test#abc=1234' 'environment variables must be of the form key=value, but is "test#abc=1234"'
14+
os::cmd::expect_failure_and_text 'oc set env dc/node test#abc=1234' 'environment variable test#abc=1234 is invalid, a valid environment variable name must consist of alphabetic characters'
1515

1616
# ensure deleting a var through --env does not result in an error message
1717
os::cmd::expect_success_and_text 'oc set env dc/node key=value' 'deploymentconfig.apps.openshift.io/node updated'

0 commit comments

Comments
 (0)