mirror of
https://src.koozali.org/infra/smeserver-koji.git
synced 2025-08-17 18:28:03 +02:00
sme version of tag2distrepo
This commit is contained in:
@@ -1,22 +1,23 @@
|
||||
# tag2distrepo
|
||||
# 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_sme.enabled`: set to "true" to enable automatic distrepos
|
||||
- `tag2distrepo_sme.keys`: set to a space-separated list of keys to use for distrepos
|
||||
|
||||
The tag must have at least one arch configured on it.
|
||||
|
||||
# Installing plugin on Koji Hub
|
||||
|
||||
1. Copy `tag2distrepo.py` to `/usr/lib/koji-hub-plugins`
|
||||
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
|
||||
Plugins = tag2distrepo_sme
|
||||
|
||||
3. Reload Apache
|
||||
|
||||
@@ -26,22 +27,22 @@ The tag must have at least one arch configured on it.
|
||||
|
||||
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 f33-infra --arches=x86_64
|
||||
koji add-pkg --owner kdreyer f33-infra bash
|
||||
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=47dd8ef9 f33-infra
|
||||
koji edit-tag -x tag2distrepo_sme.enabled=True -x tag2distrepo_sme.keys=44922a28 -x tag2distrepo_sme=skip_missing_signatures=True smeserver11
|
||||
|
||||
Tag a new build to trigger the plugin:
|
||||
|
||||
koji tag f33-infra bash-5.0.17-2.fc33
|
||||
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 f33-infra
|
||||
koji taginfo smeserver11
|
||||
Tag: f33-infra [18680]
|
||||
Arches: x86_64
|
||||
Tag options:
|
||||
@@ -50,7 +51,7 @@ To confirm that the tag has the correct options set, use the `koji taginfo` comm
|
||||
|
||||
To disable the plugin for the same tag:
|
||||
|
||||
koji edit-tag -r tag2distrepo.enabled -r tag2distrepo.keys f33-infra
|
||||
koji edit-tag -r tag2distrepo_sme.enabled smeserver11
|
||||
|
||||
# Using Multiple Keys
|
||||
|
||||
@@ -58,6 +59,6 @@ If you want to create a repository that contains builds signed by more than one
|
||||
|
||||
For example:
|
||||
|
||||
koji edit-tag coreos-pool -x tag2distrepo.keys="45719a39 9867c58f 38ab71f4 5323552a"
|
||||
koji edit-tag smecontribs11 -x tag2distrepo_sme.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 (`45719a39`), 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.
|
||||
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.
|
||||
|
@@ -12,20 +12,20 @@ import logging
|
||||
|
||||
@callback('postTag')
|
||||
def tag2distrepo(cbtype, tag, build, user, force=False):
|
||||
logger = logging.getLogger('koji.plugin.tag2distrepo')
|
||||
logger = logging.getLogger('koji.plugin.tag2distrepo_sme')
|
||||
|
||||
if not tag['extra'].get("tag2distrepo.enabled"):
|
||||
logger.debug("No tag2distrepo enabled for tag %s" % tag['name'])
|
||||
logger.debug("No tag2distrepo_sme enabled for tag %s" % tag['name'])
|
||||
return
|
||||
if not tag['arches']:
|
||||
raise ValueError("Tag %s has no arches configured but tag2distrepo is enabled" % tag['name'])
|
||||
raise ValueError("Tag %s has no arches configured but tag2distrepo_sme is enabled" % tag['name'])
|
||||
|
||||
keys = tag['extra'].get("tag2distrepo.keys", '').split()
|
||||
compfile = tag['extra'].get("tag2distrepo.comp", 'none')
|
||||
inherit = tag['extra'].get("tag2distrepo.inherit", False)
|
||||
latest = tag['extra'].get("tag2distrepo.latest", False)
|
||||
split_debuginfo = tag['extra'].get("tag2distrepo.split_debuginfo", False)
|
||||
skip_missing = tag['extra'].get("tag2distrepo.skip_missing_signatures", False)
|
||||
keys = tag['extra'].get("tag2distrepo_sme.keys", '').split()
|
||||
compfile = tag['extra'].get("tag2distrepo_sme.comp", 'none')
|
||||
inherit = tag['extra'].get("tag2distrepo_sme.inherit", False)
|
||||
latest = tag['extra'].get("tag2distrepo_sme.latest", False)
|
||||
split_debuginfo = tag['extra'].get("tag2distrepo_sme.split_debuginfo", False)
|
||||
skip_missing = tag['extra'].get("tag2distrepo_sme.skip_missing_signatures", False)
|
||||
|
||||
if keys:
|
||||
logger.debug("Ensuring signed RPMs are written out")
|
||||
@@ -35,7 +35,7 @@ def tag2distrepo(cbtype, tag, build, user, force=False):
|
||||
if rpm['sigkey'] == key:
|
||||
write_signed_rpm(rpm['id'], key, False)
|
||||
|
||||
if tag['extra'].get("tag2distrepo.allow_missing_signatures"):
|
||||
if tag['extra'].get("tag2distrepo_sme.allow_missing_signatures"):
|
||||
task_opts = {
|
||||
'arch': tag['arches'].split(),
|
||||
'comp': compfile,
|
Reference in New Issue
Block a user