Skip to content

Commit f853564

Browse files
authored
Merge pull request #3471 from buildkite/pb-613-propagate-env-vars
Experiment for propagating agent config env vars
2 parents cc11169 + 9973861 commit f853564

2 files changed

Lines changed: 42 additions & 1 deletion

File tree

agent/job_runner.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,50 @@ func (r *JobRunner) createEnvironment(ctx context.Context) ([]string, error) {
424424
}
425425

426426
// Write out the job environment to file:
427-
// - envShellFile: in k="v" format, with newlines escaped
427+
// - envShellFile: in k="v" format, with newlines escaped. If the
428+
// propagate-agent-vars experiment is enabled, the names of several agent
429+
// config variables are prepended at the top.
428430
// - envJSONFile: as a single JSON object {"k":"v",...}, escaped appropriately for JSON.
429431
// We present only the clean environment - i.e only variables configured
430432
// on the job upstream - and expose the path in another environment variable.
431433
if r.envShellFile != nil {
434+
if experiments.IsEnabled(ctx, experiments.PropagateAgentConfigVars) {
435+
// Note that some variables in this list might not be defined later,
436+
// when something comes to read the file. See below where they are
437+
// added conditionally, e.g. BUILDKITE_TRACING_BACKEND.
438+
// Docker in particular tolerates undefined vars in an env file
439+
// without complaints.
440+
const agentCfgVars = `BUILDKITE_GIT_CHECKOUT_FLAGS
441+
BUILDKITE_GIT_CLEAN_FLAGS
442+
BUILDKITE_GIT_CLONE_FLAGS
443+
BUILDKITE_GIT_CLONE_MIRROR_FLAGS
444+
BUILDKITE_GIT_FETCH_FLAGS
445+
BUILDKITE_GIT_MIRRORS_LOCK_TIMEOUT
446+
BUILDKITE_GIT_MIRRORS_PATH
447+
BUILDKITE_GIT_MIRRORS_SKIP_UPDATE
448+
BUILDKITE_GIT_SUBMODULES
449+
BUILDKITE_CANCEL_GRACE_PERIOD
450+
BUILDKITE_COMMAND_EVAL
451+
BUILDKITE_LOCAL_HOOKS_ENABLED
452+
BUILDKITE_PLUGINS_ENABLED
453+
BUILDKITE_REDACTED_VARS
454+
BUILDKITE_SHELL
455+
BUILDKITE_SIGNAL_GRACE_PERIOD_SECONDS
456+
BUILDKITE_SSH_KEYSCAN
457+
BUILDKITE_STRICT_SINGLE_HOOKS
458+
BUILDKITE_TRACE_CONTEXT_ENCODING
459+
BUILDKITE_TRACING_BACKEND
460+
BUILDKITE_TRACING_SERVICE_NAME
461+
BUILDKITE_TRACING_TRACEPARENT
462+
BUILDKITE_TRACING_PROPAGATE_TRACEPARENT
463+
BUILDKITE_AGENT_AWS_KMS_KEY
464+
BUILDKITE_AGENT_JWKS_FILE
465+
BUILDKITE_AGENT_JWKS_KEY_ID`
466+
if _, err := fmt.Fprintln(r.envShellFile, agentCfgVars); err != nil {
467+
return nil, err
468+
}
469+
}
470+
432471
for key, value := range env {
433472
if _, err := fmt.Fprintf(r.envShellFile, "%s=%q\n", key, value); err != nil {
434473
return nil, err

internal/experiments/experiments.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const (
3131
OverrideZeroExitOnCancel = "override-zero-exit-on-cancel"
3232
PTYRaw = "pty-raw"
3333
ResolveCommitAfterCheckout = "resolve-commit-after-checkout"
34+
PropagateAgentConfigVars = "propagate-agent-config-vars"
3435

3536
// Promoted experiments
3637
ANSITimestamps = "ansi-timestamps"
@@ -55,6 +56,7 @@ var (
5556
OverrideZeroExitOnCancel: {},
5657
PTYRaw: {},
5758
ResolveCommitAfterCheckout: {},
59+
PropagateAgentConfigVars: {},
5860
}
5961

6062
Promoted = map[string]string{

0 commit comments

Comments
 (0)