All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v3.60.1 (2023-12-06)
- Bump docker/library/golang from 1.21.4 to 1.21.5 in /.buildkite #2542 (@dependabot[bot])
- Fix typo in environment variable name for allowed-plugins #2526 (@moskyb)
- Fix environment variable interpolation into command step labels #2540 (@triarius)
- Refactor hook wrapper writing #2505 (@triarius)
- Use os.RemoveAll in cleanup #2538 (@DrJosh9000)
- Dependencies #2537 #2536 #2500 #2528 #2529 #2533 #2532 #2534 #2535 (@dependabot[bot])
v3.60.0 (2023-11-29)
Signed pipelines is now GA! Check out the docs here if you want a little more zero-trust mixed into your pipelines.
- Insert extra timestamps after a timeout #2447 (@DrJosh9000)
- Log the max size warning once #2497 (@DrJosh9000)
- MetaDataSetCommand: retry longer (exponential backoff) #2514 (@pda)
- Humanize bytes to IEC (1024 → KiB etc) not SI (1000 → KB etc) #2513 (@pda)
- More log streamer cleanups #2498 (@DrJosh9000)
- Add a helpful note to security researchers #2520 (@DrJosh9000)
- Update Go to 1.21 #2284 (@triarius + @moskyb)
- Dependabot's making us all look bad at our jobs: #2501 #2499 #2515 #2509 #2502 #2516 #2517 #2496 #2493 #2495 #2494 #2504
v3.59.0 (2023-11-09)
- This release is built with Go 1.20.11, which includes fixes for two vulnerabilities in file path handling on Windows (CVE-2023-45283, CVE-2023-45284). #2486 (@dependabot[bot])
- Experimental: Signed Pipelines
- Use zzglob.MultiGlob to process multiple globs simultaneously, and stop sending GlobPath with artifact upload #2472 (@DrJosh9000)
- Migrate usage of internal/{pipeline,ordered,jwkutil} to go-pipeline #2489 (@moskyb)
- Update bintest to v3.2.0 to resolve ETXTBSY race condition in tests #2480 (@DrJosh9000)
- Fix race in header times streamer #2485, #2487 (@DrJosh9000)
- Various dependency updates #2484, #2482 (@dependabot[bot])
v3.58.0 (2023-11-02)
- Add allowed-plugin param to enable plugins allow-list #2471 (@jakubm-canva)
- New experiment:
pty-raw
avoids LF→CRLF mapping by setting PTY to raw mode #2453 (@pda) - Experimental: Signed Pipelines
- Fix checkout of short commit hashes #2465 (@triarius)
- Parallelise artifact collection #2456 (@DrJosh9000), #2477 (@DrJosh9000)
- Log warning about short vars once #2454 (@DrJosh9000)
- Reduce header regexps #2135 (@DrJosh9000)
- Various dependency updates: #2469, #2468, #2467, #2463, #2450, #2460, #2459, #2458 (@dependabot[bot])
v3.57.0 (2023-10-19)
- Experimental: Signed Pipelines
- Signing build matrices #2440 #2429 #2426 #2425 #2391 #2395 (@DrJosh9000)
- Add debug logs for job verification #2439 (@DrJosh9000)
- Reduce information in verification errors #2431 (@DrJosh9000)
- Separate step/pipeline env vars for job validation #2428 (@DrJosh9000)
- Signing config cleanup #2420 #2427 (@moskyb)
- Fix verifying jobs with no plugins #2419 (@DrJosh9000)
- Use canonicalised JSON as signature payload #2416 (@DrJosh9000)
- Add utility for generating signing and verification keys #2415 #2422 (@moskyb)
- Revert "Upgrade pre-installed packages in docker images" and Pin docker images by digest #2430 (@triarius)
- Use docker image bases from ECR public gallery #2423 #2424 (@triarius + @moskyb)
- Add CODEOWNERS file #2444 (@moskyb)
- Push agent packages to Packagecloud #2438 #2441 #2443 #2442 (@sj26)
- Test clicommand config completeness #2414 (@moskyb)
- As always, the cosmic background radiation of dependabot updates. Thanks dependabot! #2435 #2434 #2433 #2432 #2421 #2418 #2417 (@dependabot[bot])
v3.56.0 (2023-10-05)
- Upgrade libc packages in Ubuntu 22.04 docker image to those patched for CVE-2023-4911 #2410 (@triarius)
- Add
allow-repositories
param to enable repository allow-listing #2361 (@david-poirier)
- Upgrade pre-installed packages in docker images #2410 (@triarius)
- Add Matrix parsing #2382 (@DrJosh9000)
- Add
EXPERIMENTAL:
to the help text for all pipeline signing flags #2412 (@moskyb)
- Fix parsing pipelines what use a string as the skip key in a matrix adjustment #2407 (@moskyb)
- Fix flaky TestLockFileRetriesAndTimesOut #2392 (@DrJosh9000)
- Fix apt install awscli #2390 (@moskyb)
- Fix incorrect check in a test 😅 #2381 (@DrJosh9000)
- Run createrepo_c on ubuntu #2385 #2389 (@moskyb)
- Update dependabot config to use groups #2384 (@moskyb)
- Fix some typos in code comments #2380 (@testwill)
And (a slightly larger?) than usual amount of (@dependabot[bot]) updates #2369 #2371 #2372 #2373 #2377 #2378 #2383 #2386 #2387 #2397 #2398 #2399 #2400 #2401 #2402 #2403 #2405
v3.55.0 (2023-09-14)
- Annotations created with contexts that contain
.
can now be removed #2365 (@DrJosh9000)
- Add a full agent version which includes the commit #2283 (@triarius)
v3.54.0 (2023-09-05)
⚠️ We're adjusting how the set of supported OS versions changes over time. For the details, see #2354.
- New experiment
use-zzglob
: uses a different library for resolving glob patterns inbuildkite-agent artifact upload
#2341 (@DrJosh9000)
- Logged errors might look different: errors passed back up to main.go from clicommand #2347 (@triarius)
- HEAD commit found faster:
git log
is now used to get commit information instead ofgit show
#2323 (@leakingtapan)
- Adapt Olfactor to allow sniffing for multiple smells #2332 (@triarius)
v3.53.0 (2023-08-31)
- Artifact upload and download to/from Azure Blob Storage #2318 (@DrJosh9000)
- Fix detection of missing commits on checkout #2322 (@goodspark)
- [Experimental] Handle the case when unmarshalling a step where there aren't any plugins #2321 (@moskyb)
- [Experimental] Fix signature mismatches when steps have plugins #2339, #2319 (@DrJosh9000)
- [Experimental] Catch step env/job env edge case #2340 (@DrJosh9000)
- Retry fork/exec errors when running hook #2325 (@triarius)
- Fix ECR authentication failure #2337, #2335, #2334 (@DrJosh9000)
- Split checkout, artifact, and plugin phases out of executor.go #2324 (@triarius)
- Store experiments in contexts #2316 (@DrJosh9000)
v3.52.1 (2023-08-23)
- Fix missing group interpolation #2303 (@DrJosh9000)
- Experimental fix for agent workers reading plugin directories while they are being written to by other agent workers #2301 (@triarius)
- Rework method of pushing releases to RPM repos #2315 #2314 #2312 #2310 #2304 (@DrJosh9000)
- Update help text with suggestions from docs code review #2313 (@triarius)
- Fix a flaky shell test #2311 (@triarius)
- Adjust cli help output to work better with documentation generation #2317 (@triarius)
v3.52.0 (2023-08-17)
- [Experimental] Include pipeline and step env in step signatures #2295 (@DrJosh9000)
- Fix step get is printing the address of the stdout stream at the start #2299 (@triarius)
- Add a newline after printing errors from the config parser #2296 (@triarius)
- Enable mount-buildkite-agent in release pipeline containers #2298 (@DrJosh9000)
- Update ecr, docker plugins, and agent image ver #2297 (@DrJosh9000)
- Pin bk cli used in agent pipeline to a commit #2294 (@triarius)
v3.51.0 (2023-08-15)
- Add --strict-single-hooks #2268 (@DrJosh9000)
- Add missing 'an' in annotation help #2285 (@mdb)
- [Experimental] Verify step signatures #2210 (@moskyb)
- [Experimental] Pipeline Signing/Verification with JWS #2252 (@moskyb)
- [Experimental] Include plugins in command step signatures #2292 (@DrJosh9000)
- Make the agent send a SIGTERM (configurable) before a SIGKILL to subprocesses #2250 (@triarius)
- Limit job log length #2192 (@DrJosh9000)
- Refactor redactor into streaming replacer and use it to redact secrets #2277 (@DrJosh9000)
- Dependency upgrades #2278 #2274 #2271 #2272 #2275 #2266 (@dependabot[bot])
- Fix
fatal: bad object
not detected from git fetch #2286 (@triarius) - Fix scalar plugin parsing #2264 (@DrJosh9000)
- Reorganise step types among files #2267 (@DrJosh9000)
- Upload test coverage #2270 (@DrJosh9000)
- Remove unwrapping in error
Is
methods #2269 (@triarius) - Use capacity hint in
concat
#2288 (@DrJosh9000) - Add ordered.Unmarshal, and use it in pipeline parsing #2279 (@DrJosh9000)
- Create a setup method for config and logger to reduce boilerplate #2281 (@triarius)
- Add retry for publishing RPMs #2280 (@triarius)
- Fix data race in testAgentEndpoint #2265 (@DrJosh9000)
- Fix missing "fmt" import #2287 (@DrJosh9000)
v3.50.4 (2023-07-31)
- Even More Pipeline Parsing Fixes #2253 (@moskyb)
- Fix missing
return
statements when unmarshalling fails #2245 (@moskyb), #2257 (@DrJosh9000) - Add future-proofing
UnknownStep
type #2254 (@DrJosh9000) - Nil handling fixes, particularly parsing
env: null
#2260 (@DrJosh9000)
- 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
andAWS_PROFILE
#2247 (@DrJosh9000)
- Remove a double check for the existence of a local hook and log when it is missing in debug #2249 (@triarius)
- Refactor some code in process.go #2251 (@triarius)
- Store
GOCACHE
outside container #2256 (@DrJosh9000) - Get mime types from github, rather than Apache's SVN Server #2255 (@moskyb)
- Check that go.mod is tidy in CI #2246 (@moskyb) and fix flakiness of this check #2261 (@triarius)
v3.50.3 (2023-07-24)
- Two-phase pipeline parsing #2238 (@DrJosh9000)
- Remove installing qemu-binfmt from agent pipeline #2236 (@triarius)
v3.50.2 (2023-07-21)
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 |
- Fix an issue introduced in #2207 where jobs wouldn't check if they'd been cancelled #2231 (@triarius)
- Fix avoid-recursive-trap experiment not recognised #2235 (@triarius)
- Further refactor to
agent.JobRunner
#2222 #2230 (@moskyb)
v3.50.1 (2023-07-20)
This release contains multiple issues:
Severity | Description | Fixed in |
---|---|---|
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 |
- Empty or zero-length
steps
is no longer a parser error, and is normalised to [] instead #2225, #2229 (@DrJosh9000) - Group steps now correctly include the
group
key #2226 (@DrJosh9000) - Increases to test coverage for the new parser #2227 (@DrJosh9000)
v3.50.0 (2023-07-18)
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 |
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!'"
- We're working on making pipeline signing a feature of the agent! But it's definitely not ready for primetime yet... #2216, #2200, #2191, #2186, #2190, #2181, #2184, #2173, #2180 (@moskyb, @DrJosh9000)
- Add option to configure location of Job Log tmp file #2174 (@yhartanto)
- Add
avoid-recursive-trap
experiment to avoid a recursive trap #2209 (@triarius) - Load the AWS Shared Credentials for s3 operations #1730 (@lox)
- Add workaround for
fatal: bad object
errors when fetching from a git mirror #2218 (@DrJosh9000) - Fix missing fetch when updating git mirrors of submodules (buildkite#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)
- Print agent version and build in debug logs #2211 (@triarius)
- Include the version each experiment was promoted #2199 (@DrJosh9000)
- Fix docker builds for Ubuntu 22.04 #2217 (@moskyb)
- JobRunner cleanup #2207 (@moskyb)
- Simplify command phase #2206 (@triarius)
- Rename
Bootstrap
struct (and friends) toExecutor
#2188 (@moskyb) - Upgrade docker compose plugin to v4.14, use docker compose v2 #2189 (@moskyb)
- Rename package bootstrap -> job #2187 (@moskyb)
- Clarify code around creating a process group #2185 (@triarius)
- Fix docker builds for Ubuntu 22.04 #2217 (@moskyb)
And the usual amount of @dependabot[bot] updates!
v3.49.0 (2023-06-21)
- 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)
Buildkite-Timeout-Milliseconds
API request header #2160 (@pda)- Extract pipeline parser to package internal/pipeline #2158 (@DrJosh9000)
- Minor dependency updates #2165 #2164 #2162 #2161 #2153 #2152 #2151 (@dependabot[bot])
- Lock library #2145 (@DrJosh9000)
v3.48.0 (2023-06-06)
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!
- De-experimentify ansi-timestamps #2133 (@DrJosh9000)
- Preserve plugin config env var names with consecutive underscores #2116 (@triarius)
- De-experimentify flock-file-locks #2131 (@DrJosh9000)
- Report more AWS metadata #2118 (@david-poirier)
- De-experimentify inbuilt-status-page #2126 (@DrJosh9000)
- Fix origin for mirrored submodules #2144 (@DrJosh9000)
- Wipe checkout directory on
git checkout
andgit fetch
failure and retry #2137 (@triarius)
v3.47.0 (2023-05-25)
Two new and very noteworthy experiments!
- 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! - 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 newlock
subcommands and also via a Unix socket (like thejob-api
).
- Experiment: Polyglot hooks #2040 (@moskyb)
- Experiment: Local Agent API, with locking service #2042 (@DrJosh9000)
- New flag
--upload-skip-symlinks
(onartifact upload
) allows skipping symlinks when uploading files.--follow-symlinks
has been deprecated and renamed to--glob-resolve-follow-symlinks
#2072 (@triarius)
- The
normalised-upload-paths
experiment was unintentionally left out of the available experiments list #2076 (@MatthewDolan)
- 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)
3.46.1 (2023-05-08)
- Avoid long
--no-patch
arg added togit show
in v1.8.4, to e.g. support CentOS 7 #2075 (@pda)
3.46.0 (2023-05-04)
- Add
*_PRIVATE_KEY
to auto-redacted vars #2043 (@moskyb) - Warn on unknown experiments #2030 (@moskyb)
- More aws tags #1994 (@sj26)
- Add option for outputting structured logs for collection and searching #2009 (@goodspark)
- Include abbrev-commit in
buildkite:git:commit
meta-data #2054 (@pda) - Add agent support for getting meta-data by build #2025 (@123sarahj123)
- Prevent job cancellation during checkout from retrying #2047 #2068 (@matthewborden + @triarius + @moskyb)
- ArtifactUploader API calls: faster timeout & retry #2028 #2069 (@pda)
- Give a nicer error when empty strings are used as metadata values #2067 (@moskyb)
- Fix BUILDKITE_GIT_CLONE_MIRROR_FLAGS environment variable not working correctly #2056 (@ppatwf)
As always, @dependabot and friends have been deep in the update mines ensuring that all of our dependencies are up to date. Thanks, dependabot!
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:
- 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)
- 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)
- 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 (2023-02-27)
- 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)
- 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)
- 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])
3.43.1 (2023-01-20)
- An issue introduced in v3.43.0 where agents running in acquire mode would exit after ~4.5 minutes, failing the job they were running #1923 (@leathekd)
3.43.0 (2023-01-18)
- A nil pointer dereference introduced in 3.42.0 due to missing error handling after calling
user.Current
#1910 (@DrJosh9000)
- 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)
- The
env
subcommand is nowenv dump
#1920 (@pda) - AcquireJob now retries while the job is locked #1894 (@triarius)
- Various miscellaneous updates and improvements (@moskyb, @triarius, @mitchbne, @dependabot[bot])
v3.42.0 (2023-01-05)
- 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)
- 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)
- Ensure that unrecoverable errors for Heartbeat and Ping stop the agent #1855 (@moskyb)
- Update
x/crypto/ssh
to0.3.0
, patching CVE-2020-9283 #1857 (@moskyb)
v3.41.0 (2022-11-24)
- Experimental
buildkite-agent oidc request-token
command #1827 (@triarius) - Option to set the service name for tracing #1779 (@goodspark)
- Update windows install script to detect arm64 systems #1768 (@yob)
- Install docker compose v2 plugin in agent alpine and ubuntu docker images #1841 (@ajoneil) (@triarius)
- 🧹 A variety of dependency updates, documentation, and cleanups! (@dependabot[bot]) (@DrJosh9000)
v3.40.0 (2022-11-08)
- (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 (
- 5xx responses are now retried when attempting to start a job #1777 (@jonahbull)
- 🧹 A variety of dependency updates and cleanups!
v3.39.0 (2022-09-08)
- gcp:instance-name and tweak GCP labels fetching #1742 (@pda)
- Support for not-yet-released per-job agent tokens #1745 (@moskyb)
- 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)
- Docker: run /sbin/tini without -g for graceful termination #1763 (@pda)
- Fix multiple-nested plugin repos on gitlab #1746 (@moskyb)
- Fix unowned plugin reference #1733 (@moskyb)
- Fix order of level names for logger.Level.String() #1722 (@moskyb)
- Fix warning log level #1721 (@ChrisBr)
v3.38.0 (2022-07-20)
- Include a list of enabled features in the register request #1706 (@moskyb)
- Promote opentelemetry tracing to mainline feature status #1702 (@moskyb)
- Improve opentelemetry implementation #1699 #1705 (@moskyb)
v3.37.0 (2022-07-06)
- Agent metadata includes
arch
(e.g.arch=amd64
) alongsidehostname
andos
#1691 (moskyb) - Allow forcing clean checkout of plugins #1636 (toothbrush)
- Environment modification in hooks that set bash arrays #1692 (moskyb)
- Unescape backticks when parsing env from export -p output #1687 (moskyb)
- Log “Using flock-file-locks experiment 🧪” when enabled #1688 (lox)
- flock-file-locks experiment: errors logging #1689 (KevinGreen)
- Remove potentially-corrupted mirror dir if clone fails #1671 (lox)
- Improve log-level flag usage description #1676 (pzeballos)
- datadog-go major version upgrade to v5.1.1 #1666 (moskyb)
- Revert to delegating directory creation permissions to system umask #1667 (moskyb)
- Replace retry code with roko #1675 (moskyb)
- bootstrap/shell: round command durations to 5 significant digits #1651 (kevinburkesegment)
v3.36.1 (2022-05-27)
- Fix nil pointer deref when using --log-format json #1653 (@moskyb)
v3.36.0 (2022-05-17)
- Add experiment to use kernel-based flocks instead of lockfiles #1624 (@KevinGreen)
- Add option to enable temporary job log file #1564 (@albertywu)
- Add experimental OpenTelemetry Tracing Support #1631 + #1632 (@moskyb)
- Add
--log-level
flag to all commands #1635 (@moskyb)
- The
no-plugins
option now works correctly when set in the config file #1579 (@elruwen) - Clear up usage instructions around
--disconnect-after-idle-timeout
and--disconnect-after-job
#1599 (@moskyb)
- Refactor retry machinery to allow the use of exponential backoff #1588 (@moskyb)
- Create all directories with 0775 permissions #1616 (@moskyb)
- Dependency Updates:
v3.35.2 (2022-04-13)
- Fix race condition in bootstrap.go #1606 (@moskyb)
- Bump some dependency versions - thanks @dependabot!
v3.35.1 (2022-04-05)
- Revert file permission changes made in #1580. They were creating issues with docker-based workflows #1601 (@pda + @moskyb)
v3.35.0 (2022-03-23)
- Make
go fmt
mandatory in this repo #1587 (@moskyb) - Only search for finished artifact uploads when using
buildkite-agent artifact download
andartifact shasum
#1584 (@pda) - Improve help/usage/errors for
buildkite-agent artifact shasum
#1581 (@pda) - Make the agent look for work immediately after completing a job, rather than waiting the ping interval #1567 (@extemporalgenome)
- Update github.com/aws/aws-sdk-go to the latest v1 release #1573 (@yob)
- Enable dependabot for go.mod #1574 (@yob)
- Use build matrix feature to simplify CI pipeline #1566 (@ticky)
- Interested in using Build Matrices yourself? Check out our docs!
- Buildkite pipeline adjustments #1597 (@moskyb)
- Use
net.JoinHostPort()
to join host/port combos, rather thanfmt.Sprintf()
#1585 (@pda) - Fix minor typo in help text for `buildkite-agent pipeline upload #1595 (@moskyb)
- Add option to skip updating the mirror when using git mirrors. Useful when git is mounted from an external volume, NFS mount etc #1552 (@fatmcgav)
- Use the more secure SHA256 hashing algorithm alongside SHA1 when working with artifacts #1582 #1583 #1584 (@pda)
- When creating directories, make them only accessible by current user and group #1580 (@pda)
v3.34.1 (2022-03-23)
- Make secret value rejection on pipeline upload optional. This undoes a breaking change accidentally included in v3.34.0 #1589 (@moskyb)
v3.34.0 (2022-03-01)
- Retry 500 responses when batch creating artifacts #1568 (moskyb)
- Report OS versions when running on AIX and Solaris #1559 (yob)
- Support multiple commands on Windows #1543 (keithduncan)
- Allow
BUILDKITE_S3_DEFAULT_REGION
to be used for unconditional bucket region #1535 (keithduncan)
- Go version upgraded from 1.16 to 1.17 #1557 #1549
- Remove the CentOS (end-of-life) docker image #1561 (tessereth)
- Plugin
git clone
is retried up to 3 times #1539 (pzeballos) - Docker image alpine upgraded from 3.14.2 to 3.15.0 #1541
- Lock down file permissions on windows #1562 (tessereth)
- Reject pipeline uploads containing redacted vars #1523 (keithduncan)
v3.33.3 (2021-09-29)
- Fix erroneous working directory change for hooks that early exit #1520
v3.33.2 (2021-09-29)
- Non backwards compatible change to artifact download path handling #1518
v3.33.1 (2021-09-28)
- A crash in
buildkite-agent bootstrap
when command hooks early exit #1516
v3.33.0 (2021-09-27)
- Support for
unset
environment variables in Job Lifecycle Hooks #1488
- Remove retry handling when deleting annotations that are already deleted #1507 (@lox)
- Alpine base image from 3.14.0 to 3.14.2 #1499
- Support for trailing slash path behaviour in artifact download #1504 (@jonathan-brand)
v3.32.3 (2021-09-01)
- PowerShell hooks on Windows #1497
v3.32.2 (2021-08-31)
- Improved error logging around AWS Credentials #1490
- Logging to the artifact upload command to say where artifacts are being sent #1486
- Support for cross-region artifact buckets #1495
- artifact_paths failures no longer mask a command error #1487
- Failed plug-in checkouts using the default branch instead of the requested version #1493
- Missing quote in the PowerShell hook wrapper #1494
v3.32.1 (2021-08-06)
v3.32.0 (2021-07-30)
- A new pre-bootstrap hook which can accept or reject jobs before environment variables are loaded #1456
ppc64
andppc64le
architecture binaries to the DEB and RPM packages #1474 #1473 (staticfloat)- Use text/yaml mime type for .yml and .yaml artifacts #1470
- Add BUILDKITE_BIN_PATH to end, not start, of PATH #1465 (DavidSpickett)
v3.31.0 (2021-07-02)
- Output secret redaction is now on by default #1452
- Improved CLI docs for
buildkite-agent artifact download
#1446
- Build using golang 1.16.5 #1460
v3.30.0 (2021-05-28)
- Send queue metrics to Datadog when job received #1442 (keithduncan)
- Add flag to send Datadog Metrics as Distributions #1433 (amukherjeetwilio)
- Ubuntu 18.04 based Docker image #1441 (keithduncan)
- Build binaries for
netbsd
ands390x
#1432, #1421 (yob) - Add
wait-for-ec2-meta-data-timeout
config variable #1425 (OliverKoo)
- Build using golang 1.16.4 #1429
- Replace kr/pty with creack/pty and upgrade from 1.1.2 to 1.1.12 #1431 (ibuclaw)
- Trim trailing slash from
buildkite-agent artifact upload
when using custom S3 bucket paths #1427 (shevaun) - Use /usr/pkg/bin/bash as default shell on NetBSD #1430 (ibuclaw)
v3.29.0 (2021-04-21)
- Support mips64le architecture target. #1379 (houfangdong)
- Search the path for bash when running bootstrap scripts #1404 (yob)
- Output-redactor: redact shell logger, including changed env vars #1401 (pda)
- Add *_ACCESS_KEY & *_SECRET_KEY to default redactor-var #1405 (pda)
- Build with Golang 1.16.3 #1412 (dependabot[bot])
- Update Buildkite CLI release from 1.0.0 to 1.2.0 #1403 (yob)
- Avoid occasional failure to run jobs when working directory is missing #1402 (yob)
- Avoid a rare panic when running
buildkite-agent pipeline upload
#1406 (yob)
- collect instance-life-cycle as a default tag on EC2 instances #1374 yob)
- Expose plugin config in two new instance variables,
BUILDKITE_PLUGIN_NAME
andBUILDKITE_PLUGIN_CONFIGURATION
#1382 moensch - Add
buildkite-agent annotation remove
command #1364 ticky - Allow customizing the signal bootstrap sends to processes on cancel #1390 brentleyjones
- Fixed --no-pty flag [#1394][buildkite#1394] pda
- Skipped due to a versioning error
- Add support for agent tracing using Datadog APM #1273 (goodspark, Sam Schlegel)
- Improvements to ARM64 support (Apple Silicon/M1) #1346, #1354, #1343 (ticky)
- Add a Linux ppc64 build to the pipeline #1362 (ticky)
- Agent can now upload artifacts using AssumedRoles using
BUILDKITE_S3_SESSION_TOKEN
#1359 (grahamc) - Agent name
%spawn
interpolation to deprecate/replace%n
#1377 (ticky)
- Compile the darwin/arm64 binary using go 1.16rc1 #1352 (yob) #1369 (chloeruka)
- Use Docker CLI packages, update Docker Compose, and update centos to 8.x #1351 (RemcodM)
v3.26.0 (2020-12-03)
- Compile an experimental native executable for Apple Silicon #1339 (yob)
- Using a pre-release version of go, we'll switch to compiling with go 1.16 once it's released
- Install script: use the arm64 binary for aarch64 machines #1340 (gc-plp)
- Build with golang 1.15 #1334 (yob)
- Bump alpine docker image from alpine 3.8 to 3.12 #1333 (yob)
- Upgrade docker ubuntu to 20.04 focal #1312 (sj26)
v3.25.0 (2020-10-21)
- Add --mirror flag by default for mirror clones #1328 (chrislloyd)
- Add an agent-wide shutdown hook #1275 (goodspark) #1322 (pda)
- Improve windows telemetry so that we report the version accurately in-platform #1330 (yob) #1316 (yob)
- Ensure no orphaned processes when Windows jobs complete #1329 (yob)
- Log error messages when canceling a running job fails #1317 (yob)
- gitCheckout() validates branch, plus unit tests #1315 (pda)
- gitFetch() terminates options with -- before repo/refspecs #1314 (pda)
v3.24.0 (2020-09-29)
- Fix build script #1300 (goodspark)
- Fix typos #1297 (JuanitoFatas)
- Fix flaky tests: experiments and parallel tests don't mix #1295 (pda)
- artifact_uploader_test fixed for Windows. #1288 (pda)
- Windows integration tests: git file path quirk fix #1291 (pda)
- git-mirrors: set BUILDKITE_REPO_MIRROR=/path/to/mirror/repo #1311 (pda)
- Truncate BUILDKITE_MESSAGE to 64 KiB #1307 (pda)
- CI: windows tests on queue=buildkite-agent-windows without Docker #1294 (pda)
- buildkite:git:commit meta-data via stdin; avoid Argument List Too Long #1302 (pda)
- Expand the CLI test step #1293 (ticky)
- Improve Apple Silicon Mac support #1289 (ticky)
- update github.com/urfave/cli to the latest v1 release #1287 (yob)
v3.23.1 (2020-09-09)
v3.23.0 (2020-09-04)
- New artifact search subcommand #1278 (chloeruka)
- Add sidecar agent suitable for being shared via volume in ECS or Kubernetes #1218 (keithduncan) #1263 (yob)
- We now fetch amd64 binaries on Apple Silicon Macs in anticipation of new macOS ARM computers #1237 (ticky)
- Opt-in experimental
resolve-commit-after-checkout
flag to resolveBUILDKITE_COMMIT
refs (for example, "HEAD") to a commit hash #1256 (jayco) - Experimental: Build & publish RPM ARM64 package for aarch64 #1243 (chloeruka) #1241 (chloeruka)
- Stop building i386 for darwin after 14 years of amd64 Mac hardware #1238 (pda)
- Updated github.com/urfave/cli to v2 - this is the CLI framework we use for agent commands. #1233 (yob) #1250 (yob)
- Send the reported system and machine names when fetching latest release #1240 (ticky)
- Bump build environment from go 1.14.2 to 1.14.7 #1235 (yob) #1262 (yob)
- Update aws-sdk-go to 1.32.10 #1234 (yob)
git-mirrors
experiment now only fetches branch instead of a full remote update #1112 (lox)- Hooks can introduce empty environment variables #1232 (pda)
- ArtifactUploader now deduplicates upload file paths #1268 (pda)
- Added additional logging to artifact uploads #1266 (yob) #1265 (denbeigh2000) #1255 (yob)
- Fail faster when uploading an artifact > 5Gb to unsupported destinations #1264 (yob)
- Job should now reliably fail when process.Run() -> err #1261 (sj26)
- Fix checkout failure when there is a file called HEAD in the repository root #1223 (zhenyavinogradov) #1260 (pda)
- Enable
BUILDKITE_AGENT_DEBUG_HTTP
in jobs if it's enabled in the agent process #1251 (yob) - Avoid passing nils to Printf() during HTTP Debug mode #1252 (yob)
- Allow
BUILDKITE_CLEAN_CHECKOUT
to be set via hooks #1242 (niceking) - Add optional brackets to file arg documentation #1276 (harrietgrace)
- Reword artifact shasum documentation #1229 (vineetgopal)
- Provide example dogstatsd integration options #1219 (GaryPWhite)
- submit basic OS info when registering from a BSD system #1239 (yob)
- Various typo fixes and light refactors #1277 (chloeruka) #1271 (pda) #1244 (pda) #1224 (plaindocs)
v3.22.1 (2020-06-18)
- Wrap calls for GCP metadata in a retry #1230 (jayco)
- Accept
--experiment
flags in all buildkite-agent subcommands #1220 (ticky) - buildkite/interpolate updated; ability to use numeric default #1217 (pda)
v3.22.0 (2020-05-15)
- Experiment:
normalised-upload-paths
Normalise upload path to Unix/URI form on Windows #1211 (@ticky) - Improve some outputs for error timers #1212 (@ticky)
v3.21.1 (2020-05-05)
- Rebuild with golang 1.14.2 to fix panic on some linux kernels #1213 (@zifnab06)
v3.21.0 (2020-05-05)
- Add a retry for errors during artifact search #1210 (@lox)
- Fix checkout dir missing and hooks failing after failed checkout retries #1192 (@sj26)
- Bump golang build version to 1.14 #1197 (@yob)
- Added 'spawn=1' with to all .cfg templates #1175 (@drnic)
- Send more signal information back to Buildkite #899 (@lox)
- Updated artifact --help documentation #1183 (@pda)
- Remove vendor in favor of go modules #1117 (@lox)
- Update crypto #1194 (@gavinelder)
v3.20.0 (2020-02-10)
- Multiple plugins can provide checkout & command hooks #1161 (@pda)
v3.19.0 (2020-01-30)
- Fix plugin execution being skipped with duplicate hook warning #1156 (@toolmantim)
- minor changes #1151 #1154 #1149
v3.18.0 (2020-01-21)
- Hooks can be written in PowerShell #1122 (@pdemirdjian)
- Ignore multiple checkout plugin hooks #1135 (@toolmantim)
- clicommand/annotate: demote success log from Info to Debug #1141 (@pda)
- Fix AgentPool to disconnect if AgentWorker.Start fails #1146 (@keithduncan)
- Fix run-parts usage for CentOS docker entrypoint #1139 (@moensch)
v3.17.0 (2019-12-11)
- CentOS 7.x Docker image #1137 (@moensch)
- Added --acquire-job for optionally accepting a specific job #1138 (@keithpitt)
- Add filter to remove passwords, etc from job output #1109 (@dbaggerman)
- Allow fetching arbitrary tag=suffix pairs from GCP/EC2 meta-data #1067 (@plasticine)
- Propagate signals in intermediate bash shells #1116 (@lox)
- Detect ansi clear lines and add ansi timestamps in ansi-timestamps experiments #1128 (@lox)
- Added v3 for better go module support #1115 (@sayboras)
- Convert windows paths to unix ones on artifact download #1113 (@lox)
v3.16.0 (2019-10-14)
- Add ANSI timestamp output experiment #1103 (@lox)
- Avoid destroying the checkout on specific git errors #1104 (@lox)
v3.15.2 (2019-10-10)
- Support GS credentials via BUILDKITE_GS_APPLICATION_CREDENTIALS #1093 (@GaryPWhite)
- Add --include-retried-jobs to artifact download/shasum #1101 (@toolmantim)
v3.15.1 (2019-09-30)
- Fix a race condition that causes panics on job accept #1095 (@lox)
v3.15.0 (2019-09-17)
- Let the agent serve a status page via HTTP. #1066 (@philwo)
- Only execute the "command" hook once. #1055 (@philwo)
- Fix goroutine leak and memory leak after job finishes #1084 (@lox)
- Allow gs_downloader to use GS_APPLICATION_CREDENTIALS #1086 (@GaryPWhite)
- Updates to
step update
and addedstep get
#1083 (@keithpitt)
v3.14.0 (2019-08-16)
- Fix progress group id in debug output #1074 (@lox)
- Avoid os.Exit in pipeline upload command #1070 (@lox)
- Reword the cancel-grace-timeout config option #1071 (@toolmantim)
- Correctly log last successful heartbeat time. #1065 (@philwo)
- Add a test that BUILDKITE_GIT_SUBMODULES is handled #1054 (@lox)
- Added feature to enable encryption at rest for artifacts in S3. #1072 (@wolfeidau)
- If commit is HEAD, always use FETCH_HEAD in agent checkout #1064 (@matthewd)
- Updated
--help
output in the README and include more stuff in the "Development" section #1061 (@keithpitt) - Allow signal agent sends to bootstrap on cancel to be customized #1041 (@lox)
- buildkite/pipeline.yaml etc in pipeline upload default search #1051 (@pda)
- Move plugin tests to table-driven tests #1048 (@lox)
v3.13.2 (2019-07-20)
- Fix panic on incorrect token #1046 (@lox)
- Add artifactory vars to artifact upload --help output #1042 (@harrietgrace)
- Fix buildkite-agent upload with absolute path (regression in v3.11.1) #1044 (@petercgrant)
- Don't show vendored plugin header if none are present #984 (@lox)
v3.13.1 (2019-07-08)
- Add meta-data keys command #1039 (@lox)
- Fix bug where file upload hangs and add a test #1036 (@lox)
- Fix memory leak in artifact uploading with FormUploader #1033 (@lox)
- Add profile option to all cli commands #1032 (@lox)
v3.13.0 (2019-06-12)
- Quote command to git submodule foreach to fix error with git 2.20.0 #1029 (@lox)
- Refactor api package to an interface #1020 (@lox)
v3.12.0 (2019-05-22)
- Add checksums for artifactory uploaded artifacts #961 (@lox)
- Add BUILDKITE_GCS_PATH_PREFIX for the path of GCS artifacts #1000 (@DoomGerbil)
- Don't force set the executable bit on scripts to be set #1001 (@kuroneko)
- Deprecate disconnect-after-job-timeout #1009 (@lox)
- Update Ubuntu docker image to docker-compose 1.24 #1005 (@pecigonzalo)
- Update Artifactory path parsing to support windows #1013 (@GaryPWhite)
- Refactor: Move signal handling out of AgentPool and into start command #1012 (@lox)
- Refactor: Simplify how we handle idle timeouts #1010 (@lox)
- Remove api socket proxy experiment #1019 (@lox)
- Remove msgpack experiment #1015 (@lox)
v3.11.5 (2019-05-13)
- Fix broken signal handling #1011 (@lox)
- Update Ubuntu docker image to docker-compose 1.24 #1005 (@pecigonzalo)
v3.11.4 (2019-05-08)
- Fix bug where disconnect-after-idle stopped working #1004 (@lox)
v3.11.3 (2019-05-08)
- Prevent host tags from overwriting aws/gcp tags #1002 (@lox)
- Replace signalwatcher package with os/signal #998 (@lox)
- Only trigger idle disconnect if all workers are idle #999 (@lox)
v3.11.2 (2019-04-20)
- Send logging to stderr again #996 (@lox)
v3.11.1 (2019-04-20)
- Ensure heartbeats run until agent is stopped #992 (@lox)
- Revert "Refactor AgentConfiguration into JobRunnerConfig" to fix error accepting jobs#993 (@lox)
v3.11.0 (2019-04-16)
- Allow applying ec2 tags when config tags are empty #990 (@vanstee)
- Upload Artifactory artifacts to correct path #989 (@GaryPWhite)
- Combine apache and nginx sources for mime types. #988 (@blueimp)
- Support log output in json #966 (@lox)
- Add git-fetch-flags #957 (@lox)
v3.10.4 (2019-04-05)
- Fix bug where logger was defaulting to debug #974 (@lox)
- Fix race condition between stop/cancel and register #971 (@lox)
- Fix incorrect artifactory upload url #977 (@GaryPWhite)
v3.10.3 (2019-04-02)
- Fix bug where ec2 tags aren't added correctly #970 (@lox)
- Fix bug where host tags overwrite other tags #969 (@lox)
v3.10.2 (2019-03-31)
- Update artifatory uploader to use the correct PUT url #960 (@GaryPWhite)
- Refactor: Move logger.Logger to an interface #962 (@lox)
- Refactor: Move AgentWorker construction and registration out of AgentPool #956 (@lox)
v3.10.1 (2019-03-24)
- Fix long urls for artifactory integration #955 (@GaryPWhite)
v3.10.0 (2019-03-12)
- Experimental shared repositories (git mirrors) between checkouts #936 (@lox)
- Support disconnecting agent after it's been idle for a certain time period #932 (@lox)
- Restart agents on SIGPIPE from systemd in systemd units #945 (@lox)
v3.9.1 (2019-03-06)
- Allow the Agent API to reject header times #938 (@sj26)
- Increase pipeline upload retries on 5xx errors #937 (@toolmantim)
- Pass experiment environment vars to bootstrap #933 (@lox)
v3.9.0 (2019-02-23)
- Artifactory artifact support #924 (@GaryPWhite)
- Add a
--tag-from-gcp-labels
for loading agent tags from GCP #930 (@conorgil) - Add a
--content-type
toartifact upload
to allow specifying a content type #912 (@lox) - Filter env used for command config out of environment #908 (@lox)
- If BUILDKITE_REPO is empty, skip checkout #909 (@lox)
- Terminate bootstrap with unhandled signal after cancel #890 (@lox)
- Fix a race condition in cancellation #928 (@lox)
- Make sure checkout is removed on failure #916 (@lox)
- Ensure TempDir exists to avoid errors on windows #915 (@lox)
- Flush output immediately if timestamp-lines not on #931 (@lox)
v3.8.4 (2019-01-22)
- Fix and test another seg fault in the artifact searcher #901 (@lox)
- Fix a seg-fault in the artifact uploader #900 (@lox)
v3.8.3 (2019-01-18)
- Retry forever to upload job chunks #898 (@keithpitt)
- Resolve ssh hostname aliases before running ssh-keyscan #889 (@ticky)
v3.8.2 (2019-01-11)
- Fix another segfault in artifact download #893 (@lox)
v3.8.1 (2019-01-11)
- Fixed two segfaults caused by missing loggers #892 (@lox)
v3.8.0 (2019-01-10)
- Support absolute paths on Windows for config #881 (@petemounce)
- Show log output colors on Windows 10+ #885 (@lox)
- Better cancel signal handling and error messages in output #860 (@lox)
- Use windows console groups for process management #879 (@lox)
- Support vendored plugins #878 (@lox)
- Show agent name in logger output #880 (@lox)
- Change git-clean-flags to cleanup submodules #875 (@lox)
v3.7.0 (2018-12-18)
- Fixed bug where submodules hosts weren't ssh keyscanned correctly #876 (@lox)
- Add a default port to metrics-datadog-host #874 (@lox)
- Hooks can now modify $BUILDKITE_REPO before checkout to change the git clone or fetch address #877 (@sj26)
- Add a configurable cancel-grace-period #700 (@lox)
- Resolve BUILDKITE_COMMIT before pipeline upload #871 (@lox)
v3.6.1 (2018-12-13)
- Add another search path for config file on Windows #867 (@petemounce)
- Exclude headers from timestamp-lines output #870 (@lox)
v3.6.0 (2018-12-04)
- Fix bug that caused an extra log chunk to be sent in some cases #845 (@idledaemon)
- Don't retry checkout on build cancel #863 (@lox)
- Add buildkite-agent.cfg to docker images #847 (@lox)
- Experimental
--spawn
option to spawn multiple parallel agents #590 (@lox) - Update: This feature is now super stable. - Add a linux/ppc64le build target #859 (@lox)
- Basic metrics collection for Datadog #832 (@lox)
- Added a
job update
command to make changes to a job #833 (@keithpitt) - Remove the checkout dir if the checkout phase fails #812 (@lox)
- Add tests around gracefully killing processes #862 (@lox)
- Removes process callbacks and moves them to job runner #856 (@lox)
- Use a channel to monitor whether process is killed #855 (@lox)
- Move to golang 1.11 #839 (@lox)
- Add a flag to disable http2 in the start command #851 (@lox)
- Use transparent for golang http2 transport #849 (@lox)
v3.5.4 (2018-10-24)
- Prevent docker image from crashing with missing config error #847 (@lox)
v3.5.3 (2018-10-24)
- Update to alpine to 3.8 in docker image #842 (@lox)
- Set BUILDKITE_AGENT_CONFIG in docker images to /buildkite #834 (@blakestoddard)
- Fix agent panics on ARM architecture #831 (@jhedev)
v3.5.2 (2018-10-09)
- Fix issue where pipelines with a top-level array of steps failed #830 (@lox)
v3.5.1 (2018-10-08)
- Ensure plugin directory exists, otherwise checkout lock thrashes #828 (@lox)
v3.5.0 (2018-10-08)
- Add plugin locking before checkout #827 (@lox)
- Ensure pipeline parser maintains map order in output #824 (@lox)
- Update aws sdk #818 (@sj26)
- Fix boostrap typo #814 (@ChefAustin)
annotate
takes body as an arg, or reads from a pipe #813 (@sj26)- Respect pre-set BUILDKITE_BUILD_CHECKOUT_PATH #806 (@lox)
- Add time since last successful heartbeat/ping #810 (@lox)
- Updating launchd templates to only restart on error #804 (@lox)
- Allow more time for systemd graceful stop #819 (@lox)
v3.4.0 (2018-07-18)
- Add basic plugin definition parsing #748 (@lox)
- Allow specifying which phases bootstrap should execute #799 (@lox)
- Warn in bootstrap when protected env are used #796 (@lox)
- Cancellation on windows kills bootstrap subprocesses #795 (@amitsaha)
v3.3.0 (2018-07-11)
- Allow tags from the host to be automatically added with --add-host-tags #791 (@lox)
- Allow --no-plugins=false to force plugins on #790 (@lox)
v3.2.1 (2018-06-28)
- Remove the checkout dir when git clean fails #786 (@lox)
- Add a --dry-run to pipeline upload that dumps json #781 (@lox)
- Support PTY under OpenBSD #785 (@derekmarcotte) #787 (@derekmarcotte)
- Experiments docs and experiment cleanup #771 (@lox)
v3.2.0 (2018-05-25)
- Propagate exit code > 1 out of failing hooks #768 (@lox)
- Fix broken list parsing in cli arguments --tags and --experiments #772 (@lox)
- Add a virtual provides to the RPM package #737 (@jnewbigin)
- Clean up docker image building #755 (@lox)
- Don't trim whitespace from the annotation body #766 (@petemounce)
v3.1.2 (2018-05-10)
- Experiment: Pass jobs an authenticated unix socket rather than an access token #759 (@lox)
- Remove buildkite:git:branch meta-data #753 (@sj26)
- Set TERM and PWD for commands that get executed in shell #751 (@lox)
- Avoid pausing after job has finished #764 (@sj26)
v3.1.1 (2018-05-02)
- Fix stdin detection for output redirection #750 (@lox)
v3.1.0 (2018-05-01)
- Add ubuntu docker image #749 (@lox)
- Support
--no-interpolation
option inpipeline upload
#733 (@lox) - Bump our Docker image base to alpine v3.7 #745 (@sj26)
- Better error for multiple file args to artifact upload #740 (@toolmantim)
v3.0.1 (2018-04-17)
- Don't set Content-Encoding on s3 upload #732
v3.0.0 (2018-04-03)
No changes
v3.0-beta.44 (2018-04-03)
- Normalize the
bootstrap-script
command using a newcommandpath
normalization #714 (@keithpitt)
- Install windows binary to c:\buildkite-agent\bin #713 (@lox)
v3.0-beta.43 (2018-04-03)
- Prettier bootstrap output 💅🏻 #708 (@lox)
- Only run git submodule operations if there is a .gitmodules #704 (@lox)
- Add an agent config for no-local-hooks #707 (@lox)
- Build docker image as part of agent pipeline #701 (@lox)
- Windows install script #699 (@lox)
- Expose no-git-submodules config and arg to start #698 (@lox)
v3.0-beta.42 (2018-03-20)
- Preserve types in pipeline.yml #696 (@lox)
v3.0-beta.41 (2018-03-16)
- Retry failed checkouts #670 (@lox)
- Write temporary batch scripts for Windows/CMD.EXE #692 (@lox)
- Enabling
no-command-eval
will also disable use of plugins #690 (@keithpitt) - Support plugins that have a
null
config #691 (@keithpitt) - Handle upgrading bootstrap-path from old 2.x shell script #580 (@lox)
- Show plugin commit if it's already installed #685 (@keithpitt)
- Handle windows paths in all usage of shellwords parsing #686 (@lox)
- Make NormalizeFilePath handle empty strings and windows #688 (@lox)
- Retry ssh-keyscans on error or blank output #687 (@keithpitt)
- Quote and escape env-file values #682 (@lox)
- Prevent incorrect corrupt git checkout detection on fresh checkout dir creation #681 (@lox)
- Only keyscan git/ssh urls #675 (@lox)
- Fail the job when no command is provided in the default command phase #678 (@keithpitt)
- Don't look for powershell hooks since we don't support them yet #679 (@keithpitt)
- Exit when artifacts can't be found for downloading #676 (@keithpitt)
- Run scripts via the shell, rather than invoking with exec #673 (@lox)
- Rename no-automatic-ssh-fingerprint-verification to no-ssh-keyscan #671 (@lox)
- Parse pipeline.yml env block in order #668 (@lox)
- Bootstrap shouldn't panic if plugin checkout fails #672 (@lox)
v3.0-beta.40 (2018-03-07)
- Commands are no longer written to temporary script files before execution #648 (@lox)
- Support more complex types in plugin config #658 (@lox)
- Write an env-file for the bootstrap #643 (@DazWorrall)
- Allow the shell interpreter to be configured #648 (@lox)
- Fix stdin detection on windows #665 (@lox)
- Check hook scripts get written to disk without error #652 (@sj26)
v3.0-beta.39 (2018-01-31)
- Fix bug failing artifact upload glob would cause later globs to fail #620 (@lox)
- Fix race condition in process management #618 (@lox)
- Support older git versions for submodule commands #628 (@lox)
- Lots of windows fixes and tests! #630 #631 #632
- Support for Bash for Windows for plugins and hooks! #636 (@lox)
- Correct mimetypes for .log files #635 (@DazWorrall)
- Usable Content-Disposition for GCE uploaded artifacts #640 (@DazWorrall)
- Experiment for retrying checkout on failure #613 (@lox)
- Skip local hooks when BUILDKITE_NO_LOCAL_HOOKS is set #622 (@lox)
- Bootstrap shell commands output stderr now #626 (@lox)
v2.6.9 (2018-01-18)
- Implement
BUILDKITE_CLEAN_CHECKOUT
,BUILDKITE_GIT_CLONE_FLAGS
andBUILDKITE_GIT_CLEAN_FLAGS
in bootstrap.bat #610 (@solemnwarning)
- Fix unbounded memory usage in artifact uploads (#493)
v3.0-beta.38 (2018-01-10)
- Fix bug where bootstrap with pty hangs on macOS #614 (@lox)
v3.0-beta.37 (2017-12-07)
- Fixed bug where agent uploads fail if no files match #600 (@lox)
- Fixed bug where timestamps are incorrectly appended to header expansions #597
v3.0-beta.36 (2017-11-23)
- Don't retry pipeline uploads on invalid pipelines #589 (@DazWorrall)
- A vagrant box for windows testing #583 (@lox)
- Binary is build with golang 1.9.2
- Fixed bug where malformed pipelines caused infinite loop #585 (@lox)
v3.0-beta.35 (2017-11-13)
- Support nested interpolated variables #578 (@lox)
- Check for corrupt git repository before checkout #574 (@lox)
- Fix bug where non-truthy bool arguments failed silently #582 (@lox)
- Pass working directory changes between hooks #577 (@lox)
- Kill cancelled tasks with taskkill on windows #575 (@adill)
- Support hashed hosts in ssh known_hosts #579 (@lox)
v3.0-beta.34 (2017-10-19)
- Fix bug where pipeline upload doesn't get environment passed correctly #567 (@lox)
- Only show "Running hook" if one exists #566 (@lox)
- Fix segfault when using custom artifact bucket and EC2 instance role credentials #563 (@sj26)
- Fix ssh keyscan of hosts with custom ports #565 (@sj26)
v2.6.7 (2017-11-13)
- Check for corrupt git repository before checkout #556 (@lox)
- Kill cancelled tasks with taskkill on windows #571 (@adill)
v2.6.6 (2017-10-09)
- Backported new globbing library to fix "too many open files" during globbing #539 (@sj26 & @lox)
v3.0-beta.33 (2017-10-05)
- Interpolate env block before rest of pipeline.yml #552 (@lox)
- Build hanging after git checkout #558
v3.0-beta.32 (2017-09-25)
- Refactored bootstrap to be more testable / maintainable #514 #530 #536 #522 (@lox)
- Add BUILDKITE_GCS_ACCESS_HOST for GCS Host choice #532 (@jules2689)
- Prefer plugin, local, global and then default for hooks #549 (@lox)
- Integration tests for v3 #548 (@lox)
- Add docker integration tests #547 (@lox)
- Use latest golang 1.9 #541 (@lox)
- Faster globbing with go-zglob #539 (@lox)
- Consolidate Environment into env package (@lox)
- Fix bug where ssh-keygen error causes agent to block #521 (@lox)
- Pre-exit hook always fires now
v3.0-beta.31 (2017-08-14)
- Support paths in BUILDKITE_ARTIFACT_UPLOAD_DESTINATION #519 (@lox)
v3.0-beta.30 (2017-08-11)
- Agent is prompted to verify remote server authenticity when cloning submodule from unkown host #503
- Windows agent cannot find git executable (Environment variable/Path issue?) #487
- ssh-keyscan doesn't work for submodules on a different host #411
- Fix boolean plugin config parsing #508 (@toolmantim)
- Stop making hook files executable #515 (@yeungda-rea)
- Switch to yaml.v2 as the YAML parser #511 (@keithpitt)
- Add submodule remotes to known_hosts #509 (@lox)
- Added a
--timestamp-lines
option tobuildkite-agent start
that will insert RFC3339 UTC timestamps at the beginning of each log line. The timestamps are not applied to header lines. #501 - Ctrl-c twice will force kill the agent #499
- Set the content encoding on artifacts uploaded to s3 [#494] (thanks @airhorns)
- Output fetched commit sha during git fetch for pull request #505
- Migrate the aging goamz library to the latest aws-sdk #474
- 🔍 Output fetched commit sha during git fetch for pull request [#505]
- 🐞 The agent will now poll the AWS EC2 Tags API until it finds some tags to apply before continuing. In some cases, the agent will start and connect to Buildkite before the tags are available. The timeout for this polling can be configured with --wait-for-ec2-tags-timeout (which defaults to 10 seconds) #492
- 🐛 Fixed 2 Windows bugs that caused all jobs that ran through our built-in buildkite-agent bootstrap command to fail #496
- 🚀 The buildkite-agent upstart configuration will now source /etc/default/buildkite-agent before starting the agent process. This gives you an opportunity to configure the agent outside of the standard buildkite-agent.conf file
- Allow pipeline uploads when no-command-eval is true
- 🐞 Fixes to a few more edge cases when exported environment variables from hooks would include additional quotes #484
- Apt server misconfigured -
Packages
reports wrong sizes/hashes - Rewrote
export -p
parser to support multiple line env vars
- 🤦♂️ We accidentally skipped a beta version, there's no v3.0-beta.25! Doh!
- 🐛 Fixed an issue where some environment variables exported from environment hooks would have new lines appended to the end
- 🚀 Added an --append option to buildkite-agent annotate that allows you to append to the body of an existing annotation
- 🐛 Fixed an issue where exporting multi-line environment variables from a hook would truncate everything but the first line
- 🚀 New command buildkite-agent annotate that gives you the power to annotate a build page with information from your pipelines. This feature is currently experimental and the CLI command API may change before an official 3.0 release
- Added support for local and global pre-exit hooks (#466)
- Renames --meta-data to --tags (#435). --meta-data will be removed in v4, and v3 versions will now show a deprecation warning.
- Fixes multiple signals not being passed to job processes (#454)
- Adds binaries for OpenBSD (#463) and DragonflyBSD (#462)
- Adds support for local and global pre-exit hooks (#465)
- Backport #381 to stable: Retries for fetching EC2 metadata and tags. #461
- Add OpenBSD builds
- Reverted #451 as it introduced a regression. Will re-think this fix and push it out again in another release after we do some more testing
- Reverts the changes made in #448 as it seemed to introduce a regression. We'll rethink this change and push it out in another release.
- Use /bin/sh rather than /bin/bash when executing commands. This allows use in environments that don't have bash, such as Alpine Linux.
- Add plugin support for HTTP repositories with .git extensions [#447]
- Run the global environment hook before checking out plugins [#445]
- Use /bin/sh rather than /bin/bash when executing commands. This allows use in environments that don't have bash, such as Alpine Linux. (#448)
buildkite-agent start --disconnect-after-job
will run the agent, and automatically disconnect after running its first job. This has sometimes been referred to as "one shot" mode and is useful when you spin up an environment per-job and want the agent to automatically disconnect once it's finished its jobbuildkite-agent start --disconnect-after-job-timeout
is the time in seconds the agent will wait for that first job to be assigned. The default value is 120 seconds (2 minutes). If a job isn't assigned to the agent after this time, it will automatically disconnect and the agent process will stop.
- Fixes a bug where log output would get sometimes get corrupted #441
- Fixes a bug where log output would get sometimes get corrupted #441
- You can now specify a custom artifact upload destination with BUILDKITE_ARTIFACT_UPLOAD_DESTINATION #421
- git clean is now performed before and after the git checkout operation #418
- Update our version of lockfile which should fixes issues with running multiple agents on the same server #428
- Fix the start script for Debian wheezy #429
- The buildkite-agent binary is now built with Golang 1.8 #433
- buildkite-agent meta-data get now supports --default flag that allows you to return a default value instead of an error if the remote key doesn't exist #440
- buildkite-agent meta-data get now supports --default flag that allows you to return a default value instead of an error if the remote key doesn't exist #440
- 🐞 Fixed a bug where ^^^ +++ would be prefixed with a timestamp when ---timestamp-lines was enabled #438
- Added a new option --timestamp-lines option to buildkite-agent start that will insert RFC3339 UTC timestamps at the beginning of each log line. The timestamps are not applied to header lines. #430
- Go 1.8 [#433]
- Switch to govendor for dependency tracking [#432]
- Backport Google Cloud Platform meta-data to 2.3 stable agent [#431]
- "No command eval" mode now makes sure commands are inside the working directory 🔐
- Scripts which are already executable won't be chmoded 🔏
- 🐝 Fixed an edge case that causes the agent to panic and exit if more lines are read a process after it's finished
- More resilient init.d script (#406)
- Only lock if locks are used by the system
- More explicit su with --shell option
- The agent now receives its "job status interval" from the Agent API (the number of seconds between checking if its current job has been remotely canceled)
- Fixed a race condition where the agent would pick up another job to run even though it had been told to gracefully stop (PR #403 by @grosskur)
- Fixed path to ssh-keygen for Windows (PR #401 by @bendrucker)
- Fixed a race condition where the agent would pick up another job to run even though it had been told to gracefully stop (PR #403 by @grosskur)
- Refactored how environment variables are interpolated in the agent
- The buildkite-agent pipeline upload command now looks for .yaml files as well
- Support for the steps.json file has been removed
- Updated buildkite-agent bootstrap for Windows so that commands won't keep running if one of them fail (similar to Bash's set -e) behaviour #392 (thanks @essen)
- AWS EC2 meta-data tagging is now more resilient and will retry on failure (#381)
- Substring expansion works for variables in pipeline uploads, like ${BUILDKITE_COMMIT:0:7} will return the first seven characters of the commit SHA (#387)
- The buildkite-agent binary is now built with Golang 1.7 giving us support for macOS Sierra
- The agent now talks HTTP2 making calls to the Agent API that little bit faster
- The binary is a statically compiled (no longer requiring libc)
- meta-data-ec2 and meta-data-ec2-tags can now be configured using BUILDKITE_AGENT_META_DATA_EC2 and BUILDKITE_AGENT_META_DATA_EC2_TAGS environment variables
- The buildkite-agent binary is now built with Golang 1.7 giving us support for macOS Sierra
- The agent now talks HTTP2 making calls to the Agent API that little bit faster
- The binary is a statically compiled (no longer requiring libc)
- meta-data-ec2 and meta-data-ec2-tags can now be configured using BUILDKITE_AGENT_META_DATA_EC2 and BUILDKITE_AGENT_META_DATA_EC2_TAGS environment variables
- We've removed our dependency of libc for greater compatibly across *nix systems which has had a few side effects: We've had to remove support for changing the process title when an agent starts running a job. This feature has only ever been available to users running 64-bit ubuntu, and required us to have a dependency on libc. We'd like to bring this feature back in the future in a way that doesn't have us relying on libc
- The agent will now use Golangs internal DNS resolver instead of the one on your system. This probably won't effect you in any real way, unless you've setup some funky DNS settings for agent.buildkite.com
- Allow fetching meta-data from Google Cloud metadata #369 (Thanks so much @grosskur)
- Fix some compatibility with older Git versions 🕸
- Make bootstrap actually use the global command hook if it exists #365
- Support plugin array configs f989cde
- Include bootstrap in the help output 7524ffb
- Fixed a bug where we weren't stripping ANSI colours in build log headers 6611675
- Fix Content-Type for Google Cloud Storage API calls #361 (comment)
- 🔍 SSH key scanning backwards compatibility with older openssh tools
- 🔍 SSH key scanning fix after it got a little broken in 2.1.14, sorry!
- 🔍 SSH key scanning should be more resilient, whether or not you hash your known hosts file
- 🏅 Commands executed by the Bootstrap script correctly preserve positional arguments and handle interpolation better
- 🌈 ANSI color sequences are a little more resilient
- ✨ Git clean and clone flags can now be supplied in the Agent configuration file or on the command line
- 📢 Docker Compose will now be a little more verbose when the Agent is in Debug mode
- 📑 $BUILDKITE_DOCKER_COMPOSE_FILE now accepts multiple files separated by a colon (:), like $PATH
- Fixes to the bootstrap when using relative paths #228
- Fixed hook paths on Windows #331
- Fixed default path of the pipeline.yml file on Windows #342
- Fixed issues surrounding long command definitions #334
- Fixed default bootstrap-command command for Windows #344
- Added support for BUILDKITE_GIT_CLONE_FLAGS (#330) giving you the ability customise how the agent clones your repository onto your build machines. You can use this to customise the "depth" of your repository if you want faster clones BUILDKITE_GIT_CLONE_FLAGS="-v --depth 1". This option can also be configured in your buildkite-agent.cfg file using the git-clone-flags option
- BUILDKITE_GIT_CLEAN_FLAGS can now be configured in your buildkite-agent.cfg file using the git-clean-flags option (#330)
- Allow metadata value to be read from STDIN (#327). This allows you to set meta-data from files easier cat meta-data.txt | buildkite-agent meta-data set "foo"
- Fixed environment variable sanitisation #333
- BUILDKITE_GIT_CLONE_FLAGS (#326) giving you the ability customise how the agent clones your repository onto your build machines. You can use this to customise the "depth" of your repository if you want faster clones
BUILDKITE_GIT_CLONE_FLAGS="-v --depth 1"
- Allow metadata value to be read from STDIN (#327). This allows you to set meta-data from files easier
cat meta-data.txt | buildkite-agent meta-data set "foo"
- Improved error logging when failing to capture the exit status for a job (#325)
- Improved error logging when failing to capture the exit status for a job (#325)
- A new --meta-data-ec2 command line flag and config option for populating agent meta-data from EC2 information (#320)
- Binaries are now published to download.buildkite.com (#318)
- New version number: v3.0-beta.1. There will be no 2.2 (the previous beta release)
- Outputs the build directory in the build log (#317)
- Don't output the env variable values that are set from hooks (#316)
- Sign packages with SHA512 (#308)
- A new --meta-data-ec2 command line flag and config option for populating agent meta-data from EC2 information (#314)
- Binaries are now published to download.buildkite.com (#318)
- Amazon Linux & CentOS 6 packages now start and shutdown the agent gracefully (#306) - thanks @jnewbigin
- Build headers now work even if ANSI escape codes are applied (#279)
- Amazon Linux & CentOS 6 packages now start and shutdown the agent gracefully (#290 #305) - thanks @jnewbigin
- Docker Compose 1.7.x support, including docker network removal during cleanup (#300)
- Docker Compose builds now specify --pull, so base images will always attempted to be pulled (#300)
- Docker Compose command group is now expanded by default (#300)
- Docker Compose builds now only build the specified service’s image, not all images. If you want to build all set the environment variable BUILDKITE_DOCKER_COMPOSE_BUILD_ALL=true (#297)
- Step commands are now run with bash’s -o pipefail option, preventing silent failures (#301)
- BUILDKITE_DOCKER_COMPOSE_LEAVE_VOLUMES undefined errors in bootstrap.sh have been fixed (#283)
- Build headers now work even if ANSI escape codes are applied
- Git clean brokenness has been fixed in the Go-based bootstrap (#278)
- BUILDKITE_DOCKER_COMPOSE_LEAVE_VOLUMES (#274) which allows you to keep the docker-compose volumes once a job has been run
- Environment variable substitution in pipeline files (#246)
- Google Cloud Storage for artifacts (#207)
- BUILDKITE_DOCKER_COMPOSE_LEAVE_VOLUMES (#252) which allows you to keep the docker-compose volumes once a job has been run
- BUILDKITE_S3_ACCESS_URL (#261) allowing you set your own host for build artifact links. This means you can set up your own proxy/web host that sits in front of your private S3 artifact bucket, and click directly through to them from Buildkite.
- BUILDKITE_GIT_CLEAN_FLAGS (#270) allowing you to ensure all builds have completely clean checkouts using an environment hook with export BUILDKITE_GIT_CLEAN_FLAGS=-fqdx
- Various new ARM builds (#258) allowing you to run the agent on services such as Scaleway
- Increased many of the HTTP timeouts to ease the stampede on the agent endpoint (#259)
- Corrected bash escaping errors which could cause problems for installs to non-standard paths (#262)
- Made HTTPS the default for all artifact upload URLs (#265)
- Added Buildkite's bin dir to the end, not the start, of $PATH (#267)
- Ensured that multiple commands separated by newlines fail as soon as a command fails (#272)
- Added support for BUILDKITE_S3_ACCESS_URL (#247) allowing you set your own host for build artifact links. This means you can set up your own proxy/web host that sits in front of your private S3 artifact bucket, and click directly through to them from Buildkite.
- Added support for BUILDKITE_GIT_CLEAN_FLAGS (#271) allowing you to ensure all builds have completely clean checkouts using an environment hook with export BUILDKITE_GIT_CLEAN_FLAGS=-fqdx
- Added support for various new ARM builds (#263) allowing you to run the agent on services such as Scaleway
- Updated to Golang 1.6 (26d37c5)
- Increased many of the HTTP timeouts to ease the stampede on the agent endpoint (#260)
- Corrected bash escaping errors which could cause problems for installs to non-standard paths (#266)
- Made HTTPS the default for all artifact upload URLs (#269)
- Added Buildkite's bin dir to the end, not the start, of $PATH (#268)
- Ensured that multiple commands separated by newlines fail as soon as a command fails (#273)
- The agent is now statically linked to glibc, which means support for Debian 7 and friends (#255)
- git fetch --tags doesn't fetch branches in old git (#250)
- Use TrimPrefix instead of TrimLeft (#203)
- Update launchd templates to use .buildkite-agent dir (#212)
- Link to docker agent in README (#225)
- Send desired signal instead of always SIGTERM (#215)
- Bootstrap script fetch logic tweaks (#243)
- Avoid upstart on Amazon Linux (#244)
- Added some tests to the S3Downloader
- yum.buildkite.com now shows all previous versions of the agent
- Fixed problem with bootstrap.sh not resetting git checkouts correctly
- Removed unused functions from the bootstrap.sh file that was causing garbage output in builds
- FreeBSD 386 machines are now supported
- Fixed issue with starting the bootstrap.sh file on linux systems fork/exec error
- Added support for FreeBSD - see instructions here: https://gist.github.com/keithpitt/61acb5700f75b078f199
- Only fetch the required branch + commit when running a build
- Added support for a repository command hook
- Change the git origin when a repository URL changes
- Improved mime type coverage for artefacts
- Added support for pipeline.yml files, starting to deprecate steps.json
- Show the UUID in the log output when uploading artifacts
- Added graceful shutdown #176
- Fixed header time and artifact race conditions
- OS information is now correctly collected on Windows
- Optimised artifact state updating
- Dump artifact upload responses when --debug-http is used
- Debian packages now include the debian_version property 📦
- Artifacts are uploaded faster! We've optimised our Agent API payloads to have a smaller footprint meaning you can uploading more artifacts faster! 🚗💨
- You can now download artifacts from private S3 buckets using buildkite-artifact download ☁️
- The agent will now change its process title on linux/amd64 machines to report its current status:
buildkite-agent v2.1 (my-agent-name) [job a4f-a4fa4-af4a34f-af4]
- Changed the format that --version returns buildkite-agent version 2.0.4, build 456 🔍
- Added post-artifact global and local hooks 🎣
- Debian package for ARM processors
- Include the build number in the --version call
- The binary name has changed from buildbox to buildkite-agent
- The default install location has changed from ~/.buildbox to ~/.buildkite-agent (although each installer may install in different locations)
- Agents can be configured with a config file
- Agents register themselves with a organization-wide token, you no longer need to create them via the web
- Agents now have hooks support and there should be no reason to customise the bootstrap.sh file
- There is built-in support for containerizing builds with Docker and Docker Compose
- Windows support
- There are installer packages available for most systems
- Agents now have meta-data
- Build steps select agents using key/value patterns rather than explicit agent selection
- Automatic ssh fingerprint verification
- Ability to specify commands such as rake and make instead of a path to a script
- Agent meta data can be imported from EC2 tags
- You can set a priority for the agent
- The agent now works better under flakey internet connections by retrying certain API calls
- A new command buildkite-agent artifact shasum that allows you to download the shasum of a previously uploaded artifact
- Various bug fixes and performance enhancements
- Support for storing build pipelines in repositories