smeserver-koji/plugins/tag2distrepo
2024-11-15 10:30:11 +11:00
..
LICENSE add plugins 2024-09-27 18:19:51 +10:00
MANIFEST.in add plugins 2024-09-27 18:19:51 +10:00
README.md update tag2distrepo README 2024-11-15 10:30:11 +11:00
setup.py add plugins 2024-09-27 18:19:51 +10:00
tag2distrepo_sme.py use tag2distrepo config options 2024-11-14 15:46:33 +11:00

tag2distrepo_sme

Koji plugin to automatically regenerate distrepos on tag operations Koozali version which allows additional dist-repo settings

It uses the following options on a tag to control behaviour:

  • tag2distrepo.enabled: set to "true" to enable automatic distrepos
  • tag2distrepo.keys: set to a space-separated list of keys to use for distrepos
  • tag2distrepo.skip_missing_signatures: set to "true" to skip unsigned packages (and not die)
  • tag2distrepo.allow_missing_signatures: set to "true" to include packages with missing signatures

The tag must have at least one arch configured on it.

Installing plugin on Koji Hub

  1. Copy tag2distrepo_sme.py to /usr/lib/koji-hub-plugins

  2. Edit the following settings in /etc/koji-hub/hub.conf to enable the plugin:

      PluginPath = /usr/lib/koji-hub-plugins
      Plugins = tag2distrepo_sme
    
  3. Reload Apache

      systemctl reload httpd
    

Example usage

Here is an example of enabling the plugin on an "f33-infra" tag. Create the tag and ensure it has at least one arch and a package list (direct or inherited) so we can tag packages into it.

koji add-tag smeserver11 --arches=x86_64
koji add-pkg --owner kojiadmin smeserver11 bash

Set the extra options on the tag so the plugin will generate the repository:

koji edit-tag -x tag2distrepo.enabled=True -x tag2distrepo.keys=44922a28 -x tag2distrepo=skip_missing_signatures=True smeserver11

Tag a new build to trigger the plugin:

koji tag smeserver11 bash-5.0.17-2.el8.sme

The hub will immediately queue a new distRepo task, using the tagBuild task host as the distRepo task owner. When the distRepo task completes, you can find the new repository under the topurl for your Koji instance.

To confirm that the tag has the correct options set, use the koji taginfo command:

$ koji taginfo smeserver11
Tag: smeserver11 [39]
Arches: x86_64
Tag options:
  tag2distrepo.enabled : True
  tag2distrepo.keys : '44922a28'
  tag2distrepo:skip_missing_signatures : True

To disable the plugin for the same tag:

koji edit-tag -r tag2distrepo_sme.enabled smeserver11

Using Multiple Keys

If you want to create a repository that contains builds signed by more than one key, list your desired key IDs ordered by preference.

For example:

koji edit-tag smecontribs11 -x tag2distrepo.keys="44922a28 9867c58f 38ab71f4 5323552a"

For each RPM in the tag, Koji will use the first signed copy that it finds. In other words, Koji will try the first key (44922a28), and if Koji does not have the first key's signature for that RPM, then it will try the second key (9867c58f), third key (38ab71f4), and so on.