Koji 1.14 Release Notes¶
Migrating from Koji 1.13¶
For details on migrating see Migrating to Koji 1.14
Client Changes¶
Fail fast option for builds¶
When builders are configured with build_arch_can_fail = True
then the
failure of a single buildArch task does not immediately cause the build
to fail. Instead, the remaining buildArch tasks are allowed to complete,
at which point the build will still fail.
Sometimes developers would rather a build fail immediately, so we have added
the --fail-fast
option to the build command, which overrides this setting.
The option only has an effect if the builders are configured to fail slow.
Custom Lorax templates¶
Koji now supports custom Lorax templates for the spin-livemedia
command.
The command accepts two new options:
--lorax_url=URL The URL to the SCM containing any custom lorax
templates that are to be used to override the default
templates.
--lorax_dir=DIR The relative path to the lorax templates directory
within the checkout of "lorax_url".
The Lorax templates must come from an SCM, and the allowed_scms
rules
apply.
When these options are used, the templates will be fetched and an appropriate
--lorax-templates
option will be passed to the underlying livemedia-creator
command.
Allow profiles to request a specific python version¶
On platforms with python3 available, the Koji client is built to execute with the python3 binary. However, there are a few client features that do not work under python3, notably old-style (non-gssapi) Kerberos authentication.
If this issue is affecting you, you can set pyver=2
in your Koji
configuration. This can be done per profile. When Koji sees this setting
at startup, it will re-execute itself under the requested python binary.
New list-builds command¶
The command line now has a list-builds
command that has similar
functionality to the builds tab of the web interface.
Usage: koji list-builds [options]
(Specify the --help global option for a list of other help options)
Options:
-h, --help show this help message and exit
--package=PACKAGE List builds for this package
--buildid=BUILDID List specific build from ID or nvr
--before=BEFORE List builds built before this time
--after=AFTER List builds built after this time
--state=STATE List builds in this state
--type=TYPE List builds of this type.
--prefix=PREFIX Only list packages starting with this prefix
--owner=OWNER List builds built by this owner
--volume=VOLUME List builds by volume ID
-k FIELD, --sort-key=FIELD
Sort the list by the named field
-r, --reverse Print the list in reverse order
--quiet Do not print the header information
New block-group command¶
The block-group
command allows admins to block package group entries
without having to resort to the call
command.
Usage: koji block-group <tag> <group>
(Specify the --help global option for a list of other help options)
Options:
-h, --help show this help message and exit
Exit codes for some commands¶
Several more commands will now return a non-zero exit code when an error occurs:
the various image building commands
the
save-failed-tree
command (provided by a plugin)
Easier for scripts to use activate_session¶
In Koji 1.13.0, it became possible for scripts to import koji_cli.lib
and
gain access to the activate_session
function that the command line tool
uses to authenticate.
In this release, this function has been made easier for scripts to use:
the options argument can now be a dictionary
less options need to be specified
Builder changes¶
Normalize paths for scms¶
For many years, kojid has supported the allowed_scms
option
(see: Source Control Configuration) for controlling which scms can be used for building.
In 1.13.0, Koji added the ability to explicitly block a host:path pattern.
Unfortunately, 1.13.0 did not normalize the path before checking the pattern, making it possible for users to use equivalent paths to route around the block patterns.
Now, Koji will normalize these paths before the allowed_scms
check.
Graceful reload¶
For a long time kojid has handled the USR1 signal by initiating a graceful restart. This change exposes that in the systemd service config (and the init script on older platforms).
Now, service kojid reload
will trigger the same sort of restart that the
restart-hosts
command accomplishes, but only for the build host you run it
on. When this happens, kojid will:
stop taking new tasks
wait for current tasks to finish
restart itself once all its tasks are completed
Friendlier runroot configuration¶
Two changes make it easier to write a configuration for the runroot plugin.
The path_subs
option is now more forgiving about whitespace:
leading and trailing whitespace is ignored for each line
blank lines are ignored
The [pathNN]
sections are no longer required to have sequential numbers.
Previously, the plugin expected a sequence like [path0]
, [path1]
,
[path2]
, etc, and would stop looking for entries if the next number
was missing. Now, any set of distinct numbers is valid and all [pathNN]
sections will be processed.
System changes¶
Deprecations¶
The following features are deprecated and will be removed in a future release:
the
importBuildInPlace
rpc callthe
use_old_ssl
client configuration option (and the underlyingkoji.compatrequests
library)
Removed calls¶
The deprecated buildFromCVS
hub call has been removed. It was replaced
by the buildSRPMFromCVS
call many years ago and has been deprecated since
version 1.6.0.
The add_db_logger
function has been removed from the koji library, along
with the log_messages
table in the db. This extraneous call has never been
used in Koji.
Dropped mod_python support¶
Koji no longer supports mod_python. This option has been deprecated since mod_wsgi support was added in version 1.7.0.
See also: Migrating to Koji 1.7
Large integer support¶
Koji uses xmlrpc for communications with the hub, and unfortunately the baseline xmlrpc standard only supports 32-bit signed integers. This results in errors when larger integers are encountered, typically when a file is larger than 2 GiB.
Starting with version 1.14.0, Koji will emit i8
tags when encoding
large integers for xmlrpc. Integers below the limit are still encoded
with the standard int
tag. The only time this makes a difference
is when Koji would previously have raised an OverflowError
.
The i8
tag comes from the
ws-xmlrpc
spec. Python’s xmlrpc decoder has
for many years accepted and understood this tag, even though its encoder
would not emit it.
Previous versions of Koji worked around such size issues by converting large integers to strings in a few targeted places. Those targeted workarounds have been left in place on the hub for the sake of backward compatibility.
Test mode for protonmsg plugin¶
The protonmsg
plugin now accepts a boolean test_mode
configuration
option. When this option is enabled, the plugin will not actually
send messages, but will instead log them (at the DEBUG level).
This option allows testing environments to run with the plugin enabled, but without requiring a message bus to be set up for that environment.
Handling of debugsource rpms¶
Koji will now treat rpms ending in -debugsource
the same way that it does
other debuginfo rpms. Such rpms are:
omitted from Koji’s normal yum repos
listed separately when displaying builds
not downloaded by default in the
download-build
command
Added kojifile component type for content generators¶
Content generator imports now accept entries with type equal to kojifile
in the component lists for buildroots and images/archives. This type provides
a more reliable way to reference archive that come from Koji.
See: Example metadata.