jenkins-jobs fails because of postbuildscript version string
We had manually worked around this problem before (tails#19051 (comment 191808)) but it hit us again after the upgrade of the Jenkins VM to Bookworm (#17982 (closed)).
For now, it's worked around by manually patching the /usr/lib/python3/dist-packages/jenkins_jobs/modules/publishers.py
file (see below).
Upstream bug report: https://storyboard.openstack.org/#!/story/2009943
Failure log
zen@jenkins ~ [2]> sudo -u jenkins /usr/local/sbin/deploy_jenkins_jobs update
HEAD is now at 80901b2c Automatic Tails_ISOS jobs update.
INFO:jenkins_jobs.cli.subcommand.update:Updating jobs in ['/etc/jenkins_jobs/jobs', '/etc/jenkins_jobs/jobs/Tails_ISOS', '/etc/jenkins_jobs/jobs/macros'] ([])
INFO:root:Caching type properties of properties = jenkins_jobs.modules.properties:Properties
INFO:root:Caching type builders of builders = jenkins_jobs.modules.builders:Builders
INFO:root:Caching type wrappers of wrappers = jenkins_jobs.modules.wrappers:Wrappers
INFO:root:Caching type parameters of parameters = jenkins_jobs.modules.parameters:Parameters
INFO:root:Caching type scm of scm = jenkins_jobs.modules.scm:SCM
INFO:root:Caching type triggers of triggers = jenkins_jobs.modules.triggers:Triggers
INFO:root:Caching type publishers of publishers = jenkins_jobs.modules.publishers:Publishers
Traceback (most recent call last):
File "/usr/bin/jenkins-jobs", line 10, in <module>
sys.exit(main())
^^^^^^
File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 174, in main
jjb.execute()
File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/entry.py", line 154, in execute
ext.obj.execute(self.options, self.jjb_config)
File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/subcommand/update.py", line 134, in execute
builder, xml_jobs, xml_views = self._generate_xmljobs(options, jjb_config)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins_jobs/cli/subcommand/update.py", line 119, in _generate_xmljobs
xml_jobs = xml_job_generator.generateXML(job_data_list)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins_jobs/xml_config.py", line 79, in generateXML
xml_objs.append(self._getXMLForData(data))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/jenkins_jobs/xml_config.py", line 92, in _getXMLForData
self._gen_xml(xml, data)
File "/usr/lib/python3/dist-packages/jenkins_jobs/xml_config.py", line 109, in _gen_xml
module.gen_xml(xml, data)
File "/usr/lib/python3/dist-packages/jenkins_jobs/modules/publishers.py", line 8347, in gen_xml
self.registry.dispatch("publisher", publishers, action)
File "/usr/lib/python3/dist-packages/jenkins_jobs/registry.py", line 309, in dispatch
func(self, xml_parent, component_data, **kwargs)
File "/usr/lib/python3/dist-packages/jenkins_jobs/modules/publishers.py", line 4497, in postbuildscript
version = pkg_resources.parse_version(info.get("version", str(sys.maxsize)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/pkg_resources/_vendor/packaging/version.py", line 266, in __init__
raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '3.2.0-550.v88192b_d3e922'
Patch for publishers.py
diff --git a/jenkins_jobs/modules/publishers.py b/jenkins_jobs/modules/publishers.py
index e2f1219c..8726b1f4 100755
--- a/jenkins_jobs/modules/publishers.py
+++ b/jenkins_jobs/modules/publishers.py
@@ -30,6 +30,7 @@ import pkg_resources
import sys
import xml.etree.ElementTree as XML
+import re
import six
from jenkins_jobs.errors import InvalidAttributeError
@@ -4497,7 +4498,8 @@ def postbuildscript(registry, xml_parent, data):
info = registry.get_plugin_info("postbuildscript")
# Note: Assume latest version of plugin is preferred config format
- version = pkg_resources.parse_version(info.get("version", str(sys.maxsize)))
+ _version = re.sub('-.*', '', info.get("version", str(sys.maxsize)))
+ version = pkg_resources.parse_version(_version)
if version >= pkg_resources.parse_version("2.0"):
pbs_xml = XML.SubElement(pbs_xml, "config")
Edited by Zen Fu