github.com/yourbase/yb@v0.7.1/CHANGELOG.md (about)

     1  # yb Release Notes
     2  
     3  The format is based on [Keep a Changelog][], and this project adheres to
     4  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
     5  
     6  [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
     7  [Unreleased]: https://github.com/yourbase/yb/compare/v0.7.1...HEAD
     8  
     9  ## [0.7.1][] - 2021-09-30
    10  
    11  Version 0.7.1 fixes an issue with the Ant buildpack.
    12  
    13  [0.7.1]: https://github.com/yourbase/yb/releases/tag/v0.7.1
    14  
    15  ### Fixed
    16  
    17  -  The `ant` buildpack uses the official Apache Ant archives instead of the
    18     sonic.net mirror. The Apache Ant archives hold all the releases of Ant, not
    19     just the latest few versions.
    20  
    21  ## [0.7.0][] - 2021-07-06
    22  
    23  Version 0.7 simplifies installation by making Docker optional in most cases
    24  and improves the build output. Version 0.7 also fixes a long-standing issue
    25  where indirect target dependencies were ignored.
    26  
    27  [0.7.0]: https://github.com/yourbase/yb/releases/tag/v0.7.0
    28  
    29  ### Added
    30  
    31  -  A new `--mode` option for `build`, `exec`, and `run` allows specifying
    32     whether commands should be run inside or outside Docker.
    33  -  `yb build` can now build multiple targets in one invocation.
    34  -  Environment variables in `.yourbase.yml` files may now be specified as a map
    35     (e.g. `FOO: BAR`) instead of a list (e.g. `- FOO=BAR`).
    36  -  Build environments will now pick up credentials from `$HOME/.netrc` after any
    37     credentials from `$XDG_CONFIG_HOME/yb/netrc`. This can be overridden with the
    38     `NETRC` environment variable. To revert to the previous behavior, set
    39     `NETRC=/dev/null`.
    40  -  yb now obeys the `DOCKER_HOST` environment variable.
    41  -  `yb checkconfig` and other commands that read `.yourbase.yml` will display an
    42     error if the targets have a dependency cycle.
    43  -  yb attempts to detect some common Docker configuration issues and inform the
    44     user about them.
    45  -  yb now obeys the [`NO_COLOR` environment variable][] and propagates it to the
    46     build environment.
    47  -  `exec` build packs can now be specified under `exec.dependencies.runtime` in
    48     `.yourbase.yml`.
    49  
    50  [`NO_COLOR` environment variable]: https://no-color.org/
    51  
    52  ### Changed
    53  
    54  -  Commands run as part of `build`, `exec`, or `run` now run without Docker by
    55     default. You can get the old behavior by running with `--mode=container`.
    56  -  Tool output has been changed to be more compact, to be easier to trace
    57     command output, and to include more timing information.
    58  -  `yb platform` is now an alias for `yb version`.
    59  
    60  ### Fixed
    61  
    62  -  `yb init` no longer crashes when not given a `--lang` flag if there was
    63     a problem connecting to the Docker daemon.
    64  -  `yb build` and `yb run` now build indirect dependencies, not just
    65     direct dependencies.
    66  -  yb no longer assumes that Docker build environments are `linux/amd64`.
    67  
    68  ### Deprecated
    69  
    70  -  The `host_only` property in `.yourbase.yml` is now ignored. It may be removed
    71     in a future version.
    72  -  The `--no-container` option in `build` and `run` is now equivalent to
    73     `--mode=no-container`. It is still recognized, but no longer shown in
    74     documentation and may be removed in a future version.
    75  
    76  ## [0.6.3][] - 2021-03-08
    77  
    78  Version 0.6.3 changes the build environment keychain name.
    79  
    80  [0.6.3]: https://github.com/yourbase/yb/releases/tag/v0.6.3
    81  
    82  ### Changed
    83  
    84  -  On macOS, the empty, default keychain that yb creates will now be called
    85     `login` instead of `yb` for compatibility with more programs.
    86  
    87  ## [0.5.8][] - 2021-03-08
    88  
    89  Version 0.5.8 backports a change to the build environment keychain name.
    90  
    91  [0.5.8]: https://github.com/yourbase/yb/releases/tag/v0.5.8
    92  
    93  ### Changed
    94  
    95  -  On macOS, the empty, default keychain that yb creates will now be called
    96     `login` instead of `yb` for compatibility with more programs.
    97  
    98  ## [0.6.2][] - 2021-03-01
    99  
   100  Version 0.6.2 fixes a locale environment variable issue and improves the output
   101  for builds with containers that don't start up.
   102  
   103  [0.6.2]: https://github.com/yourbase/yb/releases/tag/v0.6.2
   104  
   105  ### Changed
   106  
   107  -  The build environment now sets `LANG` and other locale environment variables
   108     to `C.UTF-8` or the closest approximation thereof. Previously, these
   109     variables were unset, which caused problems with programs that required a
   110     UTF-8 character set to function properly, like those written in Ruby or Python.
   111  
   112  ### Fixed
   113  
   114  -  If a container dependency exits while waiting for it to become healthy,
   115     yb will now display a container's logs rather than waiting for the full
   116     timeout and giving an unhelpful error message.
   117  -  The `TZ` environment variable is now set to `UTC0` by default. Previously,
   118     it was set to `UTC`, which is not a POSIX-conforming value.
   119  
   120  ## [0.5.7][] - 2021-03-01
   121  
   122  Version 0.5.7 backports a fix for a locale environment variable issue.
   123  
   124  [0.5.7]: https://github.com/yourbase/yb/releases/tag/v0.5.7
   125  
   126  ### Changed
   127  
   128  -  The build environment now sets `LANG` and other locale environment variables
   129     to `C.UTF-8` or the closest approximation thereof. Previously, these
   130     variables were unset, which caused problems with programs that required a
   131     UTF-8 character set to function properly, like those written in Ruby or Python.
   132  
   133  ### Fixed
   134  
   135  -  The `TZ` environment variable is now set to `UTC0` by default. Previously,
   136     it was set to `UTC`, which is not a POSIX-conforming value.
   137  
   138  ## [0.6.1][] - 2021-02-11
   139  
   140  Version 0.6.1 fixes a build environment keychain issue for macOS and stores its
   141  configuration files with more secure permissions.
   142  
   143  [0.6.1]: https://github.com/yourbase/yb/releases/tag/v0.6.1
   144  
   145  ### Fixed
   146  
   147  -  On macOS, yb will now create an empty, default keychain in the build
   148     environment. Previously, there was not a keychain inside the build
   149     environment.
   150  
   151  ### Security
   152  
   153  -  `$XDG_CONFIG_HOME/yb/settings.ini` is no longer created with world-readable
   154     permissions. This file stores YourBase login credentials, so this prevents
   155     other users on the same system from accessing the login token.
   156  
   157  ## [0.5.6][] - 2021-02-11
   158  
   159  Version 0.5.6 fixes a build environment keychain issue for macOS.
   160  
   161  [0.5.6]: https://github.com/yourbase/yb/releases/tag/v0.5.6
   162  
   163  ### Fixed
   164  
   165  -  On macOS, yb will now create an empty, default keychain in the build
   166     environment. Previously, there was not a keychain inside the build
   167     environment.
   168  
   169  ## [0.6.0][] - 2021-01-26
   170  
   171  Version 0.6 adds new commands like `init` and `clean`, shell tab completion,
   172  and improvements to error messages for invalid build configurations.
   173  
   174  [0.6.0]: https://github.com/yourbase/yb/releases/tag/v0.6.0
   175  
   176  ### Added
   177  
   178  -  `yb init` is a new command that generates a `.yourbase.yml` file to get
   179     started. It does basic programming language detection based on files already
   180     in the directory.
   181  -  The new `yb clean` command deletes the cache for the package or specific
   182     targets.
   183  -  bash and zsh completion scripts are now included in our binary distributions.
   184     These are automatically installed in Homebrew and the Debian packages.
   185  -  `github.com/yourbase/yb` is now a Go package for reading
   186     `.yourbase.yml` files. The API is mostly stable, but may still change before
   187     yb 1.0.
   188  -  Container mounts in `.yourbase.yml` can now refer to relative paths in the
   189     package directory.
   190  
   191  ### Changed
   192  
   193  -  Unknown keys in `.yourbase.yml` objects will now cause errors. Previously
   194     they were ignored.
   195  -  `yb checkconfig` will now display errors about invalid container mounts.
   196  -  `yb build`, `yb clean`, `yb exec`, `yb remotebuild`, and `yb run` can now
   197     be run from a project subdirectory and they will use the `.yourbase.yml` file
   198     from the parent directory. `yb run` will start its program in the
   199     subdirectory you run it from, but all other commands will be run relative to
   200     the directory that the `.yourbase.yml` file is located in.
   201  
   202  ### Removed
   203  
   204  -  The `exec.ports` stanza in .yourbase.yml was previously accepted but did
   205     nothing. `exec.container.ports` should be used instead.
   206  
   207  ### Fixed
   208  
   209  -  Mapping ports in the container no longer emits a seemingly empty log message.
   210  -  The Java buildpack now uses the build home for the `user.home` property.
   211  
   212  ## [0.5.5][] - 2020-12-01
   213  
   214  Version 0.5.5 fixes more regressions from 0.4.
   215  
   216  [0.5.5]: https://github.com/yourbase/yb/releases/tag/v0.5.5
   217  
   218  ### Fixed
   219  
   220  -  Interrupting yb now cleans up any running processes or containers and reports
   221     the error like other build failures.
   222  -  Trying to run a program in a target with `./foo` now works correctly when
   223     the `--no-container` flag is passed. This was a regression from 0.4.
   224  
   225  ## [0.5.4][] - 2020-11-30
   226  
   227  Version 0.5.4 fixes more regressions from 0.4.
   228  
   229  [0.5.4]: https://github.com/yourbase/yb/releases/tag/v0.5.4
   230  
   231  ### Fixed
   232  
   233  -  The Go buildpack now adds `$GOPATH/bin` to `PATH`. This was a regression
   234     from 0.4.
   235  -  `yb exec --environment=foo` no longer crashes if the `default` environment
   236     is empty. This was a regression from 0.4.
   237  -  Setting `container.ports` on `exec` or a `build_target` in `.yourbase.yml`
   238     no longer causes a panic.
   239  
   240  ## [0.5.3][] - 2020-11-19
   241  
   242  Version 0.5.3 fixes minor regressions from 0.4.
   243  
   244  [0.5.3]: https://github.com/yourbase/yb/releases/tag/v0.5.3
   245  
   246  ### Fixed
   247  
   248  -  `yb exec` installs the runtime dependencies in its environment. This was a
   249     regression from 0.4.
   250  -  Container IP addresses in the yb environment are respected in configuration
   251     environment variable expansions. This was a regression from 0.4.
   252  -  The Ruby buildpack downloads a pinned version of rbenv and ruby-build rather
   253     than following the latest commit.
   254  -  The Flutter buildpack now correctly handles the same pre-release version
   255     formats as previous versions of yb.
   256  -  Using yb with the Docker on the Mac will no longer create directories with
   257     zero permissions.
   258  
   259  ## [0.5.2][] - 2020-11-18
   260  
   261  Version 0.5.2 fixes a major regression in `yb build` behavior.
   262  
   263  [0.5.2]: https://github.com/yourbase/yb/releases/tag/v0.5.2
   264  
   265  ### Fixed
   266  
   267  -  Regression: `yb build` would exit with a zero status code on build failures
   268     in version 0.5. This is now fixed.
   269  
   270  ## [0.5.1][] - 2020-11-18
   271  
   272  Version 0.5.1 was a botched release.
   273  
   274  [0.5.1]: https://github.com/yourbase/yb/releases/tag/v0.5.1
   275  
   276  ## [0.5.0][] - 2020-11-18
   277  
   278  Version 0.5 provides better reproducibility and isolation than previous
   279  releases, making it easier to debug your YourBase builds locally.
   280  
   281  Notable improvements:
   282  
   283  -  `yb run` now runs in the exact same environment as what a build target would
   284     use, including in a container. You can use `yb run bash` to pull up an
   285     interactive shell and inspect your environment, `yb run python --version` to
   286     verify the target's Python version, and more!
   287  -  Non-container builds isolate their environment variables and create a
   288     per-build-target home directory inside your `~/.cache/yourbase` directory.
   289     This makes builds far more reproducible and reduces the likelihood that a
   290     build will interfere with the host system.
   291  -  Build containers get shut down at the end of a build. No more floating
   292     Docker containers!
   293  
   294  [0.5.0]: https://github.com/yourbase/yb/releases/tag/v0.5.0
   295  
   296  ### Added
   297  
   298  -  `yb build`, `yb exec`, and `yb run` now all support two new flags: `--env`
   299     and `--env-file`. These flags set environment variables in the execution
   300     environment.
   301  -  A new `--netrc-file` flag for `build`, `exec`, and `run` inject a
   302     [.netrc file](https://ec.haxx.se/usingcurl/usingcurl-netrc) into the build
   303     environment. This is combined with any credentials stored in an
   304     `$XDG_CONFIG_HOME/yb/netrc` file.
   305  -  A new `--debug` flag shows debug logs for any command.
   306  -  yb will display a message on startup if the obsolete `$HOME/.yourbase`
   307     directory exists, encouraging its deletion to save disk space.
   308  
   309  ### Changed
   310  
   311  -  The Docker container for a build is entirely ephemeral: a new container will
   312     be started for each target and the container will be stopped and removed
   313     at the end of building the target. The contents of the build's
   314     `HOME` directory and the package directory will persist between runs, but
   315     all other changes will be lost, particularly packages installed
   316     with `apt-get`.
   317  -  `yb build` now directly runs commands in the Docker container instead of
   318     invoking a copy of itself to run the build.
   319  -  `yb run` now runs commands in the environment of a build target, not an
   320     exec environment. This also means that `yb run` will operate in an ephemeral
   321     Docker container by default.
   322  -  To increase isolation in local builds, yb now sets `HOME` to a directory
   323     cached between builds of the same target instead of using the user's `HOME`
   324     directory.
   325  -  The `TZ` environment variable is set to the value `UTC` by default for all
   326     builds to increase reproducibility.
   327  -  yb build commands no longer inherit environment variables for greater
   328     reproducibility. To set environment variables in your build, use the new
   329     `--env` or `--env-file` flags. This has the benefit of working regardless
   330     of whether you're building in a container.
   331  -  `yb remotebuild` will now always use the locally installed Git to determine
   332     the changed files.
   333  
   334  ### Removed
   335  
   336  -  The `homebrew` buildpack has been removed due to its complexity and
   337     low usage. Please [file an issue](https://github.com/yourbase/yb/issues/new)
   338     if your build needs Homebrew specifically.
   339  -  `yb remotebuild` no longer has the `--print-status` or `--go-git-status` flags.
   340  
   341  ### Fixed
   342  
   343  -  `yb build` now builds dependency targets (specified with `build_after`)
   344     with the same environment as if they were built directly. In particular,
   345     container dependencies will be started for each target, whereas previous
   346     versions would only start the container dependencies for the target named
   347     on the command line.
   348  
   349  ### Security
   350  
   351  -  The Ant buildpack now downloads over HTTPS from the sonic.net mirror. It was
   352     previously using the lucidnetworks.net mirror over HTTP.
   353  
   354  ## [0.4.4][] - 2020-11-05
   355  
   356  Version 0.4.4 fixes an issue with containers in environments that don't have
   357  a `docker0` network like WSL and macOS.
   358  
   359  [0.4.4]: https://github.com/yourbase/yb/releases/tag/v0.4.4
   360  
   361  ### Fixed
   362  
   363  -  Port wait checks will now automatically forward a port on any host that does
   364     not have a `docker0` network. Previously, this behavior was only used on
   365     macOS, but it is also applicable to Docker Desktop with WSL.
   366  
   367  ## [0.4.3][] - 2020-11-05
   368  
   369  Version 0.4.3 was a botched release from an unstable development commit.
   370  
   371  [0.4.3]: https://github.com/yourbase/yb/releases/tag/v0.4.3
   372  
   373  ## [0.4.2][] - 2020-10-20
   374  
   375  Version 0.4.2 fixes an issue with `yb remotebuild`.
   376  
   377  [0.4.2]: https://github.com/yourbase/yb/releases/tag/v0.4.2
   378  
   379  ### Fixed
   380  
   381  -  `yb remotebuild` no longer panics
   382  
   383  ## [0.4.1][] - 2020-10-13
   384  
   385  Version 0.4.1 fixes a regression introduced by 0.4.0.
   386  
   387  [0.4.1]: https://github.com/yourbase/yb/releases/tag/v0.4.1
   388  
   389  ### Changed
   390  
   391  -  Attempting to use an unknown container in `{{.Container.IP}}` substitutions
   392     will now cause a build failure rather than silently expanding to the
   393     empty string.
   394  
   395  ### Fixed
   396  
   397  -  Fixed the `{{.Container.IP}}` regression introduced in v0.4.0.
   398  
   399  ## [0.4.0][] - 2020-10-12
   400  
   401  Version 0.4 removes some broken or ill-conceived functionality from yb and
   402  changes where yb stores files to obey the [XDG Base Directory specification][].
   403  
   404  [0.4.0]: https://github.com/yourbase/yb/releases/tag/v0.4.0
   405  [XDG Base Directory specification]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
   406  
   407  ### Changed
   408  
   409  -  The build cache is now created under `$XDG_CACHE_HOME/yb`
   410     (usually `$HOME/.cache/yb`) rather than `$HOME/.yourbase`.
   411     You can safely remove `$HOME/.yourbase` to reclaim disk space.
   412  
   413  ### Removed
   414  
   415  -  Workspaces. At the moment, we're focusing on single packages and will
   416     reintroduce the concept when we have a better grasp on how dependencies will
   417     work inside yb.
   418  -  The build log streaming feature has been removed, since it has been broken
   419     for some time. However, we hope to reintroduce it in a future version.
   420  -  Removed the `yb update` command. Users can now stay up-to-date with either
   421     the APT or Homebrew repositories.
   422  
   423  ### Fixed
   424  
   425  -  yb now respects the `XDG_CONFIG_HOME` and `XDG_CONFIG_DIRS` environment
   426     variables when reading configuration files.
   427  -  Update to latest version of [Narwhal](https://github.com/yourbase/narwhal),
   428     which contains many fixes for Docker interactions.
   429  -  `yb build` will now exit with a non-zero status code if more than one
   430     argument is given. Previously, it would silently ignore such arguments.
   431  -  The download span names in the `yb build` trace now include the URL rather
   432     than the unhelpful `%s`.
   433  
   434  ## [0.3.2][] - 2020-10-07
   435  
   436  Version 0.3.2 fixes issues with the Python buildpack.
   437  
   438  [0.3.2]: https://github.com/yourbase/yb/releases/tag/v0.3.2
   439  
   440  ### Fixed
   441  
   442  -  Fixed an incorrect URL for Miniconda in the Python buildpack.
   443  -  HTTP downloads in yb no longer ignore the status code and will abort for
   444     any non-200 status code.
   445  
   446  ## [0.3.1][] - 2020-10-06
   447  
   448  Version 0.3.1 fixes an issue with error handling during builds.
   449  
   450  [0.3.1]: https://github.com/yourbase/yb/releases/tag/v0.3.1
   451  
   452  ### Fixed
   453  
   454  -  Fixed a regression where if a dependent target fails, it did not stop
   455     the build.
   456  
   457  ## [0.3.0][] - 2020-10-05
   458  
   459  Version 0.3 is the first release with our new release automation.
   460  
   461  [0.3.0]: https://github.com/yourbase/yb/releases/tag/v0.3.0
   462  
   463  ### Added
   464  
   465  -  Add `yb token` command
   466  
   467  ### Changed
   468  
   469  -  We are no longer using Equinox for releases. See the
   470     [README](https://github.com/yourbase/yb/blob/main/README.md) for installation
   471     instructions.
   472  -  Release binaries are now smaller due to debug symbol stripping.
   473  -  Release binaries are now built as [position-independent executables][].
   474  -  The output of timing information at the end of a build has changed formatting
   475     slightly to accommodate more sophisticated breakdowns in the future.
   476  
   477  [position-independent executables]: https://en.wikipedia.org/wiki/Position-independent_code
   478  
   479  ### Fixed
   480  
   481  -  Fixes to OpenJDK and Anaconda buildpacks
   482     ([#170](https://github.com/yourbase/yb/pull/170))