From 03b895636edbb2ac9bf5d14ebe97c6d2208c15c9 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 1/6] bump release and add changelog entry --- diff --git a/koji.spec b/koji.spec index fff4dfe..b065eae 100644 --- a/koji.spec +++ b/koji.spec @@ -31,7 +31,7 @@ %define release %{baserelease} %endif Name: koji -Version: 1.12.0 +Version: 1.13.0 Release: %{release}%{?dist} License: LGPLv2 and GPLv2+ # koji.ssl libs (from plague) are GPLv2+ @@ -472,6 +472,57 @@ fi %endif %changelog +* Fri Jun 30 2017 Mike McLean - 1.13.0-1 +- PR#400 per-tag configuration of chroot mock behaviour +- PR#480 koji_cli name interferes with new library +- PR#475 fix StringType and itervalues in plugin and cli +- PR#476 provide a temporary workdir for restart task unit tests +- PR#477 update .gitignore +- PR#465 Don't allow not-null empty arch/userID in listHosts +- PR#471 Rework build log display in web ui +- PR#472 New features for restart-hosts command +- PR#474 propagate task.assign return value +- PR#353 add pre/postSCMCheckout plugin_callbacks +- PR#199 CLI plugins +- PR#449 Make sure to fix encoding all RPM Headers +- PR#442 list-channels CLI command +- PR#445 log failed plugin +- PR#441 document easier bootstrap for groups +- PR#438 Fix traceback for missing update +- PR#453 honor --quiet in list-tagged +- PR#448 Fix python3 deps +- PR#450 epel-compatible python3 macros +- PR#444 require mod_auth_gssapi instead of mod_auth_kerb where applicable +- PR#434 devtools: fakehub and fakeweb +- PR#447 python3 docs update +- PR#417 Python3 support for CLI + XMLRPC client +- PR#421 Extend allowed_scms format to allow explicit blocks +- PR#424 handle task fault results in download-logs +- PR#431 don't inspect results for failed createImage tasks +- PR#430 note about where API docs are found +- PR#403 fixEncoding for changelogs +- PR#402 parse deleted mountpoints +- PR#418 use old tarfile arguments +- PR#422 doc: use `tag-build` instead of alias cmd `tag-pkg` +- PR#404 XZ threads are very bad about memory, so use only two threads. +- PR#408 Support proxyuser=username in krbLogin +- PR#411 Replace references to cvs with modern git examples +- PR#381 use /etc/ in the spec file +- PR#380 Make raw-xz faster by using xz threads +- PR#397 missing argument +- PR#399 Added hostinfo command to cli +- PR#401 add default_md to docs (ssl.cnf) +- PR#394 link to kojiji (Koji Java Interface) +- PR#388 Increase 50 character limit of tag names +- PR#352 Optional JSON output for 'koji call' +- PR#393 remove minor version from User-Agent header +- PR#372 update jenkins config +- PR#375 raise error on non-existing profile +- PR#382 update the 1.11 to 1.12 upgrade schema for BDR +- PR#384 Pull in some get_header_fields enhancements from Kobo +- PR#378 Couple of small fixes to the koji documentation +- PR#385 allow kojid to start when not using ssl cert auth + * Tue Apr 18 2017 Mike McLean - 1.12.0-1 - PR#373 backward-compatible try/except - PR#365 handle buildroots with state=None From ae078d22851ac0e9eb12fa26414af1da1b0b58d1 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 2/6] first stab at release notes --- diff --git a/docs/profiles.rst b/docs/profiles.rst deleted file mode 100644 index 0ca56c2..0000000 --- a/docs/profiles.rst +++ /dev/null @@ -1,74 +0,0 @@ -============= -Koji Profiles -============= -This document describes how to work with koji profiles. - - -Command Line Interface -====================== -Koji client allows connecting to multiple koji instances from CLI -by using profiles. The default profile is given by executable file name, -which is 'koji'. - -To change koji profile, you can: - - * run koji with --profile=$profile_name argument - * change executable file name by symlinking $profile_name -> koji - - -Configuration Files -=================== -Configuration files are located in following locations: - - * /etc/koji.conf - * /etc/koji.conf.d/\*.conf - * ~/.koji/config.d/\*.conf - * user-specified config - -Koji reads them, looking for [$profile_name] sections. - - -Using Koji Profiles in Python -============================= -Instead of using koji module directly, -get profile specific module by calling:: - - >>> mod = koji.get_profile_module($profile_name) - -This module is clone of koji module with additional -profile specific tweaks. - -Profile configuration is available via:: - - >>> mod.config - - -Example -------- - -Print configuration:: - - import koji - - fedora_koji = koji.get_profile_module("koji") - ppc_koji = koji.get_profile_module("ppc-koji") - - for i in (fedora_koji, ppc_koji): - print("PROFILE: %s" % i.config.profile) - for key, value in sorted(i.config.__dict__.items()): - print(" %s = %s" % (key, value)) - print("") - - -Use ClientSession:: - - import koji - - koji_module = koji.get_profile_module("koji") - client = koji_module.ClientSession(koji_module.config.server) - print(client.listTags()) - - -TODO -==== -* consider using pyxdg for user config locations diff --git a/docs/source/index.rst b/docs/source/index.rst index 9a6539e..398e03f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -31,6 +31,7 @@ Contents server_bootstrap server_howto using_the_koji_build_system + profiles plugins writing_a_plugin writing_koji_code diff --git a/docs/source/migrating_to_1.13.rst b/docs/source/migrating_to_1.13.rst new file mode 100644 index 0000000..e2246a6 --- /dev/null +++ b/docs/source/migrating_to_1.13.rst @@ -0,0 +1,54 @@ +Migrating to Koji 1.13 +====================== + +.. + reStructured Text formatted + +The 1.13 release of Koji includes a several changes that you should consider when +migrating. + +DB Updates +---------- + +We have increased the length limit for tag names and there is a minor schema +change to support this. + +As in previous releases, we provide a migration script that updates the +database. + +:: + + # psql koji koji koji + + +Configuration Files +=================== +Configuration files are located in following locations: + + * /etc/koji.conf + * /etc/koji.conf.d/\*.conf + * ~/.koji/config.d/\*.conf + * user-specified config + +Koji reads them, looking for [$profile_name] sections. + + +Using Koji Profiles in Python +============================= +Instead of using koji module directly, +get profile specific module by calling:: + + >>> mod = koji.get_profile_module($profile_name) + +This module is clone of koji module with additional +profile specific tweaks. + +Profile configuration is available via:: + + >>> mod.config + + +Example +------- + +Print configuration:: + + import koji + + fedora_koji = koji.get_profile_module("koji") + ppc_koji = koji.get_profile_module("ppc-koji") + + for i in (fedora_koji, ppc_koji): + print("PROFILE: %s" % i.config.profile) + for key, value in sorted(i.config.__dict__.items()): + print(" %s = %s" % (key, value)) + print("") + + +Use ClientSession:: + + import koji + + koji_module = koji.get_profile_module("koji") + client = koji_module.ClientSession(koji_module.config.server) + print(client.listTags()) + + +TODO +==== +* consider using pyxdg for user config locations diff --git a/docs/source/release_notes_1.13.rst b/docs/source/release_notes_1.13.rst new file mode 100644 index 0000000..4cbd432 --- /dev/null +++ b/docs/source/release_notes_1.13.rst @@ -0,0 +1,175 @@ +Koji 1.13 Release Notes +======================= + +Migrating from Koji 1.12 +------------------------ + +For details on migrating see :doc:`migrating_to_1.13` + + +Changes to the Web interface +---------------------------- + +Build Log Display +^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/471 + +The build info pages now display the log files for a build (instead of linking +directly to the directory on the download server). This works for all builds, +including those imported by content generators. + + +UNSORTED +-------- + +Configuring mock chroot behavior +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/400 +Issue: https://pagure.io/koji/issue/398 + +Koji now supports using mock's --new-chroot option on a per-tag basis. +For details see: :ref:`tuning-mock-per-tag` + + +Enhancements to restart-hosts +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/472 + + +The `restart-hosts` command is used by admins to safely restart the build hosts +after a configuration change. + +Because multiple restarts can confict, the command will now exit with a error +if a restart is already underway (can be overridden with --force). + +There are now options to limit the restart to a given channel or arch. + +The command now has a timeout option, which defaults to 24hrs. + + +pre/postSCMCheckout callbacks +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The callback interface is used by plugins to hook into various Koji operations. +With this release we have added callbacks in the builder daemon for before and +after source checkout: ``preSCMCheckout`` and ``postSCMCheckout``. + + +CLI Plugins +^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/199 + +The command line interface now has basic plugin support. The intended use case +is for plugins to be able to add new subcommands. +For details see: :ref:`plugin-cli-command` + + +list-channels CLI command +^^^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/442 + +The new `list-channels` command lists the known channels for the system. + +:: + Usage: koji list-channels + (Specify the --help global option for a list of other help options) + + Options: + -h, --help show this help message and exit + --quiet Do not print header information + + +hostinfo CLI command +^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/399 +Issue: https://pagure.io/koji/issue/364 + +The new ``hostinfo`` command shows basic information about a build host, +similar to the web interface. + +:: + + Usage: lkoji hostinfo [options] [ ...] + (Specify the --help global option for a list of other help options) + + Options: + -h, --help show this help message and exit + + +mod_auth_gssapi required +^^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/444 + +On modern platforms, both koji-hub and koji-web now require +mod_auth_gssapi instead of mod_auth_kerb. + + +Python 3 client support +^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/417 + +The koji command and core library now support Python 3 (as well as 2). The +default spec now produces both `python2-koji` and `python3-koji` subpackages. +The `koji` package still contains the (now much smaller) `/usr/bin/koji` file. + +Some older features are not supported by the Python 3 client + + * the `use_old_ssl` option is not supported, python-requests must be used + * the old kerberos auth mechanism is not supported, use gssapi + + +Extended allowed_scms format +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/421 + +The allowed_scms option now accepts entries like: + +:: + + !host:repository + +to explicitly block a host:repository pattern. + +See also: :ref:`scm-config` + + + +Longer tag names +^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/388 +Issue: https://pagure.io/koji/issue/369 + +Previously, tag names were limited to 50 characters. They are now limited +to 256 characters. + + +User-Agent header +^^^^^^^^^^^^^^^^^ + +PR: https://pagure.io/koji/pull-request/393 +Issue: https://pagure.io/koji/issue/392 + +Previously the Koji client library reported a confusingly out-of-date value +in the `User-Agent` header. Now it simply reports the major version. + + +raise error on non-existing profile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +https://pagure.io/koji/pull-request/375 +https://pagure.io/koji/issue/370 + +If the requested client profile is not configured, the library will raise an +error, rather than proceeding with default values. + +See also: :doc:`profiles` diff --git a/docs/source/server_howto.rst b/docs/source/server_howto.rst index 1bd9747..f3786d2 100644 --- a/docs/source/server_howto.rst +++ b/docs/source/server_howto.rst @@ -1104,6 +1104,8 @@ By default it will look for the Kerberos keytab in ``/etc/kojid/kojid.keytab`` Kojid will not attempt kerberos authentication to the koji-hub unless the username field is commented out +.. _scm-config: + Source Control Configuration ---------------------------- diff --git a/docs/source/using_the_koji_build_system.rst b/docs/source/using_the_koji_build_system.rst index d40e4af..31f53c0 100644 --- a/docs/source/using_the_koji_build_system.rst +++ b/docs/source/using_the_koji_build_system.rst @@ -403,6 +403,9 @@ for example to get the latest buildroot for dist-f12-build run you will need to pass in --topurl=https://kojipkgs.fedoraproject.org/ to any mock-config command to get a working mock-config from fedoras koji. + +.. _tuning-mock-per-tag: + Tuning mock's behaviour per tag ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/writing_a_plugin.rst b/docs/source/writing_a_plugin.rst index 69ea1de..9fa7f09 100644 --- a/docs/source/writing_a_plugin.rst +++ b/docs/source/writing_a_plugin.rst @@ -189,6 +189,9 @@ tagging a build: $ koji tag-build mytag mypkg-1.0-1 + +.. _plugin-cli-command: + New command for CLI ------------------- From 39819911bb504f266ab1327dcd1d1587d5cbd43f Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 3/6] reorganize the 1.13 release notes a bit --- diff --git a/docs/source/migrating_to_1.13.rst b/docs/source/migrating_to_1.13.rst index e2246a6..4648fbf 100644 --- a/docs/source/migrating_to_1.13.rst +++ b/docs/source/migrating_to_1.13.rst @@ -21,34 +21,29 @@ database. # psql koji koji [ ...] (Specify the --help global option for a list of other help options) @@ -101,35 +67,78 @@ similar to the web interface. Options: -h, --help show this help message and exit +Enhancements to restart-hosts +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -mod_auth_gssapi required -^^^^^^^^^^^^^^^^^^^^^^^^ +| PR: https://pagure.io/koji/pull-request/472 -PR: https://pagure.io/koji/pull-request/444 +The `restart-hosts` command is used by admins to safely restart the build hosts +after a configuration change. -On modern platforms, both koji-hub and koji-web now require -mod_auth_gssapi instead of mod_auth_kerb. +Because multiple restarts can confict, the command will now exit with a error +if a restart is already underway (can be overridden with --force). +There are now options to limit the restart to a given channel or arch. -Python 3 client support -^^^^^^^^^^^^^^^^^^^^^^^ +The command now has a timeout option, which defaults to 24hrs. -PR: https://pagure.io/koji/pull-request/417 +User-Agent header +^^^^^^^^^^^^^^^^^ -The koji command and core library now support Python 3 (as well as 2). The -default spec now produces both `python2-koji` and `python3-koji` subpackages. -The `koji` package still contains the (now much smaller) `/usr/bin/koji` file. +| PR: https://pagure.io/koji/pull-request/393 +| Issue: https://pagure.io/koji/issue/392 -Some older features are not supported by the Python 3 client +Previously the Koji client library reported a confusingly out-of-date value +in the ``User-Agent`` header. Now it simply reports the major version. - * the `use_old_ssl` option is not supported, python-requests must be used - * the old kerberos auth mechanism is not supported, use gssapi +raise error on non-existing profile +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +https://pagure.io/koji/pull-request/375 +https://pagure.io/koji/issue/370 + +If the requested client profile is not configured, the library will raise an +error, rather than proceeding with default values. + +See also: :doc:`profiles` + + +Changes to the Web interface +---------------------------- + +Build Log Display +^^^^^^^^^^^^^^^^^ + +| PR: https://pagure.io/koji/pull-request/471 + +The build info pages now display the log files for a build (instead of linking +directly to the directory on the download server). This works for all builds, +including those imported by content generators. + + +Builder changes +--------------- + +Configuring mock chroot behavior +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| PR: https://pagure.io/koji/pull-request/400 +| Issue: https://pagure.io/koji/issue/398 + +Koji now supports using mock's --new-chroot option on a per-tag basis. +For details see: :ref:`tuning-mock-per-tag` +pre/postSCMCheckout callbacks +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The callback interface is used by plugins to hook into various Koji operations. +With this release we have added callbacks in the builder daemon for before and +after source checkout: ``preSCMCheckout`` and ``postSCMCheckout``. Extended allowed_scms format ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -PR: https://pagure.io/koji/pull-request/421 +| PR: https://pagure.io/koji/pull-request/421 The allowed_scms option now accepts entries like: @@ -142,34 +151,23 @@ to explicitly block a host:repository pattern. See also: :ref:`scm-config` +System changes +-------------- -Longer tag names -^^^^^^^^^^^^^^^^ - -PR: https://pagure.io/koji/pull-request/388 -Issue: https://pagure.io/koji/issue/369 - -Previously, tag names were limited to 50 characters. They are now limited -to 256 characters. - - -User-Agent header -^^^^^^^^^^^^^^^^^ - -PR: https://pagure.io/koji/pull-request/393 -Issue: https://pagure.io/koji/issue/392 +mod_auth_gssapi required +^^^^^^^^^^^^^^^^^^^^^^^^ -Previously the Koji client library reported a confusingly out-of-date value -in the `User-Agent` header. Now it simply reports the major version. +| PR: https://pagure.io/koji/pull-request/444 +On modern platforms, both koji-hub and koji-web now require +mod_auth_gssapi instead of mod_auth_kerb. -raise error on non-existing profile -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -https://pagure.io/koji/pull-request/375 -https://pagure.io/koji/issue/370 +Longer tag names +^^^^^^^^^^^^^^^^ -If the requested client profile is not configured, the library will raise an -error, rather than proceeding with default values. +| PR: https://pagure.io/koji/pull-request/388 +| Issue: https://pagure.io/koji/issue/369 -See also: :doc:`profiles` +Previously, tag names were limited to 50 characters. They are now limited +to 256 characters. From f8a9679c5cc457ec4c82e10f74c775a5e7ca2570 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 4/6] link the release notes on the main page --- diff --git a/docs/source/index.rst b/docs/source/index.rst index 398e03f..f195686 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -26,6 +26,7 @@ Contents external_repo_server_bootstrap image_build misc + release_notes migrations runs_here server_bootstrap diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst new file mode 100644 index 0000000..6a0ea1b --- /dev/null +++ b/docs/source/release_notes.rst @@ -0,0 +1,12 @@ +============= +Release Notes +============= + +.. toctree:: + :maxdepth: 1 + + release_notes_1.13 + +For releases before 1.13, see the migration guides: + +:doc:`migrations` From baac58601e0e6fad3c435d62d7d7dcf850b39482 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 5/6] fix formatting in release note --- diff --git a/docs/source/release_notes_1.13.rst b/docs/source/release_notes_1.13.rst index fdc3d62..47711cc 100644 --- a/docs/source/release_notes_1.13.rst +++ b/docs/source/release_notes_1.13.rst @@ -94,8 +94,8 @@ in the ``User-Agent`` header. Now it simply reports the major version. raise error on non-existing profile ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -https://pagure.io/koji/pull-request/375 -https://pagure.io/koji/issue/370 +| PR: https://pagure.io/koji/pull-request/375 +| Issue: https://pagure.io/koji/issue/370 If the requested client profile is not configured, the library will raise an error, rather than proceeding with default values. From 76382badf6604423ec9290ff0012b8682df684bb Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Jun 30 2017 16:23:09 +0000 Subject: [PATCH 6/6] 1.13 changelog updates --- diff --git a/koji.spec b/koji.spec index b065eae..93f257c 100644 --- a/koji.spec +++ b/koji.spec @@ -473,6 +473,10 @@ fi %changelog * Fri Jun 30 2017 Mike McLean - 1.13.0-1 +- PR#496 Makefile/spec fixes for building on el6 +- PR#491 epel-compatible macro in spec +- PR#487 alter specfile for rhel6/7 +- PR#488 python2.5 doesn't know named components - PR#400 per-tag configuration of chroot mock behaviour - PR#480 koji_cli name interferes with new library - PR#475 fix StringType and itervalues in plugin and cli