Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
Unreleased
Removed
Dropped support for Python 3.9 (#279)
2.14.2 - 2026-01-25
Fixed
Fixed
!from_yamlnot handling multi-document YAML files (#277) (@brxnnan)
2.14.1 - 2025-07-26
Fixed
Fixed umask being set incorrectly in the container (#274) (@haboustak)
This was broken when scubainit was rewritten in v2.13.0.
2.14.0 - 2025-06-08
Fixed
Fixed regression with Docker Enginer 28.2 (#269)
Removed
Dropped support for Python 3.7 (#242)
Dropped support for Python 3.8 (#270)
2.13.1 - 2024-05-28
Fixed
Fixed SIGPIPE disposition being set to ignore (#255)
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.tomland moved metadata fromsetup.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
nosetopytest
2.7.0 - 2020-06-08
Changed
Switched to using
argcompleteto 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.ymlthat 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
imageto 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
--entrypointor.scuba.yml(#125)Add support for nested scripts (#128)
Add
SCUBA_ROOTenvironment 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.SafeLoaderfor 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
scriptto 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
--imageoption (#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
scubainitre-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
-dto pass arbitrary arguments todocker run
1.5.0 - 2016-02-01
Added
Add
-roption to run container as rootAdd 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_scriptwrapper.--dry-runoutput now shows an actual docker command-line.Only pass
--ttyto docker if scuba’s stdout is a TTY.
Fixed
Better handle empty
.scuba.ymland other YAML-related errorsFix numerous bugs when running under Python 3
1.4.0 - 2016-01-08
Added
Added
--verboseand--dry-runoptions
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
.scubainitscript.
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
/buildto/scubarootUse
.scubainitscript to createscubauseruser/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_yamlsupport 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
--useroption when remote docker is being used
1.1.1 - 2015-12-22
Fixed
Fix bug when
aliasesis 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
commandnode from.scuba.ymlspec; 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