Skip to content

Releases: earthly/earthly

v0.8.3

31 Jan 19:00
7091696
Compare
Choose a tag to compare

Fixed

  • EARTHLY_GIT_REFS was incorrectly returning all references which contained the commit rather than pointed to the current commit. This also increases performance of looking up the branches. #3752
  • Fixes an issue where earthly account login --token was leading to partially created auth config files. 3761

Additional Info

  • This release includes changes to buildkit

v0.8.2

25 Jan 20:08
f991e7f
Compare
Choose a tag to compare

Added

  • Added a --force flag to the satellite update command, which forces a satellite to sleep before starting the update process. This may forcibly kill ongoing builds currently running on the satellite.

Changed

  • Changed the default buildkit cache size to be adaptively set to 20GB, which is then clamped between the range of 10%-55% of the disk size.
    This logic can expressed as min(55%, max(10%, 20GB)).
  • Satellites are now put to sleep before updating via earthly sat update <satellite-name>.

Fixed

  • Fixed an intermittent issue with the registry proxy support container failing immediately on Mac. 3740
  • Fixed a problem with parsing empty results when cleaning up old registry proxy support containers on Mac.
  • Fixed a case where a suggested command would incorrectly contain both --interative and --ci. 3746
  • Disabled the registry proxy server when Earthly is run from within a container. 3736

Additional Info

  • This release has no changes to buildkit

v0.8.1

23 Jan 19:58
7a66901
Compare
Choose a tag to compare

Added

  • Added a new --disable-remote-registry-proxy cli flag, which can be used to disable the remote registry proxy, which is used by earthly when performing a SAVE IMAGE
    command with a satellite / remote buildkit instance. This will cause earthly to use the slower tar-based loading of docker images. #3736
  • A new warning if Earthly is configured with a cache size less than 10GB; running with a small cache size may lead to unexpected cache misses.

Additional Info

  • This release has no changes to buildkit

v0.8.0

22 Jan 19:03
c23e273
Compare
Choose a tag to compare

This version promotes a number of features that have been previously in Experimental and Beta status. To make use of
the features in this version you need to declare VERSION 0.8 at the top of your Earthfile.

Migrating from 0.7

If you are using Earthly 0.7, follow the following steps to migrate:

  1. If you are still using VERSION 0.5, upgrade those Earthfiles to VERSION 0.6 or VERSION 0.7.
  2. Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both VERSION 0.6 and VERSION 0.7 Earthfiles (but VERSION 0.5 support has been dropped).
  3. Once everyone is using the Earthly 0.8 binary, upgrade your Earthfiles one by one to VERSION 0.8. It is ok to have a mix of VERSION 0.6, VERSION 0.7 and VERSION 0.8 Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating from VERSION 0.7 to VERSION 0.8.

This process helps manage the backward breaking changes with minimal disruption.

Summary

Declaring VERSION 0.8 is equivalent to

VERSION \
  --arg-scope-and-set \
  --cache-persist-option \
  --git-refs \
  --global-cache \
  --no-network \
  --pass-args \
  --use-docker-ignore \
  --use-function-keyword \
  --use-visited-upfront-hash-collection \
  0.7

For more information on the individual Earthfile feature flags see the Earthfile version-specific features page.

It should be noted that some of these features break backwards compatibility. See below.

Changed

  • Redeclaring an ARG in the same scope as a previous declaration is now an error.
  • ARGs inside of targets will no longer have their default value overridden by global ARGs.
  • Declaring a CACHE ... in a target will no longer be copied to children targets when referenced via a FROM +...; to persist the contents of the cache, it is now required to use the CACHE --persist ... flag.
  • The COMMAND keyword has been renamed to FUNCTION.

