Allow to specify multiple branches per project in Gerrit trigger
Allow to specify multiple branch patterns in a 'branches' block within the 'project' block. If no 'branches' block is present, fall back to using the single branch specified directly in the 'project' section. If a branch is specified both at the project level, and in the 'branches' section, ignore the one at project level. Closes-Bug: #1302502 Change-Id: I1fb2ce0bb3776d365f2c0e98a703c6dfba5fac7f
This commit is contained in:
parent
b49d6a299b
commit
bb2a4effa4
@ -32,6 +32,7 @@ Example::
|
|||||||
|
|
||||||
import xml.etree.ElementTree as XML
|
import xml.etree.ElementTree as XML
|
||||||
import jenkins_jobs.modules.base
|
import jenkins_jobs.modules.base
|
||||||
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
@ -152,8 +153,18 @@ def gerrit(parser, xml_parent, data):
|
|||||||
''REG_EXP''
|
''REG_EXP''
|
||||||
* **project-pattern** (`str`) -- Project name pattern to match
|
* **project-pattern** (`str`) -- Project name pattern to match
|
||||||
* **branch-compare-type** (`str`) -- ''PLAIN'', ''ANT'' or
|
* **branch-compare-type** (`str`) -- ''PLAIN'', ''ANT'' or
|
||||||
''REG_EXP''
|
''REG_EXP'' (not used if `branches` list is specified)
|
||||||
* **branch-pattern** (`str`) -- Branch name pattern to match
|
* **branch-pattern** (`str`) -- Branch name pattern to match
|
||||||
|
(not used if `branches` list is specified)
|
||||||
|
* **branches** (`list`) -- List of branches to match
|
||||||
|
(optional)
|
||||||
|
|
||||||
|
:Branch: * **branch-compare-type** (`str`) -- ''PLAIN'',
|
||||||
|
''ANT'' or ''REG_EXP'' (optional, defaults to
|
||||||
|
''PLAIN'')
|
||||||
|
* **branch-pattern** (`str`) -- Branch name pattern
|
||||||
|
to match
|
||||||
|
|
||||||
* **file-paths** (`list`) -- List of file paths to match
|
* **file-paths** (`list`) -- List of file paths to match
|
||||||
(optional)
|
(optional)
|
||||||
|
|
||||||
@ -197,33 +208,13 @@ def gerrit(parser, xml_parent, data):
|
|||||||
configure Gerrit Trigger Plugin, instead of hyphenated-keys. While still
|
configure Gerrit Trigger Plugin, instead of hyphenated-keys. While still
|
||||||
supported, camedCase keys are deprecated and should not be used.
|
supported, camedCase keys are deprecated and should not be used.
|
||||||
|
|
||||||
Example::
|
Example:
|
||||||
|
|
||||||
triggers:
|
.. literalinclude:: /../../tests/triggers/fixtures/gerrit003.yaml
|
||||||
- gerrit:
|
|
||||||
trigger-on-comment-added-event: true
|
|
||||||
trigger-approval-category: 'APRV'
|
|
||||||
trigger-approval-value: 1
|
|
||||||
projects:
|
|
||||||
- project-compare-type: 'PLAIN'
|
|
||||||
project-pattern: 'test-project'
|
|
||||||
branch-compare-type: 'ANT'
|
|
||||||
branch-pattern: '**'
|
|
||||||
file-paths:
|
|
||||||
- compare-type: ANT
|
|
||||||
pattern: subdirectory/**
|
|
||||||
skip-vote:
|
|
||||||
successful: true
|
|
||||||
failed: true
|
|
||||||
unstable: true
|
|
||||||
notbuilt: true
|
|
||||||
silent: false
|
|
||||||
escape-quotes: false
|
|
||||||
no-name-and-email: false
|
|
||||||
dynamic-trigger-enabled: true
|
|
||||||
dynamic-trigger-url: http://myhost/mytrigger
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
logger = logging.getLogger("%s:gerrit" % __name__)
|
||||||
|
|
||||||
gerrit_handle_legacy_configuration(data)
|
gerrit_handle_legacy_configuration(data)
|
||||||
|
|
||||||
projects = data['projects']
|
projects = data['projects']
|
||||||
@ -239,12 +230,32 @@ def gerrit(parser, xml_parent, data):
|
|||||||
XML.SubElement(gproj, 'compareType').text = \
|
XML.SubElement(gproj, 'compareType').text = \
|
||||||
project['project-compare-type']
|
project['project-compare-type']
|
||||||
XML.SubElement(gproj, 'pattern').text = project['project-pattern']
|
XML.SubElement(gproj, 'pattern').text = project['project-pattern']
|
||||||
|
|
||||||
branches = XML.SubElement(gproj, 'branches')
|
branches = XML.SubElement(gproj, 'branches')
|
||||||
gbranch = XML.SubElement(branches, 'com.sonyericsson.hudson.plugins.'
|
project_branches = project.get('branches', [])
|
||||||
'gerrit.trigger.hudsontrigger.data.Branch')
|
|
||||||
XML.SubElement(gbranch, 'compareType').text = \
|
if 'branch-compare-type' in project and 'branch-pattern' in project:
|
||||||
project['branch-compare-type']
|
warning = 'branch-compare-type and branch-pattern at project ' \
|
||||||
XML.SubElement(gbranch, 'pattern').text = project['branch-pattern']
|
'level are deprecated and support will be removed ' \
|
||||||
|
'in a later version of Jenkins Job Builder; '
|
||||||
|
if project_branches:
|
||||||
|
warning += 'discarding values and using values from ' \
|
||||||
|
'branches section'
|
||||||
|
else:
|
||||||
|
warning += 'please use branches section instead'
|
||||||
|
logger.warn(warning)
|
||||||
|
if not project_branches:
|
||||||
|
project_branches = [
|
||||||
|
{'branch-compare-type': project['branch-compare-type'],
|
||||||
|
'branch-pattern': project['branch-pattern']}]
|
||||||
|
for branch in project_branches:
|
||||||
|
gbranch = XML.SubElement(
|
||||||
|
branches, 'com.sonyericsson.hudson.plugins.'
|
||||||
|
'gerrit.trigger.hudsontrigger.data.Branch')
|
||||||
|
XML.SubElement(gbranch, 'compareType').text = \
|
||||||
|
branch['branch-compare-type']
|
||||||
|
XML.SubElement(gbranch, 'pattern').text = branch['branch-pattern']
|
||||||
|
|
||||||
project_file_paths = project.get('file-paths', [])
|
project_file_paths = project.get('file-paths', [])
|
||||||
if project_file_paths:
|
if project_file_paths:
|
||||||
fps_tag = XML.SubElement(gproj, 'filePaths')
|
fps_tag = XML.SubElement(gproj, 'filePaths')
|
||||||
|
52
tests/triggers/fixtures/gerrit002.xml
Normal file
52
tests/triggers/fixtures/gerrit002.xml
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<triggers class="vector">
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||||
|
<spec/>
|
||||||
|
<gerritProjects>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>test-project</pattern>
|
||||||
|
<branches>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>master</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>stable</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
</branches>
|
||||||
|
<filePaths>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
<compareType>ANT</compareType>
|
||||||
|
<pattern>subdirectory/**</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
</filePaths>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
</gerritProjects>
|
||||||
|
<skipVote>
|
||||||
|
<onSuccessful>true</onSuccessful>
|
||||||
|
<onFailed>true</onFailed>
|
||||||
|
<onUnstable>true</onUnstable>
|
||||||
|
<onNotBuilt>true</onNotBuilt>
|
||||||
|
</skipVote>
|
||||||
|
<silentMode>false</silentMode>
|
||||||
|
<escapeQuotes>false</escapeQuotes>
|
||||||
|
<noNameAndEmailParameters>false</noNameAndEmailParameters>
|
||||||
|
<dynamicTriggerConfiguration>True</dynamicTriggerConfiguration>
|
||||||
|
<triggerConfigURL>http://myhost/mytrigger</triggerConfigURL>
|
||||||
|
<triggerOnEvents>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedEvent>
|
||||||
|
<verdictCategory>APRV</verdictCategory>
|
||||||
|
<commentAddedTriggerApprovalValue>1</commentAddedTriggerApprovalValue>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedEvent>
|
||||||
|
</triggerOnEvents>
|
||||||
|
<buildStartMessage/>
|
||||||
|
<buildFailureMessage/>
|
||||||
|
<buildSuccessfulMessage/>
|
||||||
|
<buildUnstableMessage/>
|
||||||
|
<customUrl/>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||||
|
</triggers>
|
||||||
|
</project>
|
26
tests/triggers/fixtures/gerrit002.yaml
Normal file
26
tests/triggers/fixtures/gerrit002.yaml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
triggers:
|
||||||
|
- gerrit:
|
||||||
|
trigger-on-comment-added-event: true
|
||||||
|
trigger-approval-category: 'APRV'
|
||||||
|
trigger-approval-value: 1
|
||||||
|
projects:
|
||||||
|
- project-compare-type: 'PLAIN'
|
||||||
|
project-pattern: 'test-project'
|
||||||
|
branches:
|
||||||
|
- branch-compare-type: 'PLAIN'
|
||||||
|
branch-pattern: 'master'
|
||||||
|
- branch-compare-type: 'PLAIN'
|
||||||
|
branch-pattern: 'stable'
|
||||||
|
file-paths:
|
||||||
|
- compare-type: ANT
|
||||||
|
pattern: subdirectory/**
|
||||||
|
skip-vote:
|
||||||
|
successful: true
|
||||||
|
failed: true
|
||||||
|
unstable: true
|
||||||
|
notbuilt: true
|
||||||
|
silent: false
|
||||||
|
escape-quotes: false
|
||||||
|
no-name-and-email: false
|
||||||
|
dynamic-trigger-enabled: true
|
||||||
|
dynamic-trigger-url: http://myhost/mytrigger
|
68
tests/triggers/fixtures/gerrit003.xml
Normal file
68
tests/triggers/fixtures/gerrit003.xml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<triggers class="vector">
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||||
|
<spec/>
|
||||||
|
<gerritProjects>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>test-project</pattern>
|
||||||
|
<branches>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<compareType>ANT</compareType>
|
||||||
|
<pattern>**</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
</branches>
|
||||||
|
<filePaths>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
<compareType>ANT</compareType>
|
||||||
|
<pattern>subdirectory/**</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
</filePaths>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>another-test-project</pattern>
|
||||||
|
<branches>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>master</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
<compareType>PLAIN</compareType>
|
||||||
|
<pattern>stable</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||||
|
</branches>
|
||||||
|
<filePaths>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
<compareType>ANT</compareType>
|
||||||
|
<pattern>subdirectory/**</pattern>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.FilePath>
|
||||||
|
</filePaths>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||||
|
</gerritProjects>
|
||||||
|
<skipVote>
|
||||||
|
<onSuccessful>true</onSuccessful>
|
||||||
|
<onFailed>true</onFailed>
|
||||||
|
<onUnstable>true</onUnstable>
|
||||||
|
<onNotBuilt>true</onNotBuilt>
|
||||||
|
</skipVote>
|
||||||
|
<silentMode>false</silentMode>
|
||||||
|
<escapeQuotes>false</escapeQuotes>
|
||||||
|
<noNameAndEmailParameters>false</noNameAndEmailParameters>
|
||||||
|
<dynamicTriggerConfiguration>True</dynamicTriggerConfiguration>
|
||||||
|
<triggerConfigURL>http://myhost/mytrigger</triggerConfigURL>
|
||||||
|
<triggerOnEvents>
|
||||||
|
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedEvent>
|
||||||
|
<verdictCategory>APRV</verdictCategory>
|
||||||
|
<commentAddedTriggerApprovalValue>1</commentAddedTriggerApprovalValue>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedEvent>
|
||||||
|
</triggerOnEvents>
|
||||||
|
<buildStartMessage/>
|
||||||
|
<buildFailureMessage/>
|
||||||
|
<buildSuccessfulMessage/>
|
||||||
|
<buildUnstableMessage/>
|
||||||
|
<customUrl/>
|
||||||
|
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||||
|
</triggers>
|
||||||
|
</project>
|
33
tests/triggers/fixtures/gerrit003.yaml
Normal file
33
tests/triggers/fixtures/gerrit003.yaml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
triggers:
|
||||||
|
- gerrit:
|
||||||
|
trigger-on-comment-added-event: true
|
||||||
|
trigger-approval-category: 'APRV'
|
||||||
|
trigger-approval-value: 1
|
||||||
|
projects:
|
||||||
|
- project-compare-type: 'PLAIN'
|
||||||
|
project-pattern: 'test-project'
|
||||||
|
branch-compare-type: 'ANT'
|
||||||
|
branch-pattern: '**'
|
||||||
|
file-paths:
|
||||||
|
- compare-type: ANT
|
||||||
|
pattern: subdirectory/**
|
||||||
|
- project-compare-type: 'PLAIN'
|
||||||
|
project-pattern: 'another-test-project'
|
||||||
|
branches:
|
||||||
|
- branch-compare-type: 'PLAIN'
|
||||||
|
branch-pattern: 'master'
|
||||||
|
- branch-compare-type: 'PLAIN'
|
||||||
|
branch-pattern: 'stable'
|
||||||
|
file-paths:
|
||||||
|
- compare-type: ANT
|
||||||
|
pattern: subdirectory/**
|
||||||
|
skip-vote:
|
||||||
|
successful: true
|
||||||
|
failed: true
|
||||||
|
unstable: true
|
||||||
|
notbuilt: true
|
||||||
|
silent: false
|
||||||
|
escape-quotes: false
|
||||||
|
no-name-and-email: false
|
||||||
|
dynamic-trigger-enabled: true
|
||||||
|
dynamic-trigger-url: http://myhost/mytrigger
|
Loading…
Reference in New Issue
Block a user