You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: EXPERIMENTS.md
+13-26Lines changed: 13 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,18 +37,6 @@ After repository checkout, resolve `BUILDKITE_COMMIT` to a commit hash. This mak
37
37
38
38
**Status**: broadly useful, we'd like this to be the standard behaviour in 4.0. 👍👍
39
39
40
-
### `polyglot-hooks`
41
-
42
-
Allows the agent to run hooks written in languages other than bash. This enables the agent to run hooks written in any language, as long as the language has a runtime available on the agent. Polyglot hooks can be in interpreted languages, so long as they have a valid shebang, and the interpreter specified in the shebang is installed on the agent.
43
-
44
-
This experiment also allows the agent to run compiled binaries (such as those produced by Go, Rust, Zig, C et al.) as hooks, so long as they are executable.
45
-
46
-
Hooks are run in a subshell, so they can't modify the environment of the agent process. However, they can use the [job-api](#job-api) to modify the environment of the job.
47
-
48
-
Binary hooks are available on all platforms, but interpreted hooks are unfortunately unavailable on Windows, as Windows does not support shebangs.
49
-
50
-
**Status:** Experimental while we try to cover the various corner cases. We'll probably promote this to non-experiment soon™️.
51
-
52
40
### `agent-api`
53
41
54
42
This exposes a local API for interacting with the agent process.
@@ -58,19 +46,6 @@ The API is exposed via a Unix Domain Socket. The path to the socket is not avail
58
46
59
47
**Status:** Experimental while we iron out the API and test it out in the wild. We'll probably promote this to non-experiment soon™.
60
48
61
-
### `use-zzglob`
62
-
63
-
Uses a different library for resolving glob expressions used for `artifact upload`.
64
-
The new glob library should resolve a few issues experienced with the old library:
65
-
66
-
- Because `**` is used to mean "zero or more path segments", `/**/` should match `/`.
67
-
- Directories that cannot match the glob pattern shouldn't be walked while resolving the pattern. Failure to do this makes `artifact upload` difficult to use when run in a directory containing a mix of subdirectories with different permissions.
68
-
- Failures to walk potential file paths should be reported individually.
69
-
70
-
The new library should handle all syntax supported by the old library, but because of the chance of incompatibilities and bugs, we're providing it via experiment only for now.
71
-
72
-
**Status:** Since using the old library causes problems, we hope to promote this to be the default soon™️.
73
-
74
49
### `pty-raw`
75
50
76
51
Set PTY to raw mode, to avoid mapping LF (\n) to CR,LF (\r\n) in job command output.
@@ -96,7 +71,7 @@ a cancelled job should appear as a failure, regardless of the OS the agent is ru
96
71
97
72
### `interpolation-prefers-runtime-env`
98
73
99
-
When interpolating the pipeline level environment block, a pipeline level environment variable could take precedence over environment variables depending on the ordering. This may contravene Buildkite's [documentation](https://buildkite.com/docs/pipelines/environment-variables#environment-variable-precedence) that suggests the Job runtime environment takes precedence over that defined by combining environment variables defined in a pipeline.
74
+
When interpolating the pipeline level environment block, a pipeline level environment variable could take precedence over environment variables depending on the ordering. This may contravene Buildkite's [documentation](https://buildkite.com/docs/pipelines/environment-variables#environment-variable-precedence) that suggests the Job runtime environment takes precedence over that defined by combining environment variables defined in a pipeline.
100
75
101
76
We previously made this the default behaviour of the agent (as of v3.63.0) but have since reverted it.
102
77
@@ -122,3 +97,15 @@ has a different effect depending on this experiment:
122
97
- With `allow-artifact-path-traversal` enabled, `foo.txt` is downloaded to `../../foo.txt`.
123
98
124
99
**Status:** This experiment is an escape hatch for a security fix. While the new behaviour is more secure, it may break downloading of legitimately-uploaded artifacts.
100
+
101
+
### `descending-spawn-priority`
102
+
103
+
When using `--spawn` with `--spawn-with-priority`, the agent assigns ascending priorities to each spawned agent (1, 2, 3, ...). This experiment changes the priorities to be descending (-1, -2, -3, ...) instead. This helps jobs be assigned across all hosts in cases where the value of `--spawn` varies between hosts.
104
+
105
+
**Status:** Experimental as an escape hatch to default behaviour. Will soon be promoted to a regular flag.
106
+
107
+
### `propagate-agent-config-vars`
108
+
109
+
Prepends agent configuration variables (such as `BUILDKITE_GIT_*`, `BUILDKITE_SHELL`, `BUILDKITE_CANCEL_GRACE_PERIOD`, etc.) to the environment file used by the job runner. This is useful in environments like Docker where the agent configuration is not otherwise available to the job process.
110
+
111
+
**Status:** Experimental while we test the impact on job environments
0 commit comments