gerrit: Support gerrit-trigger >= 2.6.0.

Gerrit-trigger offers different triggers, stored in config file using
different formats.
During development of version 2.6.0, the following markup was used[1]:

  <triggerOnPatchsetUploadedEvent>true</triggerOnPatchsetUploadedEvent>
  <triggerOnChangeMergedEvent>true</triggerOnChangeMergedEvent>
  <triggerOnCommentAddedEvent>false</triggerOnCommentAddedEvent>
  <triggerOnRefUpdatedEvent>false</triggerOnRefUpdatedEvent>

That markup changed before the release of 2.6.0 [2] to:

  <triggerOnEvents>
    <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginPatchsetCreatedEvent/>
    <com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginChangeRestoredEvent/>
  </triggerOnEvents>

Adjust the generated XML tree to match what gerrit-trigger expects.

This means that gerrit-trigger versions < 2.6.0 are no longer supported.

Trigger on draft published, added in 2.6.0, is now supported.

[1] Commit 8bee93a87b59d413ccec0aa84d3da10adb108eb9
[2] Commit 9ba008972a84e3ca8b2a90bd6d21295e7d7f4f94

Change-Id: I7160de1284c53d20f435e5af0d5a64b2e17c4196
Reviewed-on: https://review.openstack.org/24263
Reviewed-by: James E. Blair <corvus@inaugust.com>
Reviewed-by: Jeremy Stanley <fungi@yuggoth.org>
Reviewed-by: Anita Kuno <akuno@lavabit.com>
Approved: Jeremy Stanley <fungi@yuggoth.org>
Tested-by: Jenkins
This commit is contained in:
Arnaud Fabre 2013-03-12 23:19:47 +01:00 committed by Jenkins
parent 2370375aee
commit e0787f2815
2 changed files with 31 additions and 15 deletions

View File

@ -34,15 +34,42 @@ import xml.etree.ElementTree as XML
import jenkins_jobs.modules.base
def build_gerrit_triggers(xml_parent, data):
available_simple_triggers = {
'triggerOnChangeMergedEvent': 'PluginChangeMergedEvent',
'triggerOnDraftPublishedEvent': 'PluginDraftPublishedEvent',
'triggerOnPatchsetUploadedEvent': 'PluginPatchsetCreatedEvent',
'triggerOnRefUpdatedEvent': 'PluginRefUpdatedEvent',
}
tag_namespace = 'com.sonyericsson.hudson.plugins.gerrit.trigger.' \
'hudsontrigger.events'
trigger_on_events = XML.SubElement(xml_parent, 'triggerOnEvents')
for config_key, tag_name in available_simple_triggers.iteritems():
if data.get(config_key, False):
XML.SubElement(trigger_on_events,
'%s.%s' % (tag_namespace, tag_name))
if data.get('triggerOnCommentAddedEvent', False):
cadded = XML.SubElement(trigger_on_events,
'%s.%s' % (tag_namespace,
'PluginCommentAddedEvent'))
XML.SubElement(cadded, 'verdictCategory').text = \
data['triggerApprovalCategory']
XML.SubElement(cadded, 'commentAddedTriggerApprovalValue').text = \
str(data['triggerApprovalValue'])
def gerrit(parser, xml_parent, data):
"""yaml: gerrit
Trigger on a Gerrit event.
Requires the Jenkins `Gerrit Trigger Plugin.
<wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger>`_
Requires the Jenkins `Gerrit Trigger Plugin
<wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger>`_ version >= 2.6.0.
:arg bool triggerOnPatchsetUploadedEvent: Trigger on patchset upload
:arg bool triggerOnChangeMergedEvent: Trigger on change merged
:arg bool triggerOnCommentAddedEvent: Trigger on comment added
:arg bool triggerOnDraftPublishedEvent: Trigger on draft published event.
:arg bool triggerOnRefUpdatedEvent: Trigger on ref-updated
:arg str triggerApprovalCategory: Approval category for comment added
:arg int triggerApprovalValue: Approval value for comment added
@ -98,24 +125,12 @@ def gerrit(parser, xml_parent, data):
XML.SubElement(gbranch, 'pattern').text = project['branchPattern']
XML.SubElement(gtrig, 'silentMode').text = 'false'
XML.SubElement(gtrig, 'escapeQuotes').text = 'true'
XML.SubElement(gtrig, 'triggerOnPatchsetUploadedEvent').text = \
str(data['triggerOnPatchsetUploadedEvent']).lower()
XML.SubElement(gtrig, 'triggerOnChangeMergedEvent').text = \
str(data['triggerOnChangeMergedEvent']).lower()
XML.SubElement(gtrig, 'triggerOnCommentAddedEvent').text = \
str(data['triggerOnCommentAddedEvent']).lower()
XML.SubElement(gtrig, 'triggerOnRefUpdatedEvent').text = \
str(data['triggerOnRefUpdatedEvent']).lower()
build_gerrit_triggers(gtrig, data)
if 'overrideVotes' in data and data['overrideVotes'] == 'true':
XML.SubElement(gtrig, 'gerritBuildSuccessfulVerifiedValue').text = \
str(data['gerritBuildSuccessfulVerifiedValue'])
XML.SubElement(gtrig, 'gerritBuildFailedVerifiedValue').text = \
str(data['gerritBuildFailedVerifiedValue'])
if data['triggerOnCommentAddedEvent']:
XML.SubElement(gtrig, 'commentAddedTriggerApprovalCategory').text = \
data['triggerApprovalCategory']
XML.SubElement(gtrig, 'commentAddedTriggerApprovalValue').text = \
str(data['triggerApprovalValue'])
XML.SubElement(gtrig, 'buildStartMessage')
XML.SubElement(gtrig, 'buildFailureMessage').text = data['failureMessage']
XML.SubElement(gtrig, 'buildSuccessfulMessage')

View File

@ -4,6 +4,7 @@
- gerrit:
triggerOnChangeMergedEvent: true
triggerOnCommentAddedEvent: true
triggerOnDraftPublishedEvent: true
triggerOnPatchsetUploadedEvent: true
triggerOnRefUpdatedEvent: false
triggerApprovalCategory: CRVW