Koji 1.34.0 Release notes ========================= All changes can be found in `the roadmap `_. Most important changes are listed here. Check at least :ref:`scheduler ` and :ref:`draft builds ` as the crucial changes in this release. Migrating from Koji 1.33/1.33.1 ------------------------------- For details on migrating see :doc:`../migrations/migrating_to_1.34` Security Fixes -------------- None Client Changes -------------- **Fix [still active] display for edit entries** Not all active settings were correctly marked in ``list-history`` output. | PR: https://pagure.io/koji/pull-request/3813 **Streamline python/json options in call command** | PR: https://pagure.io/koji/pull-request/3846 Coherent usage of ``--json/--json-input/--json-output`` options. **Handle hub w/o getKojiVersion in cancel tasks** | PR: https://pagure.io/koji/pull-request/3889 Don't fail ``cancel`` command when used against old koji server. **Fix wait-repo message when missing builds** | PR: https://pagure.io/koji/pull-request/3915 Clarify message. **list-permissions: backward compatibility for getUserPermsInheritance call** | PR: https://pagure.io/koji/pull-request/3960 **Read config file on image build indirection** | PR: https://pagure.io/koji/pull-request/3929 Option ``--config`` was already there, but it was doing nothing. Now, user can pass all the options via config file similarly to the "classical" image build. API Changes ----------- **Unify getSessionInfo output** | PR: https://pagure.io/koji/pull-request/3794 | PR: https://pagure.io/koji/pull-request/3927 Different fields were returned when ``getSessionInfo`` was called with ``details=True``. Now, same base fields are returned in both cases. **Remove koji.AUTHTYPE_* in 1.34** | PR: https://pagure.io/koji/pull-request/3818 These constants were deprecated while ago, use ``koji.AUTHTYPES`` enum instead. **Extend getUser to get user groups** | PR: https://pagure.io/koji/pull-request/3855 Additional ``groups`` option to get info about user's group membership. **Short option for watch-logs --follow** | PR: https://pagure.io/koji/pull-request/3884 Added ``-f`` as an alias for ``--follow``. System Changes -------------- .. _scheduler: **Scheduler part 1** | PR: https://pagure.io/koji/pull-request/3772 | PR: https://pagure.io/koji/pull-request/3977 | PR: https://pagure.io/koji/pull-request/3980 Biggest change in this release. We're rewriting scheduler to allow better utilization of builders and to have better control about what is built where and when. This is the first part of the changes and it moves scheduling responsibilities from builder to hub and unified queue. This phase is transparent to administrators and users (even older builders are provided "fake" API, so they can benefit from new hub code without noticing). Two new CLI commands ``scheduler-info`` and ``scheduler-logs`` can be used to gain insights to scheduler state. Also there are some new options for hub to modify scheduler behaviour and ``koji-sweep-db`` is updated, so it can clean old scheduler logs. In the next phase there should be added multi-target policies, concept of builder resources, etc. which would allow fine-tuning of build requests. Crude channels' logic then could be replaced by scheduler hints and hard limits for selecting right builder. **Remove get_sequence_value in 1.34** | PR: https://pagure.io/koji/pull-request/3817 Deprecated ``get_sequence_value`` was finally removed. This could be of some interest to plugin developers. **Add support for sw_64 and loongarch64** | PR: https://pagure.io/koji/pull-request/3836 Simple extension to support these architectures. **Don't spawn createrepo if not needed** | PR: https://pagure.io/koji/pull-request/3842 Performance improvement in some cases where it is not needed to rerun createrepo when creating new tag (typically sidetag or some build tag which doesn't modify its inherited content). Simple copy of the original repodata is correct here. **Package migration scripts to koji-hub** | PR: https://pagure.io/koji/pull-request/3843 | PR: https://pagure.io/koji/pull-request/3920 Previously, these scripts were packaged with basic lib. It doesn't make much sense, so they were moved to hub subpackage. You can find them now in ``/usr/share/koji`` there. **Inherit group permissions** | PR: https://pagure.io/koji/pull-request/3850 Intuitive understanding of group membership is to inherit everything what is accessible via group inheritance. **Fix user_in_group policy test** | PR: https://pagure.io/koji/pull-request/3859 Bugfix of regression. **Disable use_bootstrap_image if not requested** | PR: https://pagure.io/koji/pull-request/3873 Mock's default behaviour changed to have this setting on by default. So, we've extended our flag to allow also disabling this. **new_build: build in error should be the old one** | PR: https://pagure.io/koji/pull-request/3895 Error message was fixed to show correct data. .. _draft-builds: **Draft builds** | PR: https://pagure.io/koji/pull-request/3913 Another big change in this release. Builds (rpm only for now) can be run with ``--draft`` option to mark it as a draft. Draft builds should not be confused with scratch builds. Scratch builds are simply stored as files and cannot be tagged in Koji. Draft builds, on the other hand, are actual builds with a modified release value and the ``draft`` flag set to True. Koji appends a draft suffix of ``,draft{build_id}`` to the release for the build entry. This allows building multiple drafts for the same NVR. This release change is done only on the build level. The RPM components of the build are not modified when creating a draft build. The system will now allow overlapping rpm NVRA values, but only for draft builds. Draft builds can be "promoted" to non-draft using the ``promote-build`` cli command. The promoted build is renamed to remove the draft suffix. The original file path is replaced with a symlink to the new location. This is a one-time transition, i.e. builds cannot be "unpromoted". Only one draft build for a given NVR can be promoted, and once Koji has a non-draft build for a given NVR, further draft builds for that NVR are blocked. Typical use would be PR/MR workflow. There could be many "candidate" draft builds and only one which will pass testing and/or other workflows will be promoted in the end as "real" build which can be used for distribution. Handling of when/where draft builds can be used (e.g. in some buildroots but not in the others) is done by ``is_draft`` policy test. **Retrieve task_id for older OSBS builds** | PR: https://pagure.io/koji/pull-request/3897 It is hidden for regular usecases, but improves policy behaviour, e.g. that `volume` policy can handle builds based on CG, etc. **Raise an error on missing build directory (setBuildVolume)** | PR: https://pagure.io/koji/pull-request/3886 Better error reporting in case of missing build directories. **More general CG import logging** | PR: https://pagure.io/koji/pull-request/3905 Fixes race condition when creating CG log. **queryOpts for queryHistory** | PR: https://pagure.io/koji/pull-request/3902 Adding support for standard ``queryOpts`` to this call. **fix task_id extraction for missing extra** | PR: https://pagure.io/koji/pull-request/3935 OSBS task now pass correct task data to volume policy Builder Changes --------------- **Switch to WatchedFileHandler for logger** | PR: https://pagure.io/koji/pull-request/3537 Logrotate sometimes caused that kojid/kojira output was appended to already rotated (even deleted) file. Change to ``WatchedFileHandler`` will ensure that correct file is used. **Wait with writing timestamps after results dir is created** | PR: https://pagure.io/koji/pull-request/3834 ``log_timestamps`` feature in some cases tried to write logs into directory which hasn't existed yet causing build to fail from unrelated reasons. **distrepo will not skip rpm stat by default** | PR: https://pagure.io/koji/pull-request/3838 Reusing repodata with distrepo is dangerous as rpms could be signed with different keys. So, now the default behaviour is to always stat rpms to be sure that they don't differ from cached metadata. This behaviour can be overriden by ``--skip-stat`` CLI option. Note that you've to be sure what you're doing in such case (typically you don't care about signatures in this repo). **Clean rpm db directory of broken symlinks** | PR: https://pagure.io/koji/pull-request/3893 (At least) Fedora is moving rpm database directory. We've previously checked existence of ``.migrated`` file but it is not enough in some transient environments. Host rpm and buildroot rpm could handle these directories differently resulting in bogus files preventing one of these to work. So, this "hack" is cleaning up potentially broken files. Kojira ------ **kojira no_repo_effective_age setting** | PR: https://pagure.io/koji/pull-request/3830 New build tags (without repos) were not prioritized by kojira in best way. Kojira assumed that this tag was never used, so it had very low priority. New setting allows to set default "last use" value to improve the situation. Web UI ------ **Better handling of deleted tags in kojiweb** | PR: https://pagure.io/koji/pull-request/3828 Display deleted tags properly on all web pages. **Fix duplicate build link on CG taskinfo page** | PR: https://pagure.io/koji/pull-request/3857 Multiple ways how to store CG's ``task_id`` led to situation when task was displayed twice. **Display two decimal points for the task load in hosts page** | PRL https://pagure.io/koji/pull-request/3911 Some floats were too long, stripped to two digits. **Sort channels on hosts page** | PR: https://pagure.io/koji/pull-request/3894 More readability in selectors. Plugins ------- **create initial repo for sidetag** | PR: https://pagure.io/koji/pull-request/3841 ``trigger_new_repo`` is new setting for sidetag plugin. When it is set to true, it will trigger ``newRepo`` task as part of new sidetag creation. If it is not set, old way (leave it on kojira) is used. **sidetag: extend is_sidetag_owner for untag ops** | PR: https://pagure.io/koji/pull-request/3851 ``is_sidetag_owner`` policy has now ``tag/fromtag/both`` optional keywords for tag specification. **kiwi: Sort image rpm components before inserting** | PR: https://pagure.io/koji/pull-request/3882 There is a potential db deadlock which is avoided by this reordering. Documentation ------------- **Fix docstring getTaskInfo** | PR: https://pagure.io/koji/pull-request/3726 **More XMLRPC-related docs** | PR: https://pagure.io/koji/pull-request/3761 **Fix release notes version** | PR: https://pagure.io/koji/pull-request/3832 **Explain _ord() method** | PR: https://pagure.io/koji/pull-request/3835 **readTaggedRPMS/Builds API documentation** | PR: https://pagure.io/koji/pull-request/3840 **Fix param in createImageBuild docstring** | PR: https://pagure.io/koji/pull-request/3876 **Example of how to enable a module via mock.module_setup_commands** | PR: https://pagure.io/koji/pull-request/3879 **Update docstring for listPackages** | PR: https://pagure.io/koji/pull-request/3904 **Fix return type (chainBuild)** | PR: https://pagure.io/koji/pull-request/3924 Devtools and tests ------------------ **Basic vim syntax highlighting for hub policy** | PR: https://pagure.io/koji/pull-request/3839 It can be used for editing hub policies. As it has no rigorous syntax it doesn't work in 100%. **Tox: Don't install coverage every run** | PR: https://pagure.io/koji/pull-request/3861 A bit of performance improvement for running tests. **Fix tests/flake8** | PR: https://pagure.io/koji/pull-request/3865 | PR: https://pagure.io/koji/pull-request/3917 **Update Containerfiles** | PR: https://pagure.io/koji/pull-request/3898 Updated to current Fedoras