Skip to content

Commit a1ccba7

Browse files
authored
Merge pull request #397 from buildkite/all-bools-optional
Make all new bool options optional
2 parents 61cb7fe + d72f9a7 commit a1ccba7

File tree

3 files changed

+43
-33
lines changed

3 files changed

+43
-33
lines changed

internal/controller/config/agent_config.go

+27-27
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,25 @@ import (
1616
type AgentConfig struct {
1717
// Applies to agents within the k8s controller and within the pod
1818
Endpoint *string `json:"endpoint,omitempty"` // BUILDKITE_AGENT_ENDPOINT
19-
NoHTTP2 bool `json:"no-http2,omitempty"` // BUILDKITE_NO_HTTP2
19+
NoHTTP2 *bool `json:"no-http2,omitempty"` // BUILDKITE_NO_HTTP2
2020

2121
// Only applies to agents within the pod
2222
Experiments []string `json:"experiment,omitempty"` // BUILDKITE_AGENT_EXPERIMENT
2323
Shell *string `json:"shell,omitempty"` // BUILDKITE_SHELL
24-
NoColor bool `json:"no-color,omitempty"` // BUILDKITE_AGENT_NO_COLOR
25-
StrictSingleHooks bool `json:"strict-single-hooks,omitempty"` // BUILDKITE_STRICT_SINGLE_HOOKS
26-
NoMultipartArtifactUpload bool `json:"no-multipart-artifact-upload,omitempty"` // BUILDKITE_NO_MULTIPART_ARTIFACT_UPLOAD
24+
NoColor *bool `json:"no-color,omitempty"` // BUILDKITE_AGENT_NO_COLOR
25+
StrictSingleHooks *bool `json:"strict-single-hooks,omitempty"` // BUILDKITE_STRICT_SINGLE_HOOKS
26+
NoMultipartArtifactUpload *bool `json:"no-multipart-artifact-upload,omitempty"` // BUILDKITE_NO_MULTIPART_ARTIFACT_UPLOAD
2727
TraceContextEncoding *string `json:"trace-context-encoding,omitempty"` // BUILDKITE_TRACE_CONTEXT_ENCODING
2828
DisableWarningsFor []string `json:"disable-warnings-for,omitempty"` // BUILDKITE_AGENT_DISABLE_WARNINGS_FOR
29-
DebugSigning bool `json:"debug-signing,omitempty"` // BUILDKITE_AGENT_DEBUG_SIGNING
29+
DebugSigning *bool `json:"debug-signing,omitempty"` // BUILDKITE_AGENT_DEBUG_SIGNING
3030

3131
// Applies differently depending on the container
3232
// // agent start / bootstrap
33-
NoPTY bool `json:"no-pty,omitempty"` // BUILDKITE_NO_PTY / BUILDKITE_PTY
34-
NoCommandEval bool `json:"no-command-eval,omitempty"` // BUILDKITE_NO_COMMAND_EVAL / BUILDKITE_COMMAND_EVAL
35-
NoLocalHooks bool `json:"no-local-hooks,omitempty"` // BUILDKITE_NO_LOCAL_HOOKS / BUILDKITE_LOCAL_HOOKS_ENABLED
36-
NoPlugins bool `json:"no-plugins,omitempty"` // BUILDKITE_NO_PLUGINS / BUILDKITE_PLUGINS_ENABLED
37-
PluginValidation bool `json:"plugin-validation,omitempty"` // BUILDKITE_NO_PLUGIN_VALIDATION / BUILDKITE_PLUGIN_VALIDATION
33+
NoPTY *bool `json:"no-pty,omitempty"` // BUILDKITE_NO_PTY / BUILDKITE_PTY
34+
NoCommandEval *bool `json:"no-command-eval,omitempty"` // BUILDKITE_NO_COMMAND_EVAL / BUILDKITE_COMMAND_EVAL
35+
NoLocalHooks *bool `json:"no-local-hooks,omitempty"` // BUILDKITE_NO_LOCAL_HOOKS / BUILDKITE_LOCAL_HOOKS_ENABLED
36+
NoPlugins *bool `json:"no-plugins,omitempty"` // BUILDKITE_NO_PLUGINS / BUILDKITE_PLUGINS_ENABLED
37+
PluginValidation *bool `json:"plugin-validation,omitempty"` // BUILDKITE_NO_PLUGIN_VALIDATION / BUILDKITE_PLUGIN_VALIDATION
3838

3939
// Like the above, but signing keys can be supplied directly to the command container.
4040
// // agent start / pipeline upload or agent tool sign
@@ -63,8 +63,8 @@ func (a *AgentConfig) ControllerOptions() []agentcore.ControllerOption {
6363
if a.Endpoint != nil {
6464
opts = append(opts, agentcore.WithEndpoint(*a.Endpoint))
6565
}
66-
if a.NoHTTP2 {
67-
opts = append(opts, agentcore.WithAllowHTTP2(false))
66+
if a.NoHTTP2 != nil {
67+
opts = append(opts, agentcore.WithAllowHTTP2(*a.NoHTTP2))
6868
}
6969
return opts
7070
}
@@ -92,15 +92,15 @@ func (a *AgentConfig) ApplyVolumesTo(podSpec *corev1.PodSpec) {
9292
// containers that run buildkite-agent in some form.
9393
func (a *AgentConfig) applyCommonTo(ctr *corev1.Container) {
9494
appendToEnvOpt(ctr, "BUILDKITE_AGENT_ENDPOINT", a.Endpoint)
95-
appendBoolToEnv(ctr, "BUILDKITE_NO_HTTP2", a.NoHTTP2)
95+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_HTTP2", a.NoHTTP2)
9696
appendCommaSepToEnv(ctr, "BUILDKITE_AGENT_EXPERIMENT", a.Experiments)
9797
appendToEnvOpt(ctr, "BUILDKITE_SHELL", a.Shell)
98-
appendBoolToEnv(ctr, "BUILDKITE_AGENT_NO_COLOR", a.NoColor)
99-
appendBoolToEnv(ctr, "BUILDKITE_STRICT_SINGLE_HOOKS", a.StrictSingleHooks)
100-
appendBoolToEnv(ctr, "BUILDKITE_NO_MULTIPART_ARTIFACT_UPLOAD", a.NoMultipartArtifactUpload)
98+
appendBoolToEnvOpt(ctr, "BUILDKITE_AGENT_NO_COLOR", a.NoColor)
99+
appendBoolToEnvOpt(ctr, "BUILDKITE_STRICT_SINGLE_HOOKS", a.StrictSingleHooks)
100+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_MULTIPART_ARTIFACT_UPLOAD", a.NoMultipartArtifactUpload)
101101
appendToEnvOpt(ctr, "BUILDKITE_TRACE_CONTEXT_ENCODING", a.TraceContextEncoding)
102102
appendCommaSepToEnv(ctr, "BUILDKITE_AGENT_DISABLE_WARNINGS_FOR", a.DisableWarningsFor)
103-
appendBoolToEnv(ctr, "BUILDKITE_AGENT_DEBUG_SIGNING", a.DebugSigning)
103+
appendBoolToEnvOpt(ctr, "BUILDKITE_AGENT_DEBUG_SIGNING", a.DebugSigning)
104104

105105
if a.HooksVolume != nil {
106106
hooksPath := "/buildkite/hooks"
@@ -134,11 +134,11 @@ func (a *AgentConfig) ApplyToAgentStart(ctr *corev1.Container) {
134134
}
135135
a.applyCommonTo(ctr)
136136

137-
appendBoolToEnv(ctr, "BUILDKITE_NO_PTY", a.NoPTY)
138-
appendBoolToEnv(ctr, "BUILDKITE_NO_COMMAND_EVAL", a.NoCommandEval)
139-
appendBoolToEnv(ctr, "BUILDKITE_NO_LOCAL_HOOKS", a.NoLocalHooks)
140-
appendBoolToEnv(ctr, "BUILDKITE_NO_PLUGINS", a.NoPlugins)
141-
appendBoolToEnv(ctr, "BUILDKITE_NO_PLUGIN_VALIDATION", !a.PluginValidation)
137+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_PTY", a.NoPTY)
138+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_COMMAND_EVAL", a.NoCommandEval)
139+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_LOCAL_HOOKS", a.NoLocalHooks)
140+
appendBoolToEnvOpt(ctr, "BUILDKITE_NO_PLUGINS", a.NoPlugins)
141+
appendNegatedToEnvOpt(ctr, "BUILDKITE_NO_PLUGIN_VALIDATION", a.PluginValidation)
142142

143143
if a.VerificationJWKSVolume != nil {
144144
dir, file := "/buildkite/verification-jwks", "key"
@@ -173,11 +173,11 @@ func (a *AgentConfig) applyToBootstrap(ctr *corev1.Container) {
173173
// Note that these "buildkite-agent start"-like options are applied to
174174
// containers running "buildkite-agent bootstrap". So e.g. noPTY:true must
175175
// be inverted to pty:false, as the agent would normally.
176-
appendBoolToEnv(ctr, "BUILDKITE_PTY", !a.NoPTY)
177-
appendBoolToEnv(ctr, "BUILDKITE_COMMAND_EVAL", !a.NoCommandEval)
178-
appendBoolToEnv(ctr, "BUILDKITE_LOCAL_HOOKS_ENABLED", !a.NoLocalHooks)
179-
appendBoolToEnv(ctr, "BUILDKITE_PLUGINS_ENABLED", !a.NoPlugins)
180-
appendBoolToEnv(ctr, "BUILDKITE_PLUGIN_VALIDATION", a.PluginValidation)
176+
appendNegatedToEnvOpt(ctr, "BUILDKITE_PTY", a.NoPTY)
177+
appendNegatedToEnvOpt(ctr, "BUILDKITE_COMMAND_EVAL", a.NoCommandEval)
178+
appendNegatedToEnvOpt(ctr, "BUILDKITE_LOCAL_HOOKS_ENABLED", a.NoLocalHooks)
179+
appendNegatedToEnvOpt(ctr, "BUILDKITE_PLUGINS_ENABLED", a.NoPlugins)
180+
appendBoolToEnvOpt(ctr, "BUILDKITE_PLUGIN_VALIDATION", a.PluginValidation)
181181
}
182182

183183
// ApplyToCheckout adds env vars assuming ctr is a checkout container.

internal/controller/config/checkout_params.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type CheckoutParams struct {
1313
CleanFlags *string `json:"cleanFlags,omitempty"`
1414
CloneFlags *string `json:"cloneFlags,omitempty"`
1515
FetchFlags *string `json:"fetchFlags,omitempty"`
16-
NoSubmodules bool `json:"noSubmodules,omitempty"`
16+
NoSubmodules *bool `json:"noSubmodules,omitempty"`
1717
SubmoduleCloneConfig []string `json:"submoduleCloneConfig,omitempty"`
1818
GitMirrors *GitMirrorsParams `json:"gitMirrors,omitempty"`
1919
GitCredentialsSecret *corev1.SecretVolumeSource `json:"gitCredentialsSecret,omitempty"`
@@ -27,7 +27,7 @@ func (co *CheckoutParams) ApplyTo(podSpec *corev1.PodSpec, ctr *corev1.Container
2727
appendToEnvOpt(ctr, "BUILDKITE_GIT_CLEAN_FLAGS", co.CleanFlags)
2828
appendToEnvOpt(ctr, "BUILDKITE_GIT_CLONE_FLAGS", co.CloneFlags)
2929
appendToEnvOpt(ctr, "BUILDKITE_GIT_FETCH_FLAGS", co.FetchFlags)
30-
appendBoolToEnv(ctr, "BUILDKITE_GIT_SUBMODULES", co.NoSubmodules)
30+
appendBoolToEnvOpt(ctr, "BUILDKITE_GIT_SUBMODULES", co.NoSubmodules)
3131
appendCommaSepToEnv(ctr, "BUILDKITE_GIT_SUBMODULE_CLONE_CONFIG", co.SubmoduleCloneConfig)
3232
co.GitMirrors.ApplyTo(podSpec, ctr)
3333
ctr.EnvFrom = append(ctr.EnvFrom, co.EnvFrom...)
@@ -46,7 +46,7 @@ type GitMirrorsParams struct {
4646
Volume *corev1.Volume `json:"volume,omitempty"`
4747
CloneFlags *string `json:"cloneFlags,omitempty"`
4848
LockTimeout int `json:"lockTimeout,omitempty"`
49-
SkipUpdate bool `json:"skipUpdate,omitempty"`
49+
SkipUpdate *bool `json:"skipUpdate,omitempty"`
5050
}
5151

5252
func (gm *GitMirrorsParams) ApplyTo(podSpec *corev1.PodSpec, ctr *corev1.Container) {
@@ -70,5 +70,5 @@ func (gm *GitMirrorsParams) ApplyTo(podSpec *corev1.PodSpec, ctr *corev1.Contain
7070
if gm.LockTimeout > 0 {
7171
appendToEnv(ctr, "BUILDKITE_GIT_MIRRORS_LOCK_TIMEOUT", strconv.Itoa(gm.LockTimeout))
7272
}
73-
appendBoolToEnv(ctr, "BUILDKITE_GIT_MIRRORS_SKIP_UPDATE", gm.SkipUpdate)
73+
appendBoolToEnvOpt(ctr, "BUILDKITE_GIT_MIRRORS_SKIP_UPDATE", gm.SkipUpdate)
7474
}

internal/controller/config/config.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,18 @@ func appendToEnvOpt(ctr *corev1.Container, name string, value *string) {
112112
ctr.Env = append(ctr.Env, corev1.EnvVar{Name: name, Value: *value})
113113
}
114114

115-
func appendBoolToEnv(ctr *corev1.Container, name string, value bool) {
116-
ctr.Env = append(ctr.Env, corev1.EnvVar{Name: name, Value: strconv.FormatBool(value)})
115+
func appendBoolToEnvOpt(ctr *corev1.Container, name string, value *bool) {
116+
if value == nil {
117+
return
118+
}
119+
ctr.Env = append(ctr.Env, corev1.EnvVar{Name: name, Value: strconv.FormatBool(*value)})
120+
}
121+
122+
func appendNegatedToEnvOpt(ctr *corev1.Container, name string, value *bool) {
123+
if value == nil {
124+
return
125+
}
126+
ctr.Env = append(ctr.Env, corev1.EnvVar{Name: name, Value: strconv.FormatBool(!*value)})
117127
}
118128

119129
func appendCommaSepToEnv(ctr *corev1.Container, name string, values []string) {

0 commit comments

Comments
 (0)