The Buildkite Agent is an open-source toolkit written in Go for securely running build jobs on any device or network
⚠️ We're adjusting how the set of supported OS versions changes over time. For the details, see #2354.
use-zzglob
: uses a different library for resolving glob patterns in buildkite-agent artifact upload
#2341 (@DrJosh9000)git log
is now used to get commit information instead of git show
#2323 (@leakingtapan)Note: the buildkite-agent step get
command now prints a new line to stdout in circumstances where it previously did not. We advise you to always strip whitespace from the output of this (and other commands). If you are processing the output of this in a POSIX compliant shell with command substitution (i.e. step="$(buildkite-agent step get ...)"
), trailing newlines will be removed automatically.
⚠️ There is a known issue with buildkite-agent step get
. This is fixed in v3.52.0
fatal: bad object
not detected from git fetch #2286 (@triarius)Is
methods #2269 (@triarius)concat
#2288 (@DrJosh9000)This point release fixes more parser cases in previous point releases of 3.50. We recommend anyone using v3.50.0 through v3.50.3 upgrade, especially when experiencing problems with previously-working pipeline YAML.
type
) should parse correctlyblock
steps should parse correctlyenv: null
should parse correctly⚠️ There is a remaining known issue concerning environment variable substitution in pipelines. When environment variables that are defined as null
at the top level of a pipeline upload are substituted, they will no longer fall back to values defined in the environment of the buildkite-agent. For example, if you had a pipeline
env:
FOO: null
steps:
- command: echo "FOO=$FOO"
and upload the pipeline as
FOO=fromJob buildkite-agent pipeline upload
the uploaded pipeline was previously equivalent to:
env:
FOO: null
steps:
- command: echo "FOO=fromJob"
but now, the null
value will result in an empty string being substituted instead.
To work around this, we recommend you defined the fallback manually like so:
env:
FOO: ${FOO:-}
steps:
- command: echo "FOO=$FOO"
return
statements when unmarshalling fails #2245 (@moskyb), #2257 (@DrJosh9000)UnknownStep
type #2254 (@DrJosh9000)env: null
#2260 (@DrJosh9000)BUILDKITE_S3_PROFILE
and AWS_PROFILE
#2247 (@DrJosh9000)GOCACHE
outside container #2256 (@DrJosh9000)This release contains a known issue:
Severity | Description | Fixed in |
---|---|---|
Medium | When uploading pipelines, if any object in the pipeline YAML contained multiple merge keys, the pipeline would fail to parse. See below for a workaround | ✅ Fixed in v3.50.3 |
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: *default_plugins
<<: *default_retry
command: "echo 'hello, world!'"
As a workaround for this, you can use yaml array merge syntax instead:
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: [*default_plugins, *default_retry]
command: "echo 'hello, world!'"
This release contains multiple issues:
Severity | Description | Fixed in |
---|---|---|
⚠️ Very High | Jobs running on this version of the agent are not cancellable from the UI/API | ✅ Fixed in v3.50.2 |
Medium | When uploading pipelines, if any object in the pipeline YAML contained multiple merge keys, the pipeline would fail to parse. See below for a workaround | ✅ Fixed in v3.50.3 |
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: *default_plugins
<<: *default_retry
command: "echo 'hello, world!'"
As a workaround for this, you can use yaml array merge syntax instead:
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: [*default_plugins, *default_retry]
command: "echo 'hello, world!'"
This release contains multiple issues:
Severity | Description | Fixed in |
---|---|---|
Medium | When uploading pipelines, some group steps are not correctly parsed, and were ignored. | ✅ Fixed in v3.50.1 |
Low | Uploading pipelines with empty or zero-length steps failed, where they should've been a no-op. |
✅ Fixed in v3.50.1 |
⚠️ Very High | Jobs running on this version of the agent are not cancellable from the UI/API | ✅ Fixed in v3.50.2 |
Medium | When uploading pipelines, if any object in the pipeline YAML contained multiple merge keys, the pipeline would fail to parse. See below for a workaround | ✅ Fixed in v3.50.3 |
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: *default_plugins
<<: *default_retry
command: "echo 'hello, world!'"
As a workaround for this, you can use yaml array merge syntax instead:
default_plugins: &default_plugins
plugins:
- docker#4.0.0:
image: alpine:3.14
default_retry: &default_retry
retry:
automatic:
- exit_status: 42
steps:
- <<: [*default_plugins, *default_retry]
command: "echo 'hello, world!'"
avoid-recursive-trap
experiment to avoid a recursive trap #2209 (@triarius)fatal: bad object
errors when fetching from a git mirror #2218 (@DrJosh9000)Bootstrap
struct (and friends) to Executor
#2188 (@moskyb)And the usual amount of @dependabot[bot] updates!