diff --git a/docs/source/migrations/migrating_to_1.34.rst b/docs/source/migrations/migrating_to_1.34.rst new file mode 100644 index 00000000..eb004a15 --- /dev/null +++ b/docs/source/migrations/migrating_to_1.34.rst @@ -0,0 +1,22 @@ +Migrating to Koji 1.34 +====================== + +You should consider the following changes when migrating to 1.34: + +DB Updates +---------- + +There is a simple schema change adding new index. + +As in previous releases, we provide a migration script that updates the database. + +:: + + # psql koji koji < /usr/share/doc/koji/docs/schema-upgrade-1.33-1.34.sql + + +Other changes +------------- + +There are numerous other changes in 1.34 that should not have a direct impact on migration. For +details see: :doc:`../release_notes/release_notes_1.34` diff --git a/docs/source/migrations/migrations.rst b/docs/source/migrations/migrations.rst index 7b4ba9c7..3f8c8eb1 100644 --- a/docs/source/migrations/migrations.rst +++ b/docs/source/migrations/migrations.rst @@ -5,6 +5,7 @@ Migrations .. toctree:: :maxdepth: 1 + migrating_to_1.34 migrating_to_1.33 migrating_to_1.32 migrating_to_1.31 diff --git a/docs/source/release_notes/release_notes.rst b/docs/source/release_notes/release_notes.rst index 5a244c86..b929ef49 100644 --- a/docs/source/release_notes/release_notes.rst +++ b/docs/source/release_notes/release_notes.rst @@ -5,6 +5,7 @@ Release Notes .. toctree:: :maxdepth: 1 + release_notes_1.34 release_notes_1.33.1 release_notes_1.33 release_notes_1.32.1 diff --git a/docs/source/release_notes/release_notes_1.34.rst b/docs/source/release_notes/release_notes_1.34.rst new file mode 100644 index 00000000..185c6268 --- /dev/null +++ b/docs/source/release_notes/release_notes_1.34.rst @@ -0,0 +1,395 @@ + +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 + +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 for now) can be run with +``--draft`` option. It is different from scratch build in the way that it is +1st class build with modified release (containing "-draft-" suffix). +Nevertheless, this release change is done only on build level. RPMs are using +original release, so they are indistunguishible from other draft builds for +same NVR. Such behaviour violates rules that there are no two rpms with the +same filename. That is the reason, why they are called "draft builds". + +To bring them back to uniqueness, such build can be "promoted". In such case it +is renamed to original release and all other draft builds from given NVR are +forever forbidden to be promoted. + +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. + +Draft builds could be viewed as "light namespacing" in koji or "more persistent +scratch builds". + +**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 is the default behaviour 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 diff --git a/koji.spec b/koji.spec index c973233c..fe7f0e32 100644 --- a/koji.spec +++ b/koji.spec @@ -83,7 +83,7 @@ %define release %{baserelease} %endif Name: koji -Version: 1.33.1 +Version: 1.34.0 Release: %{release}%{?dist} License: LGPL-2.1-only and GPL-2.0-or-later # the included arch lib from yum's rpmUtils is GPLv2+ @@ -649,6 +649,66 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Wed Jan 10 2024 Tomas Kopecek - 1.34.0-1 +- PR#3537: Switch to WatchedFileHandler for logger +- PR#3726: fix docstring getTaskInfo +- PR#3761: doc: More XMLRPC-related docs +- PR#3772: Scheduler part 1 +- PR#3794: Unify getSessionInfo output +- PR#3813: list-history: fix [still active] display for edit entries +- PR#3817: Remove get_sequence_value in 1.34 +- PR#3818: Remove koji.AUTHTYPE_* in 1.34 +- PR#3828: better handling of deleted tags in kojiweb +- PR#3830: kojira no_repo_effective_age setting +- PR#3832: fix release notes version +- PR#3835: explain _ord() method +- PR#3838: distrepo will not skip rpm stat by default +- PR#3841: create initial repo for sidetag +- PR#3842: Don't spawn createrepo if not needed +- PR#3843: Package migration scripts to koji-hub +- PR#3850: Inherit group permissions +- PR#3851: sidetag: extend is_sidetag_owner for untag ops +- PR#3855: Extend getUser to get user groups +- PR#3859: Fix user_in_group policy test +- PR#3861: tox: Don't install coverage every run +- PR#3865: fix tests/flake8 +- PR#3873: disable use_bootstrap_image if bot requested +- PR#3876: fix param in createImageBuild docstring +- PR#3879: Example of how to enable a module via mock.module_setup_commands +- PR#3882: Sort image rpm components before inserting +- PR#3884: short option for watch-logs --follow +- PR#3886: Raise an error on missing build directory +- PR#3888: kojid: Fix mock_bootstrap_image parameter name in the default config +- PR#3889: cli: handle hub w/o getKojiVersion in cancel tasks +- PR#3893: Clean rpm db directory of broken symlinks +- PR#3894: Sort channels on hosts page +- PR#3895: hub: new_build: build in error should be the old one +- PR#3897: Retrieve task_id for older OSBS builds +- PR#3898: Update Containerfiles +- PR#3902: queryOpts for queryHistory +- PR#3904: Update docstring for listPackages +- PR#3905: More general CG import logging +- PR#3911: Display two decimal points for the task load in hosts page +- PR#3913: draft builds +- PR#3915: cli: fix wait-repo message when missing builds +- PR#3917: fix tests +- PR#3920: Move migration script to new location +- PR#3924: fix return type +- PR#3927: more getSessionInfo updates +- PR#3929: Read config file on image build indirection +- PR#3935: fix task_id extraction for missing extra +- PR#3938: Update the CERN koji description +- PR#3940: Remove six.configparser.SafeConfingParser from tests +- PR#3946: fix flake8 errors +- PR#3948: fix arg passing in exclusiveSession +- PR#3949: docstring typo +- PR#3957: Fix test +- PR#3960: cli: [list-permissions] backward compatibility for getUserPermsInheritance call +- PR#3965: Fix unittests for python-mock-5.x +- PR#3977: handle new task refs in clean_scratch_tasks +- PR#3980: task assign overrides +- PR#3983: test_cg_importer.py: avoid creating temp files in checkout + * Tue Jul 11 2023 Tomas Kopecek - 1.33.1-1 - PR#3834: wait with writing timestamps after results dir is created - PR#3836: add support for sw_64 and loongarch64 diff --git a/koji/_version.py b/koji/_version.py index 66918541..d2a9984b 100644 --- a/koji/_version.py +++ b/koji/_version.py @@ -1,2 +1,2 @@ -__version_info__ = (1, 33, 1) +__version_info__ = (1, 34, 0) __version__ = '.'.join([str(x) for x in __version_info__])