Skip to content

Releases: buildkite/agent

v3.50.4

01 Aug 01:03
a10fcb3
Compare
Choose a tag to compare

v3.50.4 (2023-07-31)

Full Changelog

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.

  • Legacy step forms (where the step type is specified with type) should parse correctly
  • Scalar (i.e. non-map) block steps should parse correctly
  • Explicit env: null should parse correctly
  • Parser errors should no longer cause the pipeline to be missing steps; either errors should halt processing or unknown step types remain in the output (though these might still be rejected by buildkite.com).

⚠️ 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"

Fixed

Changed

  • Remove docker-compose v1 from ubuntu 22.04 and replace with compatibility script #2248 (@triarius)
  • Authentication failure errors when using S3 now mention BUILDKITE_S3_PROFILE and AWS_PROFILE #2247 (@DrJosh9000)

Internal

v3.50.3

24 Jul 07:21
14df6e0
Compare
Choose a tag to compare

v3.50.3 (2023-07-24)

Full Changelog

This release contains a known issue:

Severity Description Fixed in
Medium Several forms of pipelines fail to parse and can no longer be uploaded ✅ Fixed in v3.50.4

Changed

v3.50.2

21 Jul 07:29
4ed984d
Compare
Choose a tag to compare

v3.50.2 (2023-07-21)

Full Changelog

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
Workaround for yaml merge key issue For example, this pipeline would fail to parse:
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!'"

Fixed

v3.50.1

20 Jul 03:21
99bd6ce
Compare
Choose a tag to compare

v3.50.1 (2023-07-20)

Full Changelog

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
Workaround for yaml merge key issue For example, this pipeline would fail to parse:
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!'"

Fixed

v3.50.0

19 Jul 03:26
9b4549a
Compare
Choose a tag to compare

v3.50.0 (2023-07-18)

Full Changelog

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
Workaround for yaml merge key issue For example, this pipeline would fail to parse:
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!'"

Added

Fixed

  • Add workaround for fatal: bad object errors when fetching from a git mirror #2218 (@DrJosh9000)
  • Fix missing fetch when updating git mirrors of submodules (#2203) (@DrJosh9000)
  • Use a unique name for each agent started using the systemd template unit file #2205 (@DavidGregory084)
  • Polyglot hooks wasn't documented in EXPERIMENTS.md, so we fixed that #2169 (@moskyb)
  • De-experimentify wording on the status page #2172 (@DrJosh9000)
  • The secrets redactor now properly redacts multi-line secrets and overlapping secrets #2154 (@DrJosh9000)

Changed

Various code cleanups and meta-fixes

And the usual amount of @dependabot[bot] updates!

v3.49.0

21 Jun 06:54
9619ad6
Compare
Choose a tag to compare

Fixed

  • CreateArtifacts & UpdateArtifacts: remove sometimes-too-short timeout after 4 attempts #2159 (@pda)
  • Fix submodule mirror repository remote using main repo URL #1998 (@francoiscampbell)
  • Update job log file to include line transforms #2157 (@chasestarr)
  • Clearer HTTP error logging from API client #2156 (@moskyb)

Changed

v3.48.0

08 Jun 01:41
911dc8c
Compare
Choose a tag to compare

v3.48.0 (2023-06-06)

Full Changelog

The de-experimentification release!

  • The ansi-timestamps experiment is now enabled by default. To remove the
    timestamps from your logs, you can pass the --no-ansi-timestamps flag.
  • The flock-file-locks experiment is now enabled by default. Because the old
    and new file lock systems don't interact, we strongly recommend not running
    multiple agents of different versions on the same host.
  • The inbuilt-status-page experiment is now enabled by default. For those
    running the agent with --health-check-addr, go to /status to see a
    human-friendly status page.

And whatever happened to git-mirrors? It graduated from experiment-hood in
v3.47.0!

Changed

Fixed

v3.47.0

25 May 07:44
813f6e4
Compare
Choose a tag to compare

v3.47.0 (2023-05-25)

Full Changelog

Two new and very noteworthy experiments!

  1. Have you ever wanted to write hooks in a compiled language? Or in Python or Ruby? Well now you can! With --experiment=polyglot-hooks the agent can run all sorts of hooks and plugins directly. Combined with --experiment=job-api, your hooks-of-a-different-language can alter environment variables through the local Job API!
  2. Concurrency groups are great, but have you ever wanted to manage multiple agents running on the same host concurrently accessing a shared resource? Well now you can! With --experiment=agent-api, the agent now has an inbuilt locking service, accessible through new lock subcommands and also via a Unix socket (like the job-api).

Added

  • Experiment: Polyglot hooks #2040 (@moskyb)
  • Experiment: Local Agent API, with locking service #2042 (@DrJosh9000)
  • New flag --upload-skip-symlinks (on artifact upload) allows skipping symlinks when uploading files. --follow-symlinks has been deprecated and renamed to --glob-resolve-follow-symlinks #2072 (@triarius)

Fixed

  • The normalised-upload-paths experiment was unintentionally left out of the available experiments list #2076 (@MatthewDolan)

Changed

  • The git-mirrors experiment is promoted to full functionality #2032 (@moskyb)
  • Errors in the git checkout process are now easier to diagnose #2074 (@moskyb)
  • Alpine images updated to Alpine 3.18 #2098 (@moskyb)

v3.46.1

08 May 05:48
Compare
Choose a tag to compare

3.46.1 (2023-05-08)

Full Changelog

Fixed

  • Avoid long --no-patch arg added to git show in v1.8.4, to e.g. support CentOS 7 #2075 (@pda)

v3.46.0

04 May 04:29
6c838a4
Compare
Choose a tag to compare

3.46.0 (2023-05-04)

Full Changelog

Added

Fixed

As always, @dependabot and friends have been deep in the update mines ensuring that all of our dependencies are up to date. Thanks, dependabot!