Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

2.13.0 - 2024-03-25

Added

  • Added support for Python 3.12 (#244)

  • Add explicit support for mounting named volumes (#250)

    • This officially restores and extends the (unsupported) pre-v2.12 behavior.

Changed

  • Removed use of deprecated pkg_resources (#247)

  • Rewrote scubainit in Rust (#232)

2.12.0 - 2023-09-15

Added

  • Enable the use of relative paths in a volume hostpath (#227)

2.11.0 - 2023-09-09

Changed

  • Introduced pyproject.toml and moved metadata from setup.py (#211)

  • Added type annotations to scuba package and mypy checking in CI (#207)

Removed

  • Drop support for Python 3.5 - 3.6 (#205)

Fixed

  • Fixed bug causing invalid volume spec error on Docker 24.0.5 and newer (#217)

2.10.1 - 2023-03-07

Fixed

  • Create directories for volumes as invoking user rather than root. (#201)

2.10.0 - 2022-01-12

Added

  • Add ability to use environment variables in volume paths (#192)

2.9.0 - 2021-09-15

Added

  • Add ability to specify volumes in .scuba.yml (#186)

2.8.0 - 2021-08-18

Added

  • Add ability to specify additional docker arguments in .scuba.yml (#177)

Changed

  • Switched testing framework from from nose to pytest

2.7.0 - 2020-06-08

Changed

  • Switched to using argcomplete to provide Bash command line completion (#162)

2.6.1 - 2020-04-24

Fixed

  • scubainit ignores matching passwd/group/shadow file entries when creating the user. This allows transparently running scuba as root. (#164)

  • Fixed bug where scubainit incorrectly displayed the exit status of a failed hook script. (#165)

  • Fixed bug where user home directory was not writable when scuba workdir existed below the home directory. (#169)

2.6.0 - 2020-03-25

Added

  • Add ability to override the shell in which the scuba-generated script is run, via command line option (--shell) or via .scuba.yml (#159)

  • Add ability to specify in .scuba.yml that a particular alias should run as root (#159)

2.5.0 - 2020-03-05

Changed

  • Use username/groupname of invoking user inside container (#153)

  • Ignore already existing UID/GIDs (#139)

  • Allow top-level image to be omitted in .scuba.yml (#158)

Fixed

  • Fixed deprecation error with collections.Mapping (#156)

Removed

  • Drop support for Python 2 (#154)

2.4.2 - 2020-02-24

Changed

  • Use GitHub Actions instead of Travis CI for publishing releases

2.4.1 - 2020-02-21

Added

  • Cache yaml files loaded by !from_yaml

Removed

  • Drop support for Python 3.4

2.4.0 - 2020-01-06

Added

  • Enable scuba to override entrypoint via --entrypoint or .scuba.yml (#125)

  • Add support for nested scripts (#128)

  • Add SCUBA_ROOT environment variable (#129)

  • Add support for escaped dots in !from_yml (#137)

Changed

  • Don’t run image entrypoint for each line in a mult-line alias (#121)

  • Use yaml.SafeLoader for loading config (#133)

Removed

  • Drop support for Python 2.6, 3.2, and 3.3 (#119, #130)

2.3.0 - 2018-09-10

Added

  • Add -e/–env command-line option (#111)

  • Add support for setting environment in .scuba.yml (#120)

Changed

  • Implemented auto-versioning using Git and Travis (#112)

Fixed

  • Copy scubainit to allow SELinux relabeling (#117)

2.2.0 - 2018-03-07

Changed

  • Allow script to be a single string value in the “common script schema” which applies to hooks and aliases (#102)

Fixed

  • Display nicer error message if no command is given and image doesn’t specify a Cmd (#104)

  • Don’t mangle && in scripts (#100)

  • Don’t allocate tty if stdin is redirected (#95)

2.1.0 - 2017-04-03

Added

  • Added --image option (#87)

2.0.1 - 2017-01-17

Fixed

  • Fixed image entrypoint being ignored (#83)

2.0.0 - 2016-11-21

Added

  • Added support for enhanced aliases (#67)

  • Added support for per-alias image specification (#68)

  • Add bash completion support (#69)

Changed

  • All ancillary files are bind-mounted via single temp dir

  • Hook scripts are moved to hooks/ subdirectory

  • User commands always executed via shell (#66)

  • Top-level directory mounted at same path in container (#70)

  • Alias names cannot contain spaces

  • Improve distributions (#74, #75, #76, #78)

Removed

  • Remove support for remote Docker instances (#64) Support for this was limited/broken as of 1.7.0 anyway; this officially removes support for it.

Fixed

  • Fixed inability to run an image that doesn’t yet exist locally, broken in 1.7.0 (#79)

1.7.0 - 2016-05-19

Added

  • Add support for scubainit hooks

Changed

  • scubainit re-implemented as a C program, which does the following:

    • Creates the scubauser user/group

    • Sets the umask

    • Switches users then execs the user command This is to provide more control during initialization, without the artifacts caused by the use of ‘su’ in the .scubainit from 1.3.

  • scubauser now has a proper writable home directory in the container (#45)

1.6.0 - 2016-02-06

Added

  • Add -d to pass arbitrary arguments to docker run

1.5.0 - 2016-02-01

Added

  • Add -r option to run container as root

  • Add automated testing (both unit and system tests)

  • Add support for Python 2.6 - 3.5

  • Added to PyPI

Changed

  • Scuba is now a package, and setup.py installs it as such, including an auto-generated console_script wrapper.

  • --dry-run output now shows an actual docker command-line.

  • Only pass --tty to docker if scuba’s stdout is a TTY.

Fixed

  • Better handle empty .scuba.yml and other YAML-related errors

  • Fix numerous bugs when running under Python 3

1.4.0 - 2016-01-08

Added

  • Added --verbose and --dry-run options

Removed

  • umask is no longer set in the container. (See #24)

Fixed

  • Problems introduced in v1.3.0 with Ctrl+C in images are fixed. The user command now runs as PID 1 again, as there is no more .scubainit script.

1.3.0 - 2016-01-07

Added

  • Set umask in container to the same as the host (local Docker only)

Changed

  • Change working directory from /build to /scubaroot

  • Use .scubainit script to create scubauser user/group at container startup. This avoids the oddity of running as a uid not listed in /etc/passwd, avoiding various bugs (see issue 11). (local Docker only)

1.2.0 - 2015-12-27

Added

  • Search up the directory hierarchy for .scuba.yml; this allows invoking scuba from a project subdirectory.

  • Add !from_yaml support to YAML loading; this allows specifying image from an external YAML file (e.g. .gitlab-ci.yml).

  • Add CHANGELOG.md

Changed

  • Show better error message when docker cannot be executed

1.1.2 - 2015-12-22

Fixed

  • Don’t pass --user option when remote docker is being used

1.1.1 - 2015-12-22

Fixed

  • Fix bug when aliases is not found in .scuba.yml

1.1.0 - 2015-12-20

Added

  • Support for Bash-like aliases, specified in .scuba.yml

1.0.0 - 2015-12-18

Removed

  • Remove the command node from .scuba.yml spec; it limits the usefulness of scuba by limiting the user to one command. Now command is specified on command line after scuba.

Added

  • Argument parsing to scuba (-v for version)

  • Check for and reject extraneous nodes in .scuba.yml

0.1.0 - 2015-12-09

First versioned release