Added

  • LET - Allows declaring a local variable. This command works similarly to ARG except that it cannot be overridden from the CLI. LET variables are allowed to shadow ARG variables, which allows you to promote an ARG to a local variable so that it may be used with SET.
  • SET - a new command that allows changing the value of variables declared with LET.
  • Outputting images from a remote runner has improved performance as it no longer transfers layers that are already present locally.
  • Auto-skip has been promoted to beta status.
  • RUN --network=none allows running a command without network access.
  • .dockerignore files are now used in FROM DOCKERFILE targets.
  • DO --pass-args, BUILD --pass-args etc allow passing all build arguments to external Earthfiles.
  • CACHE --id=... and RUN --mount type=cache,id=... allows setting a custom cache mount ID, thus allowing sharing cache mounts globally across different targets.
  • New satellite sizes: 2xlarge, 3xlarge, 4xlarge
  • New experimental wildcard-based builds, e.g. BUILD ./services/*+test which would call ./services/foo+test, and ./services/bar+test (assuming two services foo and bar, both having a test target in their respective Earthfile) #3582.

Removed

  • VERSION 0.5 is now obsolete. Declaring VERSION 0.5 is no longer supported, and will now raise an error.

Fixed

  • Parallelism is improved when running the same target with different arguments in certain cases (e.g. the target uses WITH DOCKER).
  • Fixed a log sharing upload-resumption bug
  • Fixed multiple issues with the lexer failing to parse certain characters in shell command substitution ($()) and single quoted strings.
    • Some escaped characters, like \#, were failing to parse when used inside shell expressions. Example: $(echo "a#b#c" | cut -f2 -d\#) #3475
    • Some characters, like #, were failing to parse when used inside single-quoted strings: Example: 'this is a # string' #1280
  • Fixed an issue where some escaped ARG shell expressions were being incorrectly preprocessed. Example: $(echo "\"") became $(echo """) #3131
  • The --pass-args feature was not passing active arguments which were set via a default value.
  • SAVE ARTIFACT --if-exists was not saving files based on a wildcard glob pattern. #1679
  • BUILD was not expanding --platform argument values.

Additional Info

  • This release includes changes to buildkit

v0.8.0-rc2

09 Jan 18:00
720b195
Compare
Choose a tag to compare
v0.8.0-rc2 Pre-release
Pre-release

This version promotes a number of features that have been previously in Experimental and Beta status. To make use of
the features in this version you need to declare VERSION 0.8 at the top of your Earthfile.

Migrating from 0.7

If you are using Earthly 0.7, follow the following steps to migrate:

  1. If you are still using VERSION 0.5, upgrade those Earthfiles to VERSION 0.6 or VERSION 0.7.
  2. Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both VERSION 0.6 and VERSION 0.7 Earthfiles (but VERSION 0.5 support has been dropped).
  3. Once everyone is using the Earthly 0.8 binary, upgrade your Earthfiles one by one to VERSION 0.8. It is ok to have a mix of VERSION 0.6, VERSION 0.7 and VERSION 0.8 Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating from VERSION 0.7 to VERSION 0.8.

This process helps manage the backward breaking changes with minimal disruption.

Summary

Declaring VERSION 0.8 is equivalent to

VERSION \
  --arg-scope-and-set \
  --cache-persist-option \
  --git-refs \
  --global-cache \
  --no-network \
  --pass-args \
  --use-docker-ignore \
  --use-function-keyword \
  --use-visited-upfront-hash-collection \
  0.7

For more information on the individual Earthfile feature flags see the Earthfile version-specific features page.

It should be noted that some of these features break backwards compatibility. See below.

Changed

  • Redeclaring an ARG in the same scope as a previous declaration is now an error.
  • ARGs inside of targets will no longer have their default value overridden by global ARGs.
  • It is no longer possible to override a global ARG when calling a target.
  • Declaring a CACHE ... in a target will no longer be copied to children targets when referenced via a FROM +...; to persist the contents of the cache, it is now required to use the CACHE --persist ... flag.
  • The COMMAND keyword has been renamed to FUNCTION.

Added

  • LET - Allows declaring a local variable. This command works similarly to ARG except that it cannot be overridden from the CLI. LET variables are allowed to shadow ARG variables, which allows you to promote an ARG to a local variable so that it may be used with SET.
  • SET - a new command that allows changing the value of variables declared with LET.
  • Outputting images from a remote runner has improved performance as it no longer transfers layers that are already present locally.
  • Auto-skip has been promoted to beta status.
  • RUN --network=none allows running a command without network access.
  • .dockerignore files are now used in FROM DOCKERFILE targets.
  • DO --pass-args, BUILD --pass-args etc allow passing all build arguments to external Earthfiles.
  • CACHE --id=... and RUN --mount type=cache,id=... allows setting a custom cache mount ID, thus allowing sharing cache mounts globally across different targets.
  • New satellite sizes: 2xlarge, 3xlarge, 4xlarge
  • New experimental wildcard-based builds, e.g. BUILD ./services/*+test which would call ./services/foo+test, and ./services/bar+test (assuming two services foo and bar, both having a test target in their respective Earthfile) #3582.

Removed

  • VERSION 0.5 is now obsolete. Declaring VERSION 0.5 is no longer supported, and will now raise an error.

Fixed

  • Parallelism is improved when running the same target with different arguments in certain cases (e.g. the target uses WITH DOCKER).
  • Fixed a log sharing upload-resumption bug

Additional Info

  • This release includes changes to buildkit

v0.8.0-rc1

03 Jan 21:41
246c349
Compare
Choose a tag to compare
v0.8.0-rc1 Pre-release
Pre-release

This version promotes a number of features that have been previously in Experimental and Beta status. To make use of
the features in this version you need to declare VERSION 0.8 at the top of your Earthfile.

Migrating from 0.7

If you are using Earthly 0.7, follow the following steps to migrate:

  1. If you are still using VERSION 0.5, upgrade those Earthfiles to VERSION 0.6 or VERSION 0.7.
  2. Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both VERSION 0.6 and VERSION 0.7 Earthfiles (but VERSION 0.5 support has been dropped).
  3. Once everyone is using the Earthly 0.8 binary, upgrade your Earthfiles one by one to VERSION 0.8. It is ok to have a mix of VERSION 0.6, VERSION 0.7 and VERSION 0.8 Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating from VERSION 0.7 to VERSION 0.8.

This process helps manage the backward breaking changes with minimal disruption.

Summary

Declaring VERSION 0.8 is equivalent to

VERSION \
  --arg-scope-and-set \
  --cache-persist-option \
  --git-refs \
  --global-cache \
  --no-network \
  --pass-args \
  --use-docker-ignore \
  --use-function-keyword \
  --use-visited-upfront-hash-collection \
  0.7

For more information on the individual Earthfile feature flags see the Earthfile version-specific features page.

It should be noted that some of these features break backwards compatibility. See below.

Changed

  • Redeclaring an ARG in the same scope as a previous declaration is now an error.
  • ARGs inside of targets will no longer have their default value overridden by global ARGs.
  • It is no longer possible to override a global ARG when calling a target.
  • Declaring a CACHE ... in a target will no longer be copied to children targets when referenced via a FROM +...; to persist the contents of the cache, it is now required to use the CACHE --persist ... flag.
  • The COMMAND keyword has been renamed to FUNCTION.

Added

  • LET - Allows declaring a local variable. This command works similarly to ARG except that it cannot be overridden from the CLI. LET variables are allowed to shadow ARG variables, which allows you to promote an ARG to a local variable so that it may be used with SET.
  • SET - a new command that allows changing the value of variables declared with LET.
  • Outputting images from a remote runner has improved performance as it no longer transfers layers that are already present locally.
  • Auto-skip has been promoted to beta status.
  • RUN --network=none allows running a command without network access.
  • .dockerignore files are now used in FROM DOCKERFILE targets.
  • DO --pass-args, BUILD --pass-args etc allow passing all build arguments to external Earthfiles.
  • CACHE --id=... and RUN --mount type=cache,id=... allows setting a custom cache mount ID, thus allowing sharing cache mounts globally across different targets.

Removed

  • VERSION 0.5 is now obsolete. Declaring VERSION 0.5 is no longer supported, and will now raise an error.

Fixed

  • Parallelism is improved when running the same target with different arguments in certain cases (e.g. the target uses WITH DOCKER).

Additional Info

  • This release includes changes to buildkit

v0.7.23

18 Dec 16:03
e773722
Compare
Choose a tag to compare

Added

  • Auto-skip (experimental) - a feature that allows you to skip large parts of a build in certain situations, especially suited for monorepos. For more information see the auto-skip section from Caching in Earthfiles.
  • A warning when a COPY destination includes a tilde (~). Related to #1789.
  • A hint message to suggest the usage of -i flag to debug the build when a RUN command fails.
  • start-interval flag to HEALTHCHECK command for dockerfile parity #3409.
  • A verbose message indicating which authentication providers are used during a build.
  • ssh_command config option which can be used to override the ssh command that is used by git when connecting to an ssh-based repository. Thanks to @weaversam8 for the contribution!

Fixed

  • Limit the number of deprecation warnings when using COMMAND instead of FUNCTION keyword.
  • Fixed an error which stated VERSION 0.0 is a valid Earthfile version.

Changed

  • Changed the color used to print metadata values (such as ARGs values) in the build log to Faint Blue.
  • Updated default alpine/git image to v2.40.1.
  • When creating an auth token, an existing token will no longer be overwritten by default. To overwrite, the --overwrite flag should be used.

Additional Info

  • This release includes changes to buildkit

v0.7.22

27 Nov 23:46
5763a1b
Compare
Choose a tag to compare

Added

  • A new experimental earthly --exec-stats flag, which displays per-target execution stats such as total CPU and memory usage.
  • A new experimental earthly billing view command to get information about the organization billing plan.
  • Messages informing used build minutes during a build.
  • Help message when a build fails due to a missing referenced cloud secret.

Fixed

  • Remove redundant verbose error messages that were not different from messages that were already being printed.
  • Fixed failed to sign challenge errors when attempting to login using an ed25519 key with the 1Password ssh-agent. #3366

Changed

  • Final error messages for executions without a known target will be displayed without _unknown *failed* | prefix. and instead use Error: as prefix more consistently.
  • Failing RUN commands under LOCALLY will display the same format of error message for RUN without LOCALLY #3356.
  • Log sharing link will be printed last, even in case of a build error.
  • Help message after a build error will be printed in color.
  • Use dedicated logstream failure category for param related error.
  • An authentication attempt with an expired auth token will result in a auth token expired error instead of unauthorized.
  • A successful authentication with an auth token will display a warning with time left before token expires if it's 14 days or under.
  • The command earthly registry will attempt to use the selected org if no org is specified.
  • Clarify error messages when failing to pass secrets to a build.
  • Provide information on how to get more build minutes when a build fails due to missing minutes.
  • Provide information on how to increase the max number of allowed satellites when failing to launch a satellite.
  • CACHE mounts will no longer depend on the contents of ARGs, and instead will be limited to the target name.
  • Child targets will no longer receive the contents of mounted CACHE volumes defined in the parent target; this change can be enabled with VERSION --cache-persist-option. #3509
  • Improved memory usage related to log messages by no longer pre-allocating log buffers; this is most noticeable for really large Earthfiles with lots of different targets.
  • Updated buildkit with upstream changes up to 3d50b97793391d81d7bc191d7c5dd5361d5dadca.
  • Improved speed of SAVE IMAGE exports when using a remote buildkit instance (e.g. satellite) from a MacOS host; this can be enabled with the --use-remote-registry option.

Additional Info

  • This release includes changes to buildkit

v0.7.21

24 Oct 20:09
f4c9f47
Compare
Choose a tag to compare

Added

  • The new ARG EARTHLY_GIT_REFS will contain the references to the current git commit, this ARG must be enabled with the VERSION --git-refs feature flag. #2735
  • A new --force-certificate-generation flag for bootstrapping, which will force the generation of self signed TLS certificates even when the --no-buildkit flag is set.

Fixed

  • Fixed reduced parallelism regression which occurred when the target is the same but has different args -- can be enabled with VERSION --use-visited-upfront-hash-collection #2377
  • prune --age did not support d (for days) suffix, even thought earthly --help said it did #3401
  • buildkit scheduler error: return leaving incoming open which occured during deduplication of opperations within buildkit; cherry-picked 100d3cb6b6903be50f7a3e5dba193515aa9530fa from upstream buildkit repo. #2957
  • Changed WITH DOCKER to pull images in parallel #2351

Changed

  • Registry proxy: Use lower-level TCP streaming #2351

Additional Info

  • This release includes changes to buildkit

v0.7.20

03 Oct 22:26
9600f37
Compare
Choose a tag to compare

Added

  • Support for mode in mount cache #3278.
  • Support for mode in CACHE commands #3290.
  • Experimental support for shared/global caches (cache id is no longer scoped per Earthfile) #1129. Note that this is feature-flagged, and only changed when VERSION --global-cache 0.7 is defined.

Fixed

  • A regression where URLs will not always get shorter when used as a prefix. Partially addresses #3200.
  • If a build fails because of qemu missing, earthly will display a proper hint to install it #3200.
  • Removed erroneous error-message which said error: 0 errors occured #3306.
  • A race condition when exiting interactive debugger mode resulting in confusing errors #3200.
  • Docker auto-install script failures related to attempts to read from tty, while verifying docker's pgp key #3324.
  • Issue affecting pulling images in Podman #2471.
  • A panic: send on closed channel error would sometimes occur during shutdown of the logstream #3325.

Changed

  • Some error messages at the end of an execution will only be displayed in verbose mode (earthly -V ...), e.g. Error: build target: build main: failed to solve:... #3200
  • GIT CLONE URLs will only be printed once as part of a prefix, e.g. +my-clone-target(https://g/e/earthly) | --> GIT CLONE (--branch ) https://github.com/earthly/earthly
  • Clarify errors in interactive debugger so that they won't be confused with the build errors #3200.
  • The WITH DOCKER auto-install script will now pass the --no-tty option to gpg #3288.

Additional Info

  • This release includes changes to buildkit