1.1.10
-
Numeric
user/groupis read as a uid/gid, not a login name. In the
config schema theuser/grouptype was aStr() | Int()union, and
strictyaml matched the always-acceptingStr()first, souser: 1000
arrived as the string"1000"and was looked up as a login name
(getpwnam("1000")) rather than used as uid 1000. The union is now
Int() | Str(), so a bare number is treated as the uid/gid it looks like; a
non-numeric name (user: www-data) still falls through toStr(). (POSIX
only; per-jobuser/groupremains rejected with a configuration error on
Windows.) -
More resilient container builds. Every image build, across the default
Debian image and all seven distro variants (-alpine,-ubuntu,-rhel,
-fedora,-opensuse,-amazonlinux,-distroless), now wraps its
package-manager andpipnetwork steps in a retry-with-backoff helper,
alongside each manager's native knobs (apt'sAcquire::Retries,dnf's
--setopt=retries, an explicitzypper refreshretry, and a longer
pip --timeout), so a transient mirror or package-index hiccup retries
instead of failing the whole build. The build and test CI workflows get the
same hardening viaPIP_RETRIES/PIP_TIMEOUT, withbuild.ymlforwarding
them into its emulated cross-architecture binary builds viadocker run -e. -
The
-distrolessimage now builds foramd64/arm64only. The
gcr.io/distroless/python3-debian12base publishes noppc64leors390x
manifest, so requesting those arches aborted the distroless release with
"no match for platform in manifest". The RPM-based variants (-rhel,
-fedora,-opensuse) still cover the wider arch set. -
The README status badges also gain brand new colors
(and logos on the PyPI/Python badges). yay -
Internal: branch coverage is now measured and gated in CI (tox runs
pytest --cov-fail-under=82), backed by substantially expanded unit tests for
config and user/group validation, config reload and graceful shutdown, the
job runner, and the job-set-id fingerprint.
Full Changelog: 1.1.9...1.1.10