Releases: earthly/earthly
v0.8.3
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
Added
- Added a
--force
flag to thesatellite 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 asmin(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
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 aSAVE 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
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:
- If you are still using
VERSION 0.5
, upgrade those Earthfiles toVERSION 0.6
orVERSION 0.7
. - Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both
VERSION 0.6
andVERSION 0.7
Earthfiles (butVERSION 0.5
support has been dropped). - 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 ofVERSION 0.6
,VERSION 0.7
andVERSION 0.8
Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating fromVERSION 0.7
toVERSION 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. ARG
s inside of targets will no longer have their default value overridden by globalARG
s.- Declaring a
CACHE ...
in a target will no longer be copied to children targets when referenced via aFROM +...
; to persist the contents of the cache, it is now required to use theCACHE --persist ...
flag. - The
COMMAND
keyword has been renamed toFUNCTION
.
Added
LET
- Allows declaring a local variable. This command works similarly toARG
except that it cannot be overridden from the CLI.LET
variables are allowed to shadowARG
variables, which allows you to promote anARG
to a local variable so that it may be used withSET
.SET
- a new command that allows changing the value of variables declared withLET
.- 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 inFROM DOCKERFILE
targets.DO --pass-args
,BUILD --pass-args
etc allow passing all build arguments to external Earthfiles.CACHE --id=...
andRUN --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 atest
target in their respective Earthfile) #3582.
Removed
VERSION 0.5
is now obsolete. DeclaringVERSION 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. - 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. #1679BUILD
was not expanding--platform
argument values.
Additional Info
- This release includes changes to buildkit
v0.8.0-rc2
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:
- If you are still using
VERSION 0.5
, upgrade those Earthfiles toVERSION 0.6
orVERSION 0.7
. - Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both
VERSION 0.6
andVERSION 0.7
Earthfiles (butVERSION 0.5
support has been dropped). - 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 ofVERSION 0.6
,VERSION 0.7
andVERSION 0.8
Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating fromVERSION 0.7
toVERSION 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. ARG
s inside of targets will no longer have their default value overridden by globalARG
s.- 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 aFROM +...
; to persist the contents of the cache, it is now required to use theCACHE --persist ...
flag. - The
COMMAND
keyword has been renamed toFUNCTION
.
Added
LET
- Allows declaring a local variable. This command works similarly toARG
except that it cannot be overridden from the CLI.LET
variables are allowed to shadowARG
variables, which allows you to promote anARG
to a local variable so that it may be used withSET
.SET
- a new command that allows changing the value of variables declared withLET
.- 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 inFROM DOCKERFILE
targets.DO --pass-args
,BUILD --pass-args
etc allow passing all build arguments to external Earthfiles.CACHE --id=...
andRUN --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 atest
target in their respective Earthfile) #3582.
Removed
VERSION 0.5
is now obsolete. DeclaringVERSION 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
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:
- If you are still using
VERSION 0.5
, upgrade those Earthfiles toVERSION 0.6
orVERSION 0.7
. - Upgrade your Earthly binary to 0.8 in CI and across your team. The Earthly 0.8 binary can run both
VERSION 0.6
andVERSION 0.7
Earthfiles (butVERSION 0.5
support has been dropped). - 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 ofVERSION 0.6
,VERSION 0.7
andVERSION 0.8
Earthfiles in the same project. Earthly handles that gracefully. See changes below for information on backwards incompatible changes when migrating fromVERSION 0.7
toVERSION 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. ARG
s inside of targets will no longer have their default value overridden by globalARG
s.- 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 aFROM +...
; to persist the contents of the cache, it is now required to use theCACHE --persist ...
flag. - The
COMMAND
keyword has been renamed toFUNCTION
.
Added
LET
- Allows declaring a local variable. This command works similarly toARG
except that it cannot be overridden from the CLI.LET
variables are allowed to shadowARG
variables, which allows you to promote anARG
to a local variable so that it may be used withSET
.SET
- a new command that allows changing the value of variables declared withLET
.- 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 inFROM DOCKERFILE
targets.DO --pass-args
,BUILD --pass-args
etc allow passing all build arguments to external Earthfiles.CACHE --id=...
andRUN --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. DeclaringVERSION 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
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 toHEALTHCHECK
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 bygit
when connecting to an ssh-based repository. Thanks to @weaversam8 for the contribution!
Fixed
- Limit the number of deprecation warnings when using
COMMAND
instead ofFUNCTION
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
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 useError:
as prefix more consistently. - Failing
RUN
commands underLOCALLY
will display the same format of error message forRUN
withoutLOCALLY
#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 ofunauthorized
. - 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 ofARG
s, 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 withVERSION --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
Added
- The new ARG
EARTHLY_GIT_REFS
will contain the references to the current git commit, this ARG must be enabled with theVERSION --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 supportd
(for days) suffix, even thoughtearthly --help
said it did #3401buildkit 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
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 whenVERSION --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 togpg
#3288.
Additional Info
- This release includes changes to buildkit