Releases: buildkite/agent
v3.45.0
3.45.0 (2023-03-16)
It's a busy one! The major new feature in this release is the job-api
experiment, which enables an HTTP API within the agent that allows jobs to inspect and mutate their environment, without using the normal bash-isms that we normally require. This is a big step towards supporting hooks and plugins in other languages, and we're really excited to see what you all do with it!
When this experiment is enabled, the agent will start an HTTP server on a unix domain socket, the address of which will be made available through the BUILDKITE_AGENT_JOB_API_SOCKET
environment variable, with a token available through the BUILDKITE_AGENT_JOB_API_TOKEN
environment variable. This socket can be used with the buildkite-agent env {get,set,unset}
commands on the commandline, or directly through cURL or other HTTP client. Included in this release of the agent is a golang client, which can be imported directly into your Go projects.
Also included is another experimental feature, descending-spawn-priority
, which makes agents using the --spawn-with-priority
flag spawn agents with a descending priority, rather than the default ascending priority. This is useful when running agents on heterogeneous hardware (ie, having two agents on one machine and four on another), as it means that jobs will be spread more evenly across the agents. For more information, see the original issue, and @DrJosh9000's PR. Huge thanks to @nick-f for bringing this to our attention!
Full changelog follows:
Added
- Add current-job api #1943 #1944 #2013 #2017 (@moskyb + @DrJosh9000)
- Agent docker images now include
buildx
#2005 (@triarius) - Add
descending-spawn-priority
experiment. #2004 (@DrJosh9000) - We now publish OSS acknowledgements with the agent. You can read them at ACKNOWLEDGEMENTS.md, or by running
buildkite-agent acknowledgements
#1945 #2000 (@DrJosh9000) - BUILDKITE_S3_ENDPOINT env var, allowing jobs to upload artifacts to non-S3 endpoints eg minio #1965 (@pda, @nightah)
Fixed
- Avoid holding full job logs, reducing agent memory consumption #2014 (@DrJosh9000)
- ansi-timestamps: Compute prefixes at start of line #2016 (@DrJosh9000)
- Fix DD trace setup warning #2007 (@goodspark)
Changed
- Kubernetes improvements:
- Globs parsed by the agent now support negation and bracketing #2001 (@moskyb)
- Allow the use of non-bash shells to execute agent hooks #1995 (@DrJosh9000)
- Don't add custom remotes for submodules when using git-mirrors #1991 (@jonahbull)
- Improve systemd behaviour when updating the agent #1993 (@triarius)
- ... And as always, the usual crop of small fixes, dependency updates, and cleanups (@moskyb, @dependabot, @DrJosh9000, @triarius)
v3.44.0
v3.44.0 (2023-02-27)
Fixed
- tini is once again available at the old path (
/usr/sbin/tini
) in the Ubuntu 20.04 image #1934 (@triarius) - With
ansi-timestamps
experiment enabled, each line's timestamp is now computed at the end of the line #1940 (@DrJosh9000) - A panic when the AWS region for an S3 bucket is undiscoverable #1964 (@DrJosh9000)
Added
- An experiment for running jobs under Kubernetes #1884 (@benmoss), #1968 (@triarius)
- Ubuntu 22.04 Docker Image #1966 (@triarius)
- Claims can now be added to OIDC token requests #1951 (@triarius)
- A new flag / environment variable (
--git-checkout-flags
/BUILDKITE_GIT_CHECKOUT_FLAGS
) for passing extra flags togit checkout
#1891 (@jmelahman) - Reference clones can be used for submodules #1959 (@jonahbull)
Changed
- Upstart is no longer supported #1946 (@sj26)
pipeline upload
internally uses a new asynchronous upload flow, reducing the number of connections held open #1927 (@triarius)- Faster failure when trying to
pipeline upload
a malformed pipeline #1963 (@triarius) - Better errors when config loading fails #1937 (@moskyb)
- Pipelines are now parsed with gopkg.in/yaml.v3. This change should be invisible, but involved a non-trivial amount of new code. #1930 (@DrJosh9000)
- Many dependency updates, notably Go v1.20.1 #1955.
- Several minor fixes, improvements and clean-ups (@sj26, @triarius, @jonahbull, @DrJosh9000, @tcptps, @dependabot[bot])
v3.43.1
v3.43.1 (2023-01-20)
Fixed
v3.43.0
3.43.0 (2023-01-18)
This version of the agent has issues running in --acquire-job
mode
Please use v3.43.1 or later. See #1923 for more info.
Fixed
- A nil pointer dereference introduced in 3.42.0 due to missing error handling after calling
user.Current
#1910 (@DrJosh9000)
Added
- A flag to allow empty results with doing an artifact search #1887 (@MatthewDolan)
- Docker Images for linux/arm64 #1901 (@triarius)
- Agent tags are added from ECS container metadata #1870 (@francoiscampbell)
Changed
v3.42.0
v3.42.0 (2023-01-05)
Added
- Add an in-built hierarchical status page #1873 (@DrJosh9000)
- Add an
agent-startup
hook that fires at the same time as theagent-shutdown
hook is registered #1778 (@donalmacc)
Changed
- Enforce a timeout on
finishJob
andonUploadChunk
#1854 (@DrJosh9000) - A variety of dependency updates, documentation, and code cleanups! (@dependabot[bot] + @DrJosh9000 + @moskyb)
- Flakey test fixes and test suite enhancements (@triarius + @DrJosh9000)
Fixed
Security
- Update
x/crypto/ssh
to0.3.0
, patching CVE-2020-9283 #1857 (@moskyb)
v3.41.0
v3.41.0 (2022-11-24)
Added
- Experimental
buildkite-agent oidc request-token
command #1827 (@triarius) - Option to set the service name for tracing #1779 (@goodspark)
Changed
- Update windows install script to detect arm64 systems #1768 (@yob)
- Install docker compose v2 plugin in agent alpine and ubuntu docker images #1841 (@ajonei + @triarius)
- 🧹 A variety of dependency updates, documentation, and cleanups! (@dependabot + @DrJosh9000)
v3.40.0
v3.40.0 (2022-11-08)
Added
- Agent binaries for windows/arm64 #1767 (@yob)
- Alpine k8s image #1771 (@dabarrell)
Security
- (Fixed in 3.39.1) A security issue in environment handling between buildkite-agent and Bash 5.2 #1781 (@moskyb)
- Secret redaction now handles secrets containing UTF-8 code points greater than 255 #1809 (@DrJosh9000)
- The update to Go 1.19.3 fixes two Go security issues (particularly on Windows):
- The current directory (
.
) in$PATH
is now ignored for finding executables - see https://go.dev/blog/path-security - Environment variable values containing null bytes are now sanitised - see golang/go#56284
- The current directory (
Changed
- 5xx responses are now retried when attempting to start a job #1777 (@jonahbull)
- 🧹 A variety of dependency updates and cleanups!
v3.39.1
v3.39.1 (2022-10-14)
Security
v3.39.0
v3.39.0 (2022-09-08)
Added
- gcp:instance-name and tweak GCP labels fetching #1742 (@pda)
- Support for not-yet-released per-job agent tokens #1745 (@moskyb)
Changed
- Retry Disconnect API calls #1761 (@pda)
- Only search for finished artifacts #1728 (@moskyb)
- Cache S3 clients between artifact downloads #1732 (@moskyb)
- Document label edge case #1718 (@plaindocs)
Fixed
v3.38.0
3.38.0 (2022-07-20)
Added
- Add Code of Conduct based on Contributor Covenant v2.1 #1717 (@moskyb)