The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.7.1 - 2021-09-30
Version 0.7.1 fixes an issue with the Ant buildpack.
- The
ant
buildpack uses the official Apache Ant archives instead of the sonic.net mirror. The Apache Ant archives hold all the releases of Ant, not just the latest few versions.
0.7.0 - 2021-07-06
Version 0.7 simplifies installation by making Docker optional in most cases and improves the build output. Version 0.7 also fixes a long-standing issue where indirect target dependencies were ignored.
- A new
--mode
option forbuild
,exec
, andrun
allows specifying whether commands should be run inside or outside Docker. yb build
can now build multiple targets in one invocation.- Environment variables in
.yourbase.yml
files may now be specified as a map (e.g.FOO: BAR
) instead of a list (e.g.- FOO=BAR
). - Build environments will now pick up credentials from
$HOME/.netrc
after any credentials from$XDG_CONFIG_HOME/yb/netrc
. This can be overridden with theNETRC
environment variable. To revert to the previous behavior, setNETRC=/dev/null
. - yb now obeys the
DOCKER_HOST
environment variable. yb checkconfig
and other commands that read.yourbase.yml
will display an error if the targets have a dependency cycle.- yb attempts to detect some common Docker configuration issues and inform the user about them.
- yb now obeys the
NO_COLOR
environment variable and propagates it to the build environment. exec
build packs can now be specified underexec.dependencies.runtime
in.yourbase.yml
.
- Commands run as part of
build
,exec
, orrun
now run without Docker by default. You can get the old behavior by running with--mode=container
. - Tool output has been changed to be more compact, to be easier to trace command output, and to include more timing information.
yb platform
is now an alias foryb version
.
yb init
no longer crashes when not given a--lang
flag if there was a problem connecting to the Docker daemon.yb build
andyb run
now build indirect dependencies, not just direct dependencies.- yb no longer assumes that Docker build environments are
linux/amd64
.
- The
host_only
property in.yourbase.yml
is now ignored. It may be removed in a future version. - The
--no-container
option inbuild
andrun
is now equivalent to--mode=no-container
. It is still recognized, but no longer shown in documentation and may be removed in a future version.
0.6.3 - 2021-03-08
Version 0.6.3 changes the build environment keychain name.
- On macOS, the empty, default keychain that yb creates will now be called
login
instead ofyb
for compatibility with more programs.
0.5.8 - 2021-03-08
Version 0.5.8 backports a change to the build environment keychain name.
- On macOS, the empty, default keychain that yb creates will now be called
login
instead ofyb
for compatibility with more programs.
0.6.2 - 2021-03-01
Version 0.6.2 fixes a locale environment variable issue and improves the output for builds with containers that don't start up.
- The build environment now sets
LANG
and other locale environment variables toC.UTF-8
or the closest approximation thereof. Previously, these variables were unset, which caused problems with programs that required a UTF-8 character set to function properly, like those written in Ruby or Python.
- If a container dependency exits while waiting for it to become healthy, yb will now display a container's logs rather than waiting for the full timeout and giving an unhelpful error message.
- The
TZ
environment variable is now set toUTC0
by default. Previously, it was set toUTC
, which is not a POSIX-conforming value.
0.5.7 - 2021-03-01
Version 0.5.7 backports a fix for a locale environment variable issue.
- The build environment now sets
LANG
and other locale environment variables toC.UTF-8
or the closest approximation thereof. Previously, these variables were unset, which caused problems with programs that required a UTF-8 character set to function properly, like those written in Ruby or Python.
- The
TZ
environment variable is now set toUTC0
by default. Previously, it was set toUTC
, which is not a POSIX-conforming value.
0.6.1 - 2021-02-11
Version 0.6.1 fixes a build environment keychain issue for macOS and stores its configuration files with more secure permissions.
- On macOS, yb will now create an empty, default keychain in the build environment. Previously, there was not a keychain inside the build environment.
$XDG_CONFIG_HOME/yb/settings.ini
is no longer created with world-readable permissions. This file stores YourBase login credentials, so this prevents other users on the same system from accessing the login token.
0.5.6 - 2021-02-11
Version 0.5.6 fixes a build environment keychain issue for macOS.
- On macOS, yb will now create an empty, default keychain in the build environment. Previously, there was not a keychain inside the build environment.
0.6.0 - 2021-01-26
Version 0.6 adds new commands like init
and clean
, shell tab completion,
and improvements to error messages for invalid build configurations.
yb init
is a new command that generates a.yourbase.yml
file to get started. It does basic programming language detection based on files already in the directory.- The new
yb clean
command deletes the cache for the package or specific targets. - bash and zsh completion scripts are now included in our binary distributions. These are automatically installed in Homebrew and the Debian packages.
github.com/yourbase/yb
is now a Go package for reading.yourbase.yml
files. The API is mostly stable, but may still change before yb 1.0.- Container mounts in
.yourbase.yml
can now refer to relative paths in the package directory.
- Unknown keys in
.yourbase.yml
objects will now cause errors. Previously they were ignored. yb checkconfig
will now display errors about invalid container mounts.yb build
,yb clean
,yb exec
,yb remotebuild
, andyb run
can now be run from a project subdirectory and they will use the.yourbase.yml
file from the parent directory.yb run
will start its program in the subdirectory you run it from, but all other commands will be run relative to the directory that the.yourbase.yml
file is located in.
- The
exec.ports
stanza in .yourbase.yml was previously accepted but did nothing.exec.container.ports
should be used instead.
- Mapping ports in the container no longer emits a seemingly empty log message.
- The Java buildpack now uses the build home for the
user.home
property.
0.5.5 - 2020-12-01
Version 0.5.5 fixes more regressions from 0.4.
- Interrupting yb now cleans up any running processes or containers and reports the error like other build failures.
- Trying to run a program in a target with
./foo
now works correctly when the--no-container
flag is passed. This was a regression from 0.4.
0.5.4 - 2020-11-30
Version 0.5.4 fixes more regressions from 0.4.
- The Go buildpack now adds
$GOPATH/bin
toPATH
. This was a regression from 0.4. yb exec --environment=foo
no longer crashes if thedefault
environment is empty. This was a regression from 0.4.- Setting
container.ports
onexec
or abuild_target
in.yourbase.yml
no longer causes a panic.
0.5.3 - 2020-11-19
Version 0.5.3 fixes minor regressions from 0.4.
yb exec
installs the runtime dependencies in its environment. This was a regression from 0.4.- Container IP addresses in the yb environment are respected in configuration environment variable expansions. This was a regression from 0.4.
- The Ruby buildpack downloads a pinned version of rbenv and ruby-build rather than following the latest commit.
- The Flutter buildpack now correctly handles the same pre-release version formats as previous versions of yb.
- Using yb with the Docker on the Mac will no longer create directories with zero permissions.
0.5.2 - 2020-11-18
Version 0.5.2 fixes a major regression in yb build
behavior.
- Regression:
yb build
would exit with a zero status code on build failures in version 0.5. This is now fixed.
0.5.1 - 2020-11-18
Version 0.5.1 was a botched release.
0.5.0 - 2020-11-18
Version 0.5 provides better reproducibility and isolation than previous releases, making it easier to debug your YourBase builds locally.
Notable improvements:
yb run
now runs in the exact same environment as what a build target would use, including in a container. You can useyb run bash
to pull up an interactive shell and inspect your environment,yb run python --version
to verify the target's Python version, and more!- Non-container builds isolate their environment variables and create a
per-build-target home directory inside your
~/.cache/yourbase
directory. This makes builds far more reproducible and reduces the likelihood that a build will interfere with the host system. - Build containers get shut down at the end of a build. No more floating Docker containers!
yb build
,yb exec
, andyb run
now all support two new flags:--env
and--env-file
. These flags set environment variables in the execution environment.- A new
--netrc-file
flag forbuild
,exec
, andrun
inject a .netrc file into the build environment. This is combined with any credentials stored in an$XDG_CONFIG_HOME/yb/netrc
file. - A new
--debug
flag shows debug logs for any command. - yb will display a message on startup if the obsolete
$HOME/.yourbase
directory exists, encouraging its deletion to save disk space.
- The Docker container for a build is entirely ephemeral: a new container will
be started for each target and the container will be stopped and removed
at the end of building the target. The contents of the build's
HOME
directory and the package directory will persist between runs, but all other changes will be lost, particularly packages installed withapt-get
. yb build
now directly runs commands in the Docker container instead of invoking a copy of itself to run the build.yb run
now runs commands in the environment of a build target, not an exec environment. This also means thatyb run
will operate in an ephemeral Docker container by default.- To increase isolation in local builds, yb now sets
HOME
to a directory cached between builds of the same target instead of using the user'sHOME
directory. - The
TZ
environment variable is set to the valueUTC
by default for all builds to increase reproducibility. - yb build commands no longer inherit environment variables for greater
reproducibility. To set environment variables in your build, use the new
--env
or--env-file
flags. This has the benefit of working regardless of whether you're building in a container. yb remotebuild
will now always use the locally installed Git to determine the changed files.
- The
homebrew
buildpack has been removed due to its complexity and low usage. Please file an issue if your build needs Homebrew specifically. yb remotebuild
no longer has the--print-status
or--go-git-status
flags.
yb build
now builds dependency targets (specified withbuild_after
) with the same environment as if they were built directly. In particular, container dependencies will be started for each target, whereas previous versions would only start the container dependencies for the target named on the command line.
- The Ant buildpack now downloads over HTTPS from the sonic.net mirror. It was previously using the lucidnetworks.net mirror over HTTP.
0.4.4 - 2020-11-05
Version 0.4.4 fixes an issue with containers in environments that don't have
a docker0
network like WSL and macOS.
- Port wait checks will now automatically forward a port on any host that does
not have a
docker0
network. Previously, this behavior was only used on macOS, but it is also applicable to Docker Desktop with WSL.
0.4.3 - 2020-11-05
Version 0.4.3 was a botched release from an unstable development commit.
0.4.2 - 2020-10-20
Version 0.4.2 fixes an issue with yb remotebuild
.
yb remotebuild
no longer panics
0.4.1 - 2020-10-13
Version 0.4.1 fixes a regression introduced by 0.4.0.
- Attempting to use an unknown container in
{{.Container.IP}}
substitutions will now cause a build failure rather than silently expanding to the empty string.
- Fixed the
{{.Container.IP}}
regression introduced in v0.4.0.
0.4.0 - 2020-10-12
Version 0.4 removes some broken or ill-conceived functionality from yb and changes where yb stores files to obey the XDG Base Directory specification.
- The build cache is now created under
$XDG_CACHE_HOME/yb
(usually$HOME/.cache/yb
) rather than$HOME/.yourbase
. You can safely remove$HOME/.yourbase
to reclaim disk space.
- Workspaces. At the moment, we're focusing on single packages and will reintroduce the concept when we have a better grasp on how dependencies will work inside yb.
- The build log streaming feature has been removed, since it has been broken for some time. However, we hope to reintroduce it in a future version.
- Removed the
yb update
command. Users can now stay up-to-date with either the APT or Homebrew repositories.
- yb now respects the
XDG_CONFIG_HOME
andXDG_CONFIG_DIRS
environment variables when reading configuration files. - Update to latest version of Narwhal, which contains many fixes for Docker interactions.
yb build
will now exit with a non-zero status code if more than one argument is given. Previously, it would silently ignore such arguments.- The download span names in the
yb build
trace now include the URL rather than the unhelpful%s
.
0.3.2 - 2020-10-07
Version 0.3.2 fixes issues with the Python buildpack.
- Fixed an incorrect URL for Miniconda in the Python buildpack.
- HTTP downloads in yb no longer ignore the status code and will abort for any non-200 status code.
0.3.1 - 2020-10-06
Version 0.3.1 fixes an issue with error handling during builds.
- Fixed a regression where if a dependent target fails, it did not stop the build.
0.3.0 - 2020-10-05
Version 0.3 is the first release with our new release automation.
- Add
yb token
command
- We are no longer using Equinox for releases. See the README for installation instructions.
- Release binaries are now smaller due to debug symbol stripping.
- Release binaries are now built as position-independent executables.
- The output of timing information at the end of a build has changed formatting slightly to accommodate more sophisticated breakdowns in the future.
- Fixes to OpenJDK and Anaconda buildpacks (#170)