summaryrefslogtreecommitdiffstats
path: root/jenkins_jobs/modules/triggers.py
diff options
context:
space:
mode:
Diffstat (limited to 'jenkins_jobs/modules/triggers.py')
-rw-r--r--jenkins_jobs/modules/triggers.py1701
1 files changed, 881 insertions, 820 deletions
diff --git a/jenkins_jobs/modules/triggers.py b/jenkins_jobs/modules/triggers.py
index fcd93390..5831f4ba 100644
--- a/jenkins_jobs/modules/triggers.py
+++ b/jenkins_jobs/modules/triggers.py
@@ -53,8 +53,7 @@ def gerrit_handle_legacy_configuration(data):
def hyphenize(attr):
"""Convert strings like triggerOn to trigger-on.
"""
- return hyphenizer.sub(lambda x: "-%s" % x.group(0).lower(),
- attr)
+ return hyphenizer.sub(lambda x: "-%s" % x.group(0).lower(), attr)
def convert_dict(d, old_keys):
for old_key in old_keys:
@@ -62,150 +61,176 @@ def gerrit_handle_legacy_configuration(data):
new_key = hyphenize(old_key)
logger.warning(
"'%s' is deprecated and will be removed after "
- "1.0.0, please use '%s' instead", old_key, new_key)
+ "1.0.0, please use '%s' instead",
+ old_key,
+ new_key,
+ )
d[new_key] = d[old_key]
del d[old_key]
- convert_dict(data, [
- 'triggerOnPatchsetUploadedEvent',
- 'triggerOnChangeAbandonedEvent',
- 'triggerOnChangeMergedEvent',
- 'triggerOnChangeRestoredEvent',
- 'triggerOnCommentAddedEvent',
- 'triggerOnDraftPublishedEvent',
- 'triggerOnRefUpdatedEvent',
- 'triggerApprovalCategory',
- 'triggerApprovalValue',
- 'overrideVotes',
- 'gerritBuildSuccessfulVerifiedValue',
- 'gerritBuildFailedVerifiedValue',
- 'failureMessage',
- 'skipVote',
- ])
-
- for project in data.get('projects', []):
- convert_dict(project, [
- 'projectCompareType',
- 'projectPattern',
- 'branchCompareType',
- 'branchPattern',
- ])
+ convert_dict(
+ data,
+ [
+ "triggerOnPatchsetUploadedEvent",
+ "triggerOnChangeAbandonedEvent",
+ "triggerOnChangeMergedEvent",
+ "triggerOnChangeRestoredEvent",
+ "triggerOnCommentAddedEvent",
+ "triggerOnDraftPublishedEvent",
+ "triggerOnRefUpdatedEvent",
+ "triggerApprovalCategory",
+ "triggerApprovalValue",
+ "overrideVotes",
+ "gerritBuildSuccessfulVerifiedValue",
+ "gerritBuildFailedVerifiedValue",
+ "failureMessage",
+ "skipVote",
+ ],
+ )
+
+ for project in data.get("projects", []):
+ convert_dict(
+ project,
+ [
+ "projectCompareType",
+ "projectPattern",
+ "branchCompareType",
+ "branchPattern",
+ ],
+ )
mapping_obj_type = type(data)
old_format_events = mapping_obj_type(
- (key, should_register) for key, should_register in six.iteritems(data)
- if key.startswith('trigger-on-'))
- trigger_on = data.setdefault('trigger-on', [])
+ (key, should_register)
+ for key, should_register in six.iteritems(data)
+ if key.startswith("trigger-on-")
+ )
+ trigger_on = data.setdefault("trigger-on", [])
if old_format_events:
logger.warning(
"The events: %s; which you used is/are deprecated. "
"Please use 'trigger-on' instead.",
- ', '.join(old_format_events))
+ ", ".join(old_format_events),
+ )
if old_format_events and trigger_on:
raise JenkinsJobsException(
- 'Both, the new format (trigger-on) and old format (trigger-on-*) '
- 'gerrit events format found. Please use either the new or the old '
- 'format of trigger events definition.')
-
- trigger_on.extend(event_name[len('trigger-on-'):]
- for event_name, should_register
- in six.iteritems(old_format_events) if should_register)
+ "Both, the new format (trigger-on) and old format (trigger-on-*) "
+ "gerrit events format found. Please use either the new or the old "
+ "format of trigger events definition."
+ )
+
+ trigger_on.extend(
+ event_name[len("trigger-on-") :]
+ for event_name, should_register in six.iteritems(old_format_events)
+ if should_register
+ )
for idx, event in enumerate(trigger_on):
- if event == 'comment-added-event':
+ if event == "comment-added-event":
trigger_on[idx] = events = mapping_obj_type()
try:
- events['comment-added-event'] = mapping_obj_type((
- ('approval-category', data['trigger-approval-category']),
- ('approval-value', data['trigger-approval-value'])
- ))
+ events["comment-added-event"] = mapping_obj_type(
+ (
+ ("approval-category", data["trigger-approval-category"]),
+ ("approval-value", data["trigger-approval-value"]),
+ )
+ )
except KeyError:
raise JenkinsJobsException(
- 'The comment-added-event trigger requires which approval '
- 'category and value you want to trigger the job. '
- 'It should be specified by the approval-category '
- 'and approval-value properties.')
+ "The comment-added-event trigger requires which approval "
+ "category and value you want to trigger the job. "
+ "It should be specified by the approval-category "
+ "and approval-value properties."
+ )
def build_gerrit_triggers(xml_parent, data):
available_simple_triggers = {
- 'change-abandoned-event': 'PluginChangeAbandonedEvent',
- 'change-merged-event': 'PluginChangeMergedEvent',
- 'change-restored-event': 'PluginChangeRestoredEvent',
- 'draft-published-event': 'PluginDraftPublishedEvent',
- 'patchset-uploaded-event': 'PluginPatchsetCreatedEvent',
- 'patchset-created-event': 'PluginPatchsetCreatedEvent',
- 'ref-updated-event': 'PluginRefUpdatedEvent',
+ "change-abandoned-event": "PluginChangeAbandonedEvent",
+ "change-merged-event": "PluginChangeMergedEvent",
+ "change-restored-event": "PluginChangeRestoredEvent",
+ "draft-published-event": "PluginDraftPublishedEvent",
+ "patchset-uploaded-event": "PluginPatchsetCreatedEvent",
+ "patchset-created-event": "PluginPatchsetCreatedEvent",
+ "ref-updated-event": "PluginRefUpdatedEvent",
}
- tag_namespace = 'com.sonyericsson.hudson.plugins.gerrit.trigger.' \
- 'hudsontrigger.events'
+ tag_namespace = (
+ "com.sonyericsson.hudson.plugins.gerrit.trigger." "hudsontrigger.events"
+ )
- trigger_on_events = XML.SubElement(xml_parent, 'triggerOnEvents')
+ trigger_on_events = XML.SubElement(xml_parent, "triggerOnEvents")
- for event in data.get('trigger-on', []):
+ for event in data.get("trigger-on", []):
if isinstance(event, six.string_types):
tag_name = available_simple_triggers.get(event)
- if event == 'patchset-uploaded-event':
+ if event == "patchset-uploaded-event":
logger.warning(
"'%s' is deprecated. Use 'patchset-created-event' "
- "format instead.", event)
+ "format instead.",
+ event,
+ )
if not tag_name:
- known = ', '.join(available_simple_triggers.keys() +
- ['comment-added-event',
- 'comment-added-contains-event'])
- msg = ("The event '%s' under 'trigger-on' is not one of the "
- "known: %s.") % (event, known)
+ known = ", ".join(
+ available_simple_triggers.keys()
+ + ["comment-added-event", "comment-added-contains-event"]
+ )
+ msg = (
+ "The event '%s' under 'trigger-on' is not one of the " "known: %s."
+ ) % (event, known)
raise JenkinsJobsException(msg)
- XML.SubElement(trigger_on_events,
- '%s.%s' % (tag_namespace, tag_name))
+ XML.SubElement(trigger_on_events, "%s.%s" % (tag_namespace, tag_name))
else:
- if 'patchset-created-event' in event.keys():
- pce = event['patchset-created-event']
+ if "patchset-created-event" in event.keys():
+ pce = event["patchset-created-event"]
pc = XML.SubElement(
trigger_on_events,
- '%s.%s' % (tag_namespace, 'PluginPatchsetCreatedEvent'))
+ "%s.%s" % (tag_namespace, "PluginPatchsetCreatedEvent"),
+ )
mapping = [
- ('exclude-drafts', 'excludeDrafts', False),
- ('exclude-trivial-rebase', 'excludeTrivialRebase', False),
- ('exclude-no-code-change', 'excludeNoCodeChange', False),
+ ("exclude-drafts", "excludeDrafts", False),
+ ("exclude-trivial-rebase", "excludeTrivialRebase", False),
+ ("exclude-no-code-change", "excludeNoCodeChange", False),
]
- helpers.convert_mapping_to_xml(
- pc, pce, mapping, fail_required=True)
+ helpers.convert_mapping_to_xml(pc, pce, mapping, fail_required=True)
- if 'comment-added-event' in event.keys():
- comment_added_event = event['comment-added-event']
+ if "comment-added-event" in event.keys():
+ comment_added_event = event["comment-added-event"]
cadded = XML.SubElement(
trigger_on_events,
- '%s.%s' % (tag_namespace, 'PluginCommentAddedEvent'))
+ "%s.%s" % (tag_namespace, "PluginCommentAddedEvent"),
+ )
mapping = [
- ('approval-category', 'verdictCategory', None),
- ('approval-value',
- 'commentAddedTriggerApprovalValue', None),
+ ("approval-category", "verdictCategory", None),
+ ("approval-value", "commentAddedTriggerApprovalValue", None),
]
- helpers.convert_mapping_to_xml(cadded,
- comment_added_event, mapping, fail_required=True)
+ helpers.convert_mapping_to_xml(
+ cadded, comment_added_event, mapping, fail_required=True
+ )
- if 'comment-added-contains-event' in event.keys():
- comment_added_event = event['comment-added-contains-event']
+ if "comment-added-contains-event" in event.keys():
+ comment_added_event = event["comment-added-contains-event"]
caddedc = XML.SubElement(
trigger_on_events,
- '%s.%s' % (tag_namespace,
- 'PluginCommentAddedContainsEvent'))
- XML.SubElement(caddedc, 'commentAddedCommentContains').text = \
- comment_added_event['comment-contains-value']
+ "%s.%s" % (tag_namespace, "PluginCommentAddedContainsEvent"),
+ )
+ XML.SubElement(
+ caddedc, "commentAddedCommentContains"
+ ).text = comment_added_event["comment-contains-value"]
def build_gerrit_skip_votes(xml_parent, data):
- outcomes = [('successful', 'onSuccessful'),
- ('failed', 'onFailed'),
- ('unstable', 'onUnstable'),
- ('notbuilt', 'onNotBuilt')]
+ outcomes = [
+ ("successful", "onSuccessful"),
+ ("failed", "onFailed"),
+ ("unstable", "onUnstable"),
+ ("notbuilt", "onNotBuilt"),
+ ]
- skip_vote_node = XML.SubElement(xml_parent, 'skipVote')
- skip_vote = data.get('skip-vote', {})
+ skip_vote_node = XML.SubElement(xml_parent, "skipVote")
+ skip_vote = data.get("skip-vote", {})
for result_kind, tag_name in outcomes:
setting = skip_vote.get(result_kind, False)
XML.SubElement(skip_vote_node, tag_name).text = str(setting).lower()
@@ -455,171 +480,198 @@ def gerrit(registry, xml_parent, data):
"""
def get_compare_type(xml_tag, compare_type):
- valid_compare_types = ['PLAIN',
- 'ANT',
- 'REG_EXP']
+ valid_compare_types = ["PLAIN", "ANT", "REG_EXP"]
if compare_type not in valid_compare_types:
- raise InvalidAttributeError(xml_tag, compare_type,
- valid_compare_types)
+ raise InvalidAttributeError(xml_tag, compare_type, valid_compare_types)
return compare_type
gerrit_handle_legacy_configuration(data)
- projects = data.get('projects', [])
- gtrig = XML.SubElement(xml_parent,
- 'com.sonyericsson.hudson.plugins.gerrit.trigger.'
- 'hudsontrigger.GerritTrigger')
- XML.SubElement(gtrig, 'spec')
- gprojects = XML.SubElement(gtrig, 'gerritProjects')
+ projects = data.get("projects", [])
+ gtrig = XML.SubElement(
+ xml_parent,
+ "com.sonyericsson.hudson.plugins.gerrit.trigger." "hudsontrigger.GerritTrigger",
+ )
+ XML.SubElement(gtrig, "spec")
+ gprojects = XML.SubElement(gtrig, "gerritProjects")
for project in projects:
- gproj = XML.SubElement(gprojects,
- 'com.sonyericsson.hudson.plugins.gerrit.'
- 'trigger.hudsontrigger.data.GerritProject')
- XML.SubElement(gproj, 'compareType').text = get_compare_type(
- 'project-compare-type', project.get(
- 'project-compare-type', 'PLAIN'))
- XML.SubElement(gproj, 'pattern').text = project['project-pattern']
-
- branches = XML.SubElement(gproj, 'branches')
- project_branches = project.get('branches', [])
-
- if 'branch-compare-type' in project and 'branch-pattern' in project:
- warning = 'branch-compare-type and branch-pattern at project ' \
- 'level are deprecated and support will be removed ' \
- 'in a later version of Jenkins Job Builder; '
+ gproj = XML.SubElement(
+ gprojects,
+ "com.sonyericsson.hudson.plugins.gerrit."
+ "trigger.hudsontrigger.data.GerritProject",
+ )
+ XML.SubElement(gproj, "compareType").text = get_compare_type(
+ "project-compare-type", project.get("project-compare-type", "PLAIN")
+ )
+ XML.SubElement(gproj, "pattern").text = project["project-pattern"]
+
+ branches = XML.SubElement(gproj, "branches")
+ project_branches = project.get("branches", [])
+
+ if "branch-compare-type" in project and "branch-pattern" in project:
+ warning = (
+ "branch-compare-type and branch-pattern at project "
+ "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'
+ warning += "discarding values and using values from " "branches section"
else:
- warning += 'please use branches section instead'
+ warning += "please use branches section instead"
logger.warning(warning)
if not project_branches:
project_branches = [
- {'branch-compare-type': project.get(
- 'branch-compare-type', 'PLAIN'),
- 'branch-pattern': project['branch-pattern']}]
+ {
+ "branch-compare-type": project.get("branch-compare-type", "PLAIN"),
+ "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 = get_compare_type(
- 'branch-compare-type', branch.get(
- 'branch-compare-type', 'PLAIN'))
- XML.SubElement(gbranch, 'pattern').text = branch['branch-pattern']
-
- project_file_paths = project.get('file-paths', [])
+ branches,
+ "com.sonyericsson.hudson.plugins."
+ "gerrit.trigger.hudsontrigger.data.Branch",
+ )
+ XML.SubElement(gbranch, "compareType").text = get_compare_type(
+ "branch-compare-type", branch.get("branch-compare-type", "PLAIN")
+ )
+ XML.SubElement(gbranch, "pattern").text = branch["branch-pattern"]
+
+ project_file_paths = project.get("file-paths", [])
if project_file_paths:
- fps_tag = XML.SubElement(gproj, 'filePaths')
+ fps_tag = XML.SubElement(gproj, "filePaths")
for file_path in project_file_paths:
- fp_tag = XML.SubElement(fps_tag,
- 'com.sonyericsson.hudson.plugins.'
- 'gerrit.trigger.hudsontrigger.data.'
- 'FilePath')
- XML.SubElement(fp_tag, 'compareType').text = get_compare_type(
- 'compare-type', file_path.get('compare-type', 'PLAIN'))
- XML.SubElement(fp_tag, 'pattern').text = file_path['pattern']
-
- project_forbidden_file_paths = project.get('forbidden-file-paths', [])
+ fp_tag = XML.SubElement(
+ fps_tag,
+ "com.sonyericsson.hudson.plugins."
+ "gerrit.trigger.hudsontrigger.data."
+ "FilePath",
+ )
+ XML.SubElement(fp_tag, "compareType").text = get_compare_type(
+ "compare-type", file_path.get("compare-type", "PLAIN")
+ )
+ XML.SubElement(fp_tag, "pattern").text = file_path["pattern"]
+
+ project_forbidden_file_paths = project.get("forbidden-file-paths", [])
if project_forbidden_file_paths:
- ffps_tag = XML.SubElement(gproj, 'forbiddenFilePaths')
+ ffps_tag = XML.SubElement(gproj, "forbiddenFilePaths")
for forbidden_file_path in project_forbidden_file_paths:
- ffp_tag = XML.SubElement(ffps_tag,
- 'com.sonyericsson.hudson.plugins.'
- 'gerrit.trigger.hudsontrigger.data.'
- 'FilePath')
- XML.SubElement(ffp_tag, 'compareType').text = get_compare_type(
- 'compare-type', forbidden_file_path.get('compare-type',
- 'PLAIN'))
- XML.SubElement(ffp_tag, 'pattern').text = \
- forbidden_file_path['pattern']
-
- topics = project.get('topics', [])
+ ffp_tag = XML.SubElement(
+ ffps_tag,
+ "com.sonyericsson.hudson.plugins."
+ "gerrit.trigger.hudsontrigger.data."
+ "FilePath",
+ )
+ XML.SubElement(ffp_tag, "compareType").text = get_compare_type(
+ "compare-type", forbidden_file_path.get("compare-type", "PLAIN")
+ )
+ XML.SubElement(ffp_tag, "pattern").text = forbidden_file_path["pattern"]
+
+ topics = project.get("topics", [])
if topics:
- topics_tag = XML.SubElement(gproj, 'topics')
+ topics_tag = XML.SubElement(gproj, "topics")
for topic in topics:
- topic_tag = XML.SubElement(topics_tag,
- 'com.sonyericsson.hudson.plugins.'
- 'gerrit.trigger.hudsontrigger.data.'
- 'Topic')
- XML.SubElement(topic_tag, 'compareType').text = \
- get_compare_type('compare-type', topic.get('compare-type',
- 'PLAIN'))
- XML.SubElement(topic_tag, 'pattern').text = topic['pattern']
-
- XML.SubElement(gproj,
- 'disableStrictForbiddenFileVerification').text = str(
- project.get('disable-strict-forbidden-file-verification',
- False)).lower()
+ topic_tag = XML.SubElement(
+ topics_tag,
+ "com.sonyericsson.hudson.plugins."
+ "gerrit.trigger.hudsontrigger.data."
+ "Topic",
+ )
+ XML.SubElement(topic_tag, "compareType").text = get_compare_type(
+ "compare-type", topic.get("compare-type", "PLAIN")
+ )
+ XML.SubElement(topic_tag, "pattern").text = topic["pattern"]
+
+ XML.SubElement(gproj, "disableStrictForbiddenFileVerification").text = str(
+ project.get("disable-strict-forbidden-file-verification", False)
+ ).lower()
build_gerrit_skip_votes(gtrig, data)
general_mappings = [
- ('silent', 'silentMode', False),
- ('silent-start', 'silentStartMode', False),
- ('escape-quotes', 'escapeQuotes', True),
- ('no-name-and-email', 'noNameAndEmailParameters', False),
- ('readable-message', 'readableMessage', False),
- ('dependency-jobs', 'dependencyJobsNames', ''),
+ ("silent", "silentMode", False),
+ ("silent-start", "silentStartMode", False),
+ ("escape-quotes", "escapeQuotes", True),
+ ("no-name-and-email", "noNameAndEmailParameters", False),
+ ("readable-message", "readableMessage", False),
+ ("dependency-jobs", "dependencyJobsNames", ""),
]
- helpers.convert_mapping_to_xml(
- gtrig, data, general_mappings, fail_required=True)
- notification_levels = ['NONE', 'OWNER', 'OWNER_REVIEWERS', 'ALL',
- 'SERVER_DEFAULT']
- notification_level = data.get('notification-level', 'SERVER_DEFAULT')
+ helpers.convert_mapping_to_xml(gtrig, data, general_mappings, fail_required=True)
+ notification_levels = ["NONE", "OWNER", "OWNER_REVIEWERS", "ALL", "SERVER_DEFAULT"]
+ notification_level = data.get("notification-level", "SERVER_DEFAULT")
if notification_level not in notification_levels:
- raise InvalidAttributeError('notification-level', notification_level,
- notification_levels)
- if notification_level == 'SERVER_DEFAULT':
- XML.SubElement(gtrig, 'notificationLevel').text = ''
+ raise InvalidAttributeError(
+ "notification-level", notification_level, notification_levels
+ )
+ if notification_level == "SERVER_DEFAULT":
+ XML.SubElement(gtrig, "notificationLevel").text = ""
else:
- XML.SubElement(gtrig, 'notificationLevel').text = notification_level
- XML.SubElement(gtrig, 'dynamicTriggerConfiguration').text = str(
- data.get('dynamic-trigger-enabled', False))
- XML.SubElement(gtrig, 'triggerConfigURL').text = str(
- data.get('dynamic-trigger-url', ''))
- XML.SubElement(gtrig, 'triggerInformationAction').text = str(
- data.get('trigger-information-action', ''))
- XML.SubElement(gtrig, 'allowTriggeringUnreviewedPatches').text = str(
- data.get('trigger-for-unreviewed-patches', False)).lower()
+ XML.SubElement(gtrig, "notificationLevel").text = notification_level
+ XML.SubElement(gtrig, "dynamicTriggerConfiguration").text = str(
+ data.get("dynamic-trigger-enabled", False)
+ )
+ XML.SubElement(gtrig, "triggerConfigURL").text = str(
+ data.get("dynamic-trigger-url", "")
+ )
+ XML.SubElement(gtrig, "triggerInformationAction").text = str(
+ data.get("trigger-information-action", "")
+ )
+ XML.SubElement(gtrig, "allowTriggeringUnreviewedPatches").text = str(
+ data.get("trigger-for-unreviewed-patches", False)
+ ).lower()
build_gerrit_triggers(gtrig, data)
- override = str(data.get('override-votes', False)).lower()
- if override == 'true':
- for yamlkey, xmlkey in [('gerrit-build-started-verified-value',
- 'gerritBuildStartedVerifiedValue'),
- ('gerrit-build-successful-verified-value',
- 'gerritBuildSuccessfulVerifiedValue'),
- ('gerrit-build-failed-verified-value',
- 'gerritBuildFailedVerifiedValue'),
- ('gerrit-build-unstable-verified-value',
- 'gerritBuildUnstableVerifiedValue'),
- ('gerrit-build-notbuilt-verified-value',
- 'gerritBuildNotBuiltVerifiedValue'),
- ('gerrit-build-started-codereview-value',
- 'gerritBuildStartedCodeReviewValue'),
- ('gerrit-build-successful-codereview-value',
- 'gerritBuildSuccessfulCodeReviewValue'),
- ('gerrit-build-failed-codereview-value',
- 'gerritBuildFailedCodeReviewValue'),
- ('gerrit-build-unstable-codereview-value',
- 'gerritBuildUnstableCodeReviewValue'),
- ('gerrit-build-notbuilt-codereview-value',
- 'gerritBuildNotBuiltCodeReviewValue')]:
+ override = str(data.get("override-votes", False)).lower()
+ if override == "true":
+ for yamlkey, xmlkey in [
+ ("gerrit-build-started-verified-value", "gerritBuildStartedVerifiedValue"),
+ (
+ "gerrit-build-successful-verified-value",
+ "gerritBuildSuccessfulVerifiedValue",
+ ),
+ ("gerrit-build-failed-verified-value", "gerritBuildFailedVerifiedValue"),
+ (
+ "gerrit-build-unstable-verified-value",
+ "gerritBuildUnstableVerifiedValue",
+ ),
+ (
+ "gerrit-build-notbuilt-verified-value",
+ "gerritBuildNotBuiltVerifiedValue",
+ ),
+ (
+ "gerrit-build-started-codereview-value",
+ "gerritBuildStartedCodeReviewValue",
+ ),
+ (
+ "gerrit-build-successful-codereview-value",
+ "gerritBuildSuccessfulCodeReviewValue",
+ ),
+ (
+ "gerrit-build-failed-codereview-value",
+ "gerritBuildFailedCodeReviewValue",
+ ),
+ (
+ "gerrit-build-unstable-codereview-value",
+ "gerritBuildUnstableCodeReviewValue",
+ ),
+ (
+ "gerrit-build-notbuilt-codereview-value",
+ "gerritBuildNotBuiltCodeReviewValue",
+ ),
+ ]:
if data.get(yamlkey) is not None:
# str(int(x)) makes input values like '+1' work
- XML.SubElement(gtrig, xmlkey).text = str(
- int(data.get(yamlkey)))
+ XML.SubElement(gtrig, xmlkey).text = str(int(data.get(yamlkey)))
message_mappings = [
- ('start-message', 'buildStartMessage', ''),
- ('failure-message', 'buildFailureMessage', ''),
- ('successful-message', 'buildSuccessfulMessage', ''),
- ('unstable-message', 'buildUnstableMessage', ''),
- ('notbuilt-message', 'buildNotBuiltMessage', ''),
- ('failure-message-file', 'buildUnsuccessfulFilepath', ''),
- ('custom-url', 'customUrl', ''),
- ('server-name', 'serverName', '__ANY__'),
+ ("start-message", "buildStartMessage", ""),
+ ("failure-message", "buildFailureMessage", ""),
+ ("successful-message", "buildSuccessfulMessage", ""),
+ ("unstable-message", "buildUnstableMessage", ""),
+ ("notbuilt-message", "buildNotBuiltMessage", ""),
+ ("failure-message-file", "buildUnsuccessfulFilepath", ""),
+ ("custom-url", "customUrl", ""),
+ ("server-name", "serverName", "__ANY__"),
]
- helpers.convert_mapping_to_xml(
- gtrig, data, message_mappings, fail_required=True)
+ helpers.convert_mapping_to_xml(gtrig, data, message_mappings, fail_required=True)
def dockerhub_notification(registry, xml_parent, data):
@@ -647,26 +699,32 @@ def dockerhub_notification(registry, xml_parent, data):
/../../tests/triggers/fixtures/dockerhub-notification-full.yaml
:language: yaml
"""
- dockerhub = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.'
- 'registry.notification.DockerHubTrigger')
- dockerhub.set('plugin', 'dockerhub-notification')
-
- option = XML.SubElement(dockerhub, 'options', {'class': 'vector'})
-
- if data.get('referenced-image'):
- XML.SubElement(option, 'org.jenkinsci.plugins.'
- 'registry.notification.'
- 'opt.impl.TriggerForAllUsedInJob')
- repos = data.get('repositories', [])
+ dockerhub = XML.SubElement(
+ xml_parent, "org.jenkinsci.plugins." "registry.notification.DockerHubTrigger"
+ )
+ dockerhub.set("plugin", "dockerhub-notification")
+
+ option = XML.SubElement(dockerhub, "options", {"class": "vector"})
+
+ if data.get("referenced-image"):
+ XML.SubElement(
+ option,
+ "org.jenkinsci.plugins."
+ "registry.notification."
+ "opt.impl.TriggerForAllUsedInJob",
+ )
+ repos = data.get("repositories", [])
if repos:
- specified_names = XML.SubElement(option,
- 'org.jenkinsci.plugins.registry.'
- 'notification.opt.impl.'
- 'TriggerOnSpecifiedImageNames')
-
- repo_tag = XML.SubElement(specified_names, 'repoNames')
+ specified_names = XML.SubElement(
+ option,
+ "org.jenkinsci.plugins.registry."
+ "notification.opt.impl."
+ "TriggerOnSpecifiedImageNames",
+ )
+
+ repo_tag = XML.SubElement(specified_names, "repoNames")
for repo in repos:
- XML.SubElement(repo_tag, 'string').text = repo
+ XML.SubElement(repo_tag, "string").text = repo
def pollscm(registry, xml_parent, data):
@@ -691,8 +749,8 @@ def pollscm(registry, xml_parent, data):
"""
try:
- cron = data['cron']
- ipch = str(data.get('ignore-post-commit-hooks', False)).lower()
+ cron = data["cron"]
+ ipch = str(data.get("ignore-post-commit-hooks", False)).lower()
except KeyError as e:
# ensure specific error on the attribute not being set is raised
# for new format
@@ -702,28 +760,38 @@ def pollscm(registry, xml_parent, data):
logger.warning(
"Your pollscm usage is deprecated, please use"
" the syntax described in the documentation"
- " instead")
+ " instead"
+ )
cron = data
- ipch = 'false'
-
- if not cron and cron != '':
- raise InvalidAttributeError('cron', cron)
-
- scmtrig = XML.SubElement(xml_parent, 'hudson.triggers.SCMTrigger')
- XML.SubElement(scmtrig, 'spec').text = cron
- XML.SubElement(scmtrig, 'ignorePostCommitHooks').text = ipch
-
-
-def build_content_type(xml_parent, entries, namespace, collection_suffix,
- entry_suffix, prefix, collection_name, element_name):
+ ipch = "false"
+
+ if not cron and cron != "":
+ raise InvalidAttributeError("cron", cron)
+
+ scmtrig = XML.SubElement(xml_parent, "hudson.triggers.SCMTrigger")
+ XML.SubElement(scmtrig, "spec").text = cron
+ XML.SubElement(scmtrig, "ignorePostCommitHooks").text = ipch
+
+
+def build_content_type(
+ xml_parent,
+ entries,
+ namespace,
+ collection_suffix,
+ entry_suffix,
+ prefix,
+ collection_name,
+ element_name,
+):
content_type = XML.SubElement(
- xml_parent, '{0}.{1}{2}'.format(namespace, prefix, collection_suffix))
+ xml_parent, "{0}.{1}{2}".format(namespace, prefix, collection_suffix)
+ )
if entries:
collection = XML.SubElement(content_type, collection_name)
for entry in entries:
content_entry = XML.SubElement(
- collection, '{0}.{1}{2}'.format(namespace, prefix,
- entry_suffix))
+ collection, "{0}.{1}{2}".format(namespace, prefix, entry_suffix)
+ )
XML.SubElement(content_entry, element_name).text = entry
@@ -768,65 +836,70 @@ def pollurl(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/pollurl001.yaml
"""
- namespace = 'org.jenkinsci.plugins.urltrigger.'
+ namespace = "org.jenkinsci.plugins.urltrigger."
valid_content_types = {
- 'simple': ['Simple', '', '', []],
- 'json': ['JSON', 'jsonPaths', 'jsonPath', None],
- 'text': ['TEXT', 'regExElements', 'regEx', None],
- 'xml': ['XML', 'xPaths', 'xPath', None]
+ "simple": ["Simple", "", "", []],
+ "json": ["JSON", "jsonPaths", "jsonPath", None],
+ "text": ["TEXT", "regExElements", "regEx", None],
+ "xml": ["XML", "xPaths", "xPath", None],
}
- urltrig = XML.SubElement(xml_parent,
- namespace + 'URLTrigger')
- node = data.get('polling-node')
- XML.SubElement(urltrig, 'spec').text = data.get('cron', '')
- XML.SubElement(urltrig, 'labelRestriction').text = str(bool(node)).lower()
+ urltrig = XML.SubElement(xml_parent, namespace + "URLTrigger")
+ node = data.get("polling-node")
+ XML.SubElement(urltrig, "spec").text = data.get("cron", "")
+ XML.SubElement(urltrig, "labelRestriction").text = str(bool(node)).lower()
if node:
- XML.SubElement(urltrig, 'triggerLabel').text = node
- entries = XML.SubElement(urltrig, 'entries')
- urls = data.get('urls', [])
+ XML.SubElement(urltrig, "triggerLabel").text = node
+ entries = XML.SubElement(urltrig, "entries")
+ urls = data.get("urls", [])
if not urls:
- raise JenkinsJobsException('At least one url must be provided')
+ raise JenkinsJobsException("At least one url must be provided")
mapping = [
- ('proxy', 'proxyActivated', False),
- ('timeout', 'timeout', 300),
- ('check-etag', 'checkETag', False),
- ('check-date', 'checkLastModificationDate', False)
+ ("proxy", "proxyActivated", False),
+ ("timeout", "timeout", 300),
+ ("check-etag", "checkETag", False),
+ ("check-date", "checkLastModificationDate", False),
]
for url in urls:
- entry = XML.SubElement(entries, namespace + 'URLTriggerEntry')
- XML.SubElement(entry, 'url').text = url['url']
- if 'username' in url:
- XML.SubElement(entry, 'username').text = url['username']
- if 'password' in url:
- XML.SubElement(entry, 'password').text = url['password']
- if 'check-status' in url:
- XML.SubElement(entry, 'checkStatus').text = 'true'
- mapping.append(('check-status', 'statusCode', ''))
+ entry = XML.SubElement(entries, namespace + "URLTriggerEntry")
+ XML.SubElement(entry, "url").text = url["url"]
+ if "username" in url:
+ XML.SubElement(entry, "username").text = url["username"]
+ if "password" in url:
+ XML.SubElement(entry, "password").text = url["password"]
+ if "check-status" in url:
+ XML.SubElement(entry, "checkStatus").text = "true"
+ mapping.append(("check-status", "statusCode", ""))
else:
- XML.SubElement(entry, 'checkStatus').text = 'false'
- XML.SubElement(entry, 'statusCode').text = '200'
-
- helpers.convert_mapping_to_xml(
- entry, url, mapping, fail_required=False)
- check_content = url.get('check-content', [])
- XML.SubElement(entry, 'inspectingContent').text = \
- str(bool(check_content)).lower()
- content_types = XML.SubElement(entry, 'contentTypes')
+ XML.SubElement(entry, "checkStatus").text = "false"
+ XML.SubElement(entry, "statusCode").text = "200"
+
+ helpers.convert_mapping_to_xml(entry, url, mapping, fail_required=False)
+ check_content = url.get("check-content", [])
+ XML.SubElement(entry, "inspectingContent").text = str(
+ bool(check_content)
+ ).lower()
+ content_types = XML.SubElement(entry, "contentTypes")
for entry in check_content:
type_name = next(iter(entry.keys()))
if type_name not in valid_content_types:
- raise JenkinsJobsException('check-content must be one of : %s'
- % ', '.join(valid_content_types.
- keys()))
+ raise JenkinsJobsException(
+ "check-content must be one of : %s"
+ % ", ".join(valid_content_types.keys())
+ )
content_type = valid_content_types.get(type_name)
if entry[type_name]:
sub_entries = content_type[3]
if sub_entries is None:
sub_entries = entry[type_name]
- build_content_type(content_types, sub_entries,
- namespace + 'content', 'ContentType',
- 'ContentEntry', *content_type[0:3])
+ build_content_type(
+ content_types,
+ sub_entries,
+ namespace + "content",
+ "ContentType",
+ "ContentEntry",
+ *content_type[0:3]
+ )
def jms_messaging(registry, xml_parent, data):
@@ -871,35 +944,30 @@ def jms_messaging(registry, xml_parent, data):
../../tests/triggers/fixtures/jms-messaging002.yaml
:language: yaml
"""
- namespace = 'com.redhat.jenkins.plugins.ci.'
- jmsm = XML.SubElement(xml_parent,
- namespace + 'CIBuildTrigger')
+ namespace = "com.redhat.jenkins.plugins.ci."
+ jmsm = XML.SubElement(xml_parent, namespace + "CIBuildTrigger")
- if 'override-topic' in data:
- overrides = XML.SubElement(jmsm, 'overrides')
- XML.SubElement(overrides,
- 'topic').text = str(data['override-topic'])
+ if "override-topic" in data:
+ overrides = XML.SubElement(jmsm, "overrides")
+ XML.SubElement(overrides, "topic").text = str(data["override-topic"])
mapping = [
# option, xml name, default value
- ("spec", 'spec', ''),
- ("selector", 'selector', ''),
- ("provider-name", 'providerName', ''),
+ ("spec", "spec", ""),
+ ("selector", "selector", ""),
+ ("provider-name", "providerName", ""),
]
helpers.convert_mapping_to_xml(jmsm, data, mapping, fail_required=True)
- checks = data.get('checks', [])
+ checks = data.get("checks", [])
if len(checks) > 0:
- msgchecks = XML.SubElement(jmsm, 'checks')
+ msgchecks = XML.SubElement(jmsm, "checks")
for check in checks:
- msgcheck = XML.SubElement(msgchecks, namespace +
- 'messaging.checks.MsgCheck')
- mapping = [
- ('field', 'field', ''),
- ('expected-value', 'expectedValue', ''),
- ]
- helpers.convert_mapping_to_xml(
- msgcheck, check, mapping, fail_required=True)
+ msgcheck = XML.SubElement(
+ msgchecks, namespace + "messaging.checks.MsgCheck"
+ )
+ mapping = [("field", "field", ""), ("expected-value", "expectedValue", "")]
+ helpers.convert_mapping_to_xml(msgcheck, check, mapping, fail_required=True)
def timed(registry, xml_parent, data):
@@ -913,8 +981,8 @@ def timed(registry, xml_parent, data):
triggers:
- timed: "@midnight"
"""
- scmtrig = XML.SubElement(xml_parent, 'hudson.triggers.TimerTrigger')
- XML.SubElement(scmtrig, 'spec').text = data
+ scmtrig = XML.SubElement(xml_parent, "hudson.triggers.TimerTrigger")
+ XML.SubElement(scmtrig, "spec").text = data
def bitbucket(registry, xml_parent, data):
@@ -927,9 +995,10 @@ def bitbucket(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/bitbucket.yaml
"""
- bbtrig = XML.SubElement(xml_parent, 'com.cloudbees.jenkins.'
- 'plugins.BitBucketTrigger')
- XML.SubElement(bbtrig, 'spec').text = ''
+ bbtrig = XML.SubElement(
+ xml_parent, "com.cloudbees.jenkins." "plugins.BitBucketTrigger"
+ )
+ XML.SubElement(bbtrig, "spec").text = ""
def github(registry, xml_parent, data):
@@ -942,9 +1011,8 @@ def github(registry, xml_parent, data):
triggers:
- github
"""
- ghtrig = XML.SubElement(xml_parent, 'com.cloudbees.jenkins.'
- 'GitHubPushTrigger')
- XML.SubElement(ghtrig, 'spec').text = ''
+ ghtrig = XML.SubElement(xml_parent, "com.cloudbees.jenkins." "GitHubPushTrigger")
+ XML.SubElement(ghtrig, "spec").text = ""
def github_pull_request(registry, xml_parent, data):
@@ -1028,183 +1096,174 @@ def github_pull_request(registry, xml_parent, data):
/../../tests/triggers/fixtures/github-pull-request-minimal.yaml
:language: yaml
"""
- ghprb = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.ghprb.'
- 'GhprbTrigger')
+ ghprb = XML.SubElement(xml_parent, "org.jenkinsci.plugins.ghprb." "GhprbTrigger")
mapping = [
- ('cron', 'spec', ''),
- ('allow-whitelist-orgs-as-admins',
- 'allowMembersOfWhitelistedOrgsAsAdmin', False),
- ('cron', 'cron', ''),
- ('trigger-phrase', 'triggerPhrase', ''),
- ('skip-build-phrase', 'skipBuildPhrase', ''),
- ('only-trigger-phrase', 'onlyTriggerPhrase', False),
- ('github-hooks', 'useGitHubHooks', False),
- ('permit-all', 'permitAll', False),
- ('auto-close-on-fail',
- 'autoCloseFailedPullRequests', False),
+ ("cron", "spec", ""),
+ (
+ "allow-whitelist-orgs-as-admins",
+ "allowMembersOfWhitelistedOrgsAsAdmin",
+ False,
+ ),
+ ("cron", "cron", ""),
+ ("trigger-phrase", "triggerPhrase", ""),
+ ("skip-build-phrase", "skipBuildPhrase", ""),
+ ("only-trigger-phrase", "onlyTriggerPhrase", False),
+ ("github-hooks", "useGitHubHooks", False),
+ ("permit-all", "permitAll", False),
+ ("auto-close-on-fail", "autoCloseFailedPullRequests", False),
]
- admin_string = "\n".join(data.get('admin-list', []))
- XML.SubElement(ghprb, 'adminlist').text = admin_string
- white_string = "\n".join(data.get('white-list', []))
- XML.SubElement(ghprb, 'whitelist').text = white_string
- org_string = "\n".join(data.get('org-list', []))
- XML.SubElement(ghprb, 'orgslist').text = org_string
- white_list_labels_string = "\n".join(data.get('white-list-labels', []))
- XML.SubElement(ghprb, 'whiteListLabels').text = white_list_labels_string
- black_list_labels_string = "\n".join(data.get('black-list-labels', []))
- XML.SubElement(ghprb, 'blackListLabels').text = black_list_labels_string
- excluded_regions_string = "\n".join(data.get('excluded-regions', []))
- XML.SubElement(ghprb, 'excludedRegions').text = excluded_regions_string
- included_regions_string = "\n".join(data.get('included-regions', []))
- XML.SubElement(ghprb, 'includedRegions').text = included_regions_string
-
- build_desc_template = data.get('build-desc-template', '')
+ admin_string = "\n".join(data.get("admin-list", []))
+ XML.SubElement(ghprb, "adminlist").text = admin_string
+ white_string = "\n".join(data.get("white-list", []))
+ XML.SubElement(ghprb, "whitelist").text = white_string
+ org_string = "\n".join(data.get("org-list", []))
+ XML.SubElement(ghprb, "orgslist").text = org_string
+ white_list_labels_string = "\n".join(data.get("white-list-labels", []))
+ XML.SubElement(ghprb, "whiteListLabels").text = white_list_labels_string
+ black_list_labels_string = "\n".join(data.get("black-list-labels", []))
+ XML.SubElement(ghprb, "blackListLabels").text = black_list_labels_string
+ excluded_regions_string = "\n".join(data.get("excluded-regions", []))
+ XML.SubElement(ghprb, "excludedRegions").text = excluded_regions_string
+ included_regions_string = "\n".join(data.get("included-regions", []))
+ XML.SubElement(ghprb, "includedRegions").text = included_regions_string
+
+ build_desc_template = data.get("build-desc-template", "")
if build_desc_template:
- XML.SubElement(ghprb, 'buildDescTemplate').text = str(
- build_desc_template)
+ XML.SubElement(ghprb, "buildDescTemplate").text = str(build_desc_template)
- helpers.convert_mapping_to_xml(
- ghprb, data, mapping, fail_required=False)
- white_list_target_branches = data.get('white-list-target-branches', [])
+ helpers.convert_mapping_to_xml(ghprb, data, mapping, fail_required=False)
+ white_list_target_branches = data.get("white-list-target-branches", [])
if white_list_target_branches:
- ghprb_wltb = XML.SubElement(ghprb, 'whiteListTargetBranches')
+ ghprb_wltb = XML.SubElement(ghprb, "whiteListTargetBranches")
for branch in white_list_target_branches:
- be = XML.SubElement(ghprb_wltb, 'org.jenkinsci.plugins.'
- 'ghprb.GhprbBranch')
- XML.SubElement(be, 'branch').text = str(branch)
+ be = XML.SubElement(
+ ghprb_wltb, "org.jenkinsci.plugins." "ghprb.GhprbBranch"
+ )
+ XML.SubElement(be, "branch").text = str(branch)
- black_list_target_branches = data.get('black-list-target-branches', [])
+ black_list_target_branches = data.get("black-list-target-branches", [])
if black_list_target_branches:
- ghprb_bltb = XML.SubElement(ghprb, 'blackListTargetBranches')
+ ghprb_bltb = XML.SubElement(ghprb, "blackListTargetBranches")
for branch in black_list_target_branches:
- be = XML.SubElement(ghprb_bltb, 'org.jenkinsci.plugins.'
- 'ghprb.GhprbBranch')
- XML.SubElement(be, 'branch').text = str(branch)
+ be = XML.SubElement(
+ ghprb_bltb, "org.jenkinsci.plugins." "ghprb.GhprbBranch"
+ )
+ XML.SubElement(be, "branch").text = str(branch)
- auth_id = data.get('auth-id', '')
+ auth_id = data.get("auth-id", "")
if auth_id:
- XML.SubElement(ghprb, 'gitHubAuthId').text = str(auth_id)
+ XML.SubElement(ghprb, "gitHubAuthId").text = str(auth_id)
# PR status update fields
- status_context = data.get('status-context', '')
- triggered_status = data.get('triggered-status', '')
- started_status = data.get('started-status', '')
- status_url = data.get('status-url', '')
- status_add_test_results = data.get('status-add-test-results', '')
- success_status = data.get('success-status', '')
- failure_status = data.get('failure-status', '')
- error_status = data.get('error-status', '')
+ status_context = data.get("status-context", "")
+ triggered_status = data.get("triggered-status", "")
+ started_status = data.get("started-status", "")
+ status_url = data.get("status-url", "")
+ status_add_test_results = data.get("status-add-test-results", "")
+ success_status = data.get("success-status", "")
+ failure_status = data.get("failure-status", "")
+ error_status = data.get("error-status", "")
# is status handling is required?
requires_status = (
- status_context or
- triggered_status or
- started_status or
- status_url or
- status_add_test_results or
- success_status or
- failure_status or
- error_status
+ status_context
+ or triggered_status
+ or started_status
+ or status_url
+ or status_add_test_results
+ or success_status
+ or failure_status
+ or error_status
)
# is status message handling required?
- requires_status_message = (
- success_status or
- failure_status or
- error_status
- )
+ requires_status_message = success_status or failure_status or error_status
# is comment handling required?
- success_comment = data.get('success-comment', '')
- failure_comment = data.get('failure-comment', '')
- error_comment = data.get('error-comment', '')
- requires_job_comment = (
- success_comment or
- failure_comment or
- error_comment
- )
+ success_comment = data.get("success-comment", "")
+ failure_comment = data.get("failure-comment", "")
+ error_comment = data.get("error-comment", "")
+ requires_job_comment = success_comment or failure_comment or error_comment
# When the value of cancel-builds-on-update comes from deep_formatter,
# the value is of type 'str', otherwise the value is of type 'bool'
- cancel_builds_on_update = str(
- data.get('cancel-builds-on-update', False)).lower() == 'true'
+ cancel_builds_on_update = (
+ str(data.get("cancel-builds-on-update", False)).lower() == "true"
+ )
# We want to have only one 'extensions' subelement, even if status
# handling, comment handling and other extensions are enabled.
if requires_status or requires_job_comment or cancel_builds_on_update:
- extensions = XML.SubElement(ghprb, 'extensions')
+ extensions = XML.SubElement(ghprb, "extensions")
# Both comment and status elements have this same type. Using a const is
# much easier to read than repeating the tokens for this class each time
# it's used
- comment_type = 'org.jenkinsci.plugins.ghprb.extensions.comments.'
- comment_type = comment_type + 'GhprbBuildResultMessage'
+ comment_type = "org.jenkinsci.plugins.ghprb.extensions.comments."
+ comment_type = comment_type + "GhprbBuildResultMessage"
if requires_status:
- simple_status = XML.SubElement(extensions,
- 'org.jenkinsci.plugins'
- '.ghprb.extensions.status.'
- 'GhprbSimpleStatus')
+ simple_status = XML.SubElement(
+ extensions,
+ "org.jenkinsci.plugins" ".ghprb.extensions.status." "GhprbSimpleStatus",
+ )
if status_context:
- XML.SubElement(simple_status, 'commitStatusContext').text = str(
- status_context)
+ XML.SubElement(simple_status, "commitStatusContext").text = str(
+ status_context
+ )
if triggered_status:
- XML.SubElement(simple_status, 'triggeredStatus').text = str(
- triggered_status)
+ XML.SubElement(simple_status, "triggeredStatus").text = str(
+ triggered_status
+ )
if started_status:
- XML.SubElement(simple_status, 'startedStatus').text = str(
- started_status)
+ XML.SubElement(simple_status, "startedStatus").text = str(started_status)
if status_url:
- XML.SubElement(simple_status, 'statusUrl').text = str(
- status_url)
+ XML.SubElement(simple_status, "statusUrl").text = str(status_url)
if status_add_test_results:
- XML.SubElement(simple_status, 'addTestResults').text = str(
- status_add_test_results).lower()
+ XML.SubElement(simple_status, "addTestResults").text = str(
+ status_add_test_results
+ ).lower()
if requires_status_message:
- completed_elem = XML.SubElement(simple_status, 'completedStatus')
+ completed_elem = XML.SubElement(simple_status, "completedStatus")
if success_status:
success_elem = XML.SubElement(completed_elem, comment_type)
- XML.SubElement(success_elem, 'message').text = str(
- success_status)
- XML.SubElement(success_elem, 'result').text = 'SUCCESS'
+ XML.SubElement(success_elem, "message").text = str(success_status)
+ XML.SubElement(success_elem, "result").text = "SUCCESS"
if failure_status:
failure_elem = XML.SubElement(completed_elem, comment_type)
- XML.SubElement(failure_elem, 'message').text = str(
- failure_status)
- XML.SubElement(failure_elem, 'result').text = 'FAILURE'
+ XML.SubElement(failure_elem, "message").text = str(failure_status)
+ XML.SubElement(failure_elem, "result").text = "FAILURE"
if error_status:
error_elem = XML.SubElement(completed_elem, comment_type)
- XML.SubElement(error_elem, 'message').text = str(error_status)
- XML.SubElement(error_elem, 'result').text = 'ERROR'
+ XML.SubElement(error_elem, "message").text = str(error_status)
+ XML.SubElement(error_elem, "result").text = "ERROR"
# job comment handling
if requires_job_comment:
- build_status = XML.SubElement(extensions,
- 'org.jenkinsci.plugins.ghprb.extensions'
- '.comments.'
- 'GhprbBuildStatus')
- messages_elem = XML.SubElement(build_status, 'messages')
+ build_status = XML.SubElement(
+ extensions,
+ "org.jenkinsci.plugins.ghprb.extensions" ".comments." "GhprbBuildStatus",
+ )
+ messages_elem = XML.SubElement(build_status, "messages")
if success_comment:
success_comment_elem = XML.SubElement(messages_elem, comment_type)
- XML.SubElement(success_comment_elem, 'message').text = str(
- success_comment)
- XML.SubElement(success_comment_elem, 'result').text = 'SUCCESS'
+ XML.SubElement(success_comment_elem, "message").text = str(success_comment)
+ XML.SubElement(success_comment_elem, "result").text = "SUCCESS"
if failure_comment:
failure_comment_elem = XML.SubElement(messages_elem, comment_type)
- XML.SubElement(failure_comment_elem, 'message').text = str(
- failure_comment)
- XML.SubElement(failure_comment_elem, 'result').text = 'FAILURE'
+ XML.SubElement(failure_comment_elem, "message").text = str(failure_comment)
+ XML.SubElement(failure_comment_elem, "result").text = "FAILURE"
if error_comment:
error_comment_elem = XML.SubElement(messages_elem, comment_type)
- XML.SubElement(error_comment_elem, 'message').text = str(
- error_comment)
- XML.SubElement(error_comment_elem, 'result').text = 'ERROR'
+ XML.SubElement(error_comment_elem, "message").text = str(error_comment)
+ XML.SubElement(error_comment_elem, "result").text = "ERROR"
if cancel_builds_on_update:
- XML.SubElement(extensions,
- 'org.jenkinsci.plugins.ghprb.extensions.'
- 'build.GhprbCancelBuildsOnUpdate')
+ XML.SubElement(
+ extensions,
+ "org.jenkinsci.plugins.ghprb.extensions." "build.GhprbCancelBuildsOnUpdate",
+ )
def gitlab_merge_request(registry, xml_parent, data):
@@ -1246,26 +1305,28 @@ def gitlab_merge_request(registry, xml_parent, data):
.. literalinclude:: \
/../../tests/triggers/fixtures/gitlab-merge-request002.yaml
"""
- ghprb = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.gitlab.'
- 'GitlabBuildTrigger')
+ ghprb = XML.SubElement(
+ xml_parent, "org.jenkinsci.plugins.gitlab." "GitlabBuildTrigger"
+ )
- plugin_info = registry.get_plugin_info('Gitlab Merge Request Builder')
+ plugin_info = registry.get_plugin_info("Gitlab Merge Request Builder")
# Note: Assume latest version of plugin is preferred config format
plugin_ver = pkg_resources.parse_version(
- plugin_info.get('version', str(sys.maxsize)))
+ plugin_info.get("version", str(sys.maxsize))
+ )
if plugin_ver >= pkg_resources.parse_version("2.0.0"):
mapping = [
- ('cron', 'spec', None),
- ('project-path', 'projectPath', None),
- ('target-branch-regex', 'targetBranchRegex', ''),
- ('use-http-url', 'useHttpUrl', False),
- ('assignee-filter', 'assigneeFilter', 'jenkins'),
- ('tag-filter', 'tagFilter', 'Build'),
- ('trigger-comment', 'triggerComment', ''),
- ('auto-close-failed', 'autoCloseFailed', False),
- ('auto-merge-passed', 'autoMergePassed', False),
+ ("cron", "spec", None),
+ ("project-path", "projectPath", None),
+ ("target-branch-regex", "targetBranchRegex", ""),
+ ("use-http-url", "useHttpUrl", False),
+ ("assignee-filter", "assigneeFilter", "jenkins"),
+ ("tag-filter", "tagFilter", "Build"),
+ ("trigger-comment", "triggerComment", ""),
+ ("auto-close-failed", "autoCloseFailed", False),
+ ("auto-merge-passed", "autoMergePassed", False),
]
else:
# The plugin version is < 2.0.0
@@ -1275,17 +1336,16 @@ def gitlab_merge_request(registry, xml_parent, data):
# have them take effect. Also, cron and projectPath are prefixed with
# underscores in the plugin, but spec is not.
mapping = [
- ('cron', 'spec', None),
- ('cron', '__cron', None),
- ('project-path', '__projectPath', None),
- ('use-http-url', '__useHttpUrl', False),
- ('assignee-filter', '__assigneeFilter', 'jenkins'),
- ('tag-filter', '__tagFilter', 'Build'),
- ('trigger-comment', '__triggerComment', ''),
- ('publish-build-progress-messages',
- '__publishBuildProgressMessages', True),
- ('auto-close-failed', '__autoCloseFailed', False),
- ('auto-merge-passed', '__autoMergePassed', False),
+ ("cron", "spec", None),
+ ("cron", "__cron", None),
+ ("project-path", "__projectPath", None),
+ ("use-http-url", "__useHttpUrl", False),
+ ("assignee-filter", "__assigneeFilter", "jenkins"),
+ ("tag-filter", "__tagFilter", "Build"),
+ ("trigger-comment", "__triggerComment", ""),
+ ("publish-build-progress-messages", "__publishBuildProgressMessages", True),
+ ("auto-close-failed", "__autoCloseFailed", False),
+ ("auto-merge-passed", "__autoMergePassed", False),
]
helpers.convert_mapping_to_xml(ghprb, data, mapping, True)
@@ -1381,82 +1441,77 @@ def gitlab(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/gitlab004.yaml
:language: yaml
"""
+
def _add_xml(elem, name, value):
XML.SubElement(elem, name).text = value
gitlab = XML.SubElement(
- xml_parent, 'com.dabsquared.gitlabjenkins.GitLabPushTrigger'
+ xml_parent, "com.dabsquared.gitlabjenkins.GitLabPushTrigger"
)
- plugin_info = registry.get_plugin_info('GitLab Plugin')
+ plugin_info = registry.get_plugin_info("GitLab Plugin")
# Note: Assume latest version of plugin is preferred config format
plugin_ver = pkg_resources.parse_version(
- plugin_info.get('version', str(sys.maxsize)))
+ plugin_info.get("version", str(sys.maxsize))
+ )
- valid_merge_request = ['never', 'source', 'both']
+ valid_merge_request = ["never", "source", "both"]
if plugin_ver >= pkg_resources.parse_version("1.1.26"):
mapping = [
- ('trigger-open-merge-request-push',
- 'triggerOpenMergeRequestOnPush', 'never', valid_merge_request),
+ (
+ "trigger-open-merge-request-push",
+ "triggerOpenMergeRequestOnPush",
+ "never",
+ valid_merge_request,
+ )
]
- helpers.convert_mapping_to_xml(
- gitlab, data, mapping, fail_required=True)
+ helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
else:
mapping = [
- ('trigger-open-merge-request-push',
- 'triggerOpenMergeRequestOnPush', True),
- ]
- helpers.convert_mapping_to_xml(
- gitlab, data, mapping, fail_required=True)
-
- if plugin_ver < pkg_resources.parse_version('1.2.0'):
- if data.get('branch-filter-type', '') == 'All':
- data['branch-filter-type'] = ''
- valid_filters = ['', 'NameBasedFilter', 'RegexBasedFilter']
- mapping = [
- ('branch-filter-type', 'branchFilterName', '', valid_filters),
+ ("trigger-open-merge-request-push", "triggerOpenMergeRequestOnPush", True)
]
- helpers.convert_mapping_to_xml(
- gitlab, data, mapping, fail_required=True)
+ helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
+
+ if plugin_ver < pkg_resources.parse_version("1.2.0"):
+ if data.get("branch-filter-type", "") == "All":
+ data["branch-filter-type"] = ""
+ valid_filters = ["", "NameBasedFilter", "RegexBasedFilter"]
+ mapping = [("branch-filter-type", "branchFilterName", "", valid_filters)]
+ helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
else:
- valid_filters = ['All', 'NameBasedFilter', 'RegexBasedFilter']
- mapping = [
- ('branch-filter-type', 'branchFilterType', 'All', valid_filters),
- ]
- helpers.convert_mapping_to_xml(
- gitlab, data, mapping, fail_required=True)
+ valid_filters = ["All", "NameBasedFilter", "RegexBasedFilter"]
+ mapping = [("branch-filter-type", "branchFilterType", "All", valid_filters)]
+ helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
- XML.SubElement(gitlab, 'spec').text = ''
+ XML.SubElement(gitlab, "spec").text = ""
mapping = [
- ('trigger-push', 'triggerOnPush', True),
- ('trigger-merge-request', 'triggerOnMergeRequest', True),
- ('trigger-accepted-merge-request', 'triggerOnAcceptedMergeRequest',
- False),
- ('trigger-closed-merge-request', 'triggerOnClosedMergeRequest', False),
- ('trigger-note', 'triggerOnNoteRequest', True),
- ('note-regex', 'noteRegex', 'Jenkins please retry a build'),
- ('ci-skip', 'ciSkip', True),
- ('wip-skip', 'skipWorkInProgressMergeRequest', True),
- ('set-build-description', 'setBuildDescription', True),
- ('add-note-merge-request', 'addNoteOnMergeRequest', True),
- ('add-vote-merge-request', 'addVoteOnMergeRequest', True),
- ('accept-merge-request-on-success', 'acceptMergeRequestOnSuccess',
- False),
- ('add-ci-message', 'addCiMessage', False),
- ('allow-all-branches', 'allowAllBranches', False),
- ('target-branch-regex', 'targetBranchRegex', ''),
- ('secret-token', 'secretToken', '')
+ ("trigger-push", "triggerOnPush", True),
+ ("trigger-merge-request", "triggerOnMergeRequest", True),
+ ("trigger-accepted-merge-request", "triggerOnAcceptedMergeRequest", False),
+ ("trigger-closed-merge-request", "triggerOnClosedMergeRequest", False),
+ ("trigger-note", "triggerOnNoteRequest", True),
+ ("note-regex", "noteRegex", "Jenkins please retry a build"),
+ ("ci-skip", "ciSkip", True),
+ ("wip-skip", "skipWorkInProgressMergeRequest", True),
+ ("set-build-description", "setBuildDescription", True),
+ ("add-note-merge-request", "addNoteOnMergeRequest", True),
+ ("add-vote-merge-request", "addVoteOnMergeRequest", True),
+ ("accept-merge-request-on-success", "acceptMergeRequestOnSuccess", False),
+ ("add-ci-message", "addCiMessage", False),
+ ("allow-all-branches", "allowAllBranches", False),
+ ("target-branch-regex", "targetBranchRegex", ""),
+ ("secret-token", "secretToken", ""),
]
list_mapping = (
- ('include-branches', 'includeBranchesSpec', []),
- ('exclude-branches', 'excludeBranchesSpec', []),
+ ("include-branches", "includeBranchesSpec", []),
+ ("exclude-branches", "excludeBranchesSpec", []),
)
helpers.convert_mapping_to_xml(gitlab, data, mapping, fail_required=True)
for yaml_name, xml_name, default_val in list_mapping:
- value = ', '.join(data.get(yaml_name, default_val))
+ value = ", ".join(data.get(yaml_name, default_val))
_add_xml(gitlab, xml_name, value)
@@ -1487,40 +1542,40 @@ def build_result(registry, xml_parent, data):
/../../tests/triggers/fixtures/build-result-minimal.yaml
:language: yaml
"""
- brt = XML.SubElement(xml_parent, 'org.jenkinsci.plugins.'
- 'buildresulttrigger.BuildResultTrigger')
- brt.set('plugin', 'buildresult-trigger')
- mapping = [
- ('cron', 'spec', ''),
- ('combine', 'combinedJobs', False),
- ]
+ brt = XML.SubElement(
+ xml_parent, "org.jenkinsci.plugins." "buildresulttrigger.BuildResultTrigger"
+ )
+ brt.set("plugin", "buildresult-trigger")
+ mapping = [("cron", "spec", ""), ("combine", "combinedJobs", False)]
helpers.convert_mapping_to_xml(brt, data, mapping, fail_required=True)
- jobs_info = XML.SubElement(brt, 'jobsInfo')
- result_dict = {'success': 'SUCCESS',
- 'unstable': 'UNSTABLE',
- 'failure': 'FAILURE',
- 'not-built': 'NOT_BUILT',
- 'aborted': 'ABORTED'}
- for group in data['groups']:
- brti = XML.SubElement(jobs_info, 'org.jenkinsci.plugins.'
- 'buildresulttrigger.model.'
- 'BuildResultTriggerInfo')
- jobs_string = ",".join(group['jobs'])
- mapping = [
- ('', 'jobNames', jobs_string, group),
- ]
- helpers.convert_mapping_to_xml(
- brti, group, mapping, fail_required=True)
- checked_results = XML.SubElement(brti, 'checkedResults')
- for result in group.get('results', ['success']):
- model_checked = XML.SubElement(checked_results, 'org.jenkinsci.'
- 'plugins.buildresulttrigger.model.'
- 'CheckedResult')
- mapping = [
- ('', 'checked', result, result_dict),
- ]
+ jobs_info = XML.SubElement(brt, "jobsInfo")
+ result_dict = {
+ "success": "SUCCESS",
+ "unstable": "UNSTABLE",
+ "failure": "FAILURE",
+ "not-built": "NOT_BUILT",
+ "aborted": "ABORTED",
+ }
+ for group in data["groups"]:
+ brti = XML.SubElement(
+ jobs_info,
+ "org.jenkinsci.plugins."
+ "buildresulttrigger.model."
+ "BuildResultTriggerInfo",
+ )
+ jobs_string = ",".join(group["jobs"])
+ mapping = [("", "jobNames", jobs_string, group)]
+ helpers.convert_mapping_to_xml(brti, group, mapping, fail_required=True)
+ checked_results = XML.SubElement(brti, "checkedResults")
+ for result in group.get("results", ["success"]):
+ model_checked = XML.SubElement(
+ checked_results,
+ "org.jenkinsci." "plugins.buildresulttrigger.model." "CheckedResult",
+ )
+ mapping = [("", "checked", result, result_dict)]
helpers.convert_mapping_to_xml(
- model_checked, result_dict, mapping, fail_required=True)
+ model_checked, result_dict, mapping, fail_required=True
+ )
def reverse(registry, xml_parent, data):
@@ -1550,32 +1605,33 @@ def reverse(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/reverse-list.yaml
"""
reserveBuildTrigger = XML.SubElement(
- xml_parent, 'jenkins.triggers.ReverseBuildTrigger')
+ xml_parent, "jenkins.triggers.ReverseBuildTrigger"
+ )
- supported_thresholds = ['SUCCESS', 'UNSTABLE', 'FAILURE']
+ supported_thresholds = ["SUCCESS", "UNSTABLE", "FAILURE"]
- XML.SubElement(reserveBuildTrigger, 'spec').text = ''
+ XML.SubElement(reserveBuildTrigger, "spec").text = ""
- jobs = data.get('jobs')
+ jobs = data.get("jobs")
if isinstance(jobs, list):
jobs = ",".join(jobs)
- XML.SubElement(reserveBuildTrigger, 'upstreamProjects').text = \
- jobs
+ XML.SubElement(reserveBuildTrigger, "upstreamProjects").text = jobs
- threshold = XML.SubElement(reserveBuildTrigger, 'threshold')
- result = str(data.get('result', 'success')).upper()
+ threshold = XML.SubElement(reserveBuildTrigger, "threshold")
+ result = str(data.get("result", "success")).upper()
if result not in supported_thresholds:
raise jenkins_jobs.errors.JenkinsJobsException(
- "Choice should be one of the following options: %s." %
- ", ".join(supported_thresholds))
- XML.SubElement(threshold, 'name').text = \
- hudson_model.THRESHOLDS[result]['name']
- XML.SubElement(threshold, 'ordinal').text = \
- hudson_model.THRESHOLDS[result]['ordinal']
- XML.SubElement(threshold, 'color').text = \
- hudson_model.THRESHOLDS[result]['color']
- XML.SubElement(threshold, 'completeBuild').text = \
- str(hudson_model.THRESHOLDS[result]['complete']).lower()
+ "Choice should be one of the following options: %s."
+ % ", ".join(supported_thresholds)
+ )
+ XML.SubElement(threshold, "name").text = hudson_model.THRESHOLDS[result]["name"]
+ XML.SubElement(threshold, "ordinal").text = hudson_model.THRESHOLDS[result][
+ "ordinal"
+ ]
+ XML.SubElement(threshold, "color").text = hudson_model.THRESHOLDS[result]["color"]
+ XML.SubElement(threshold, "completeBuild").text = str(
+ hudson_model.THRESHOLDS[result]["complete"]
+ ).lower()
def monitor_folders(registry, xml_parent, data):
@@ -1609,25 +1665,26 @@ def monitor_folders(registry, xml_parent, data):
/../../tests/triggers/fixtures/monitor-folders-minimal.yaml
:language: yaml
"""
- ft = XML.SubElement(xml_parent, ('org.jenkinsci.plugins.fstrigger.'
- 'triggers.FolderContentTrigger'))
- ft.set('plugin', 'fstrigger')
+ ft = XML.SubElement(
+ xml_parent, ("org.jenkinsci.plugins.fstrigger." "triggers.FolderContentTrigger")
+ )
+ ft.set("plugin", "fstrigger")
- mappings = [
- ('path', 'path', ''),
- ('cron', 'spec', ''),
- ]
+ mappings = [("path", "path", ""), ("cron", "spec", "")]
helpers.convert_mapping_to_xml(ft, data, mappings, fail_required=True)
- includes = data.get('includes', '')
- XML.SubElement(ft, 'includes').text = ",".join(includes)
- XML.SubElement(ft, 'excludes').text = data.get('excludes', '')
- XML.SubElement(ft, 'excludeCheckLastModificationDate').text = str(
- not data.get('check-modification-date', True)).lower()
- XML.SubElement(ft, 'excludeCheckContent').text = str(
- not data.get('check-content', True)).lower()
- XML.SubElement(ft, 'excludeCheckFewerOrMoreFiles').text = str(
- not data.get('check-fewer', True)).lower()
+ includes = data.get("includes", "")
+ XML.SubElement(ft, "includes").text = ",".join(includes)
+ XML.SubElement(ft, "excludes").text = data.get("excludes", "")
+ XML.SubElement(ft, "excludeCheckLastModificationDate").text = str(
+ not data.get("check-modification-date", True)
+ ).lower()
+ XML.SubElement(ft, "excludeCheckContent").text = str(
+ not data.get("check-content", True)
+ ).lower()
+ XML.SubElement(ft, "excludeCheckFewerOrMoreFiles").text = str(
+ not data.get("check-fewer", True)
+ ).lower()
def monitor_files(registry, xml_parent, data):
@@ -1707,73 +1764,83 @@ def monitor_files(registry, xml_parent, data):
/../../tests/triggers/fixtures/monitor-files-full.yaml
:language: yaml
"""
- ft_prefix = 'org.jenkinsci.plugins.fstrigger.triggers.'
- valid_strategies = ['LATEST', 'IGNORE']
+ ft_prefix = "org.jenkinsci.plugins.fstrigger.triggers."
+ valid_strategies = ["LATEST", "IGNORE"]
valid_content_types = {
- 'simple': ['Simple', '', '', []],
- 'jar': ['JAR', '', '', []],
- 'tar': ['Tar', '', '', []],
- 'zip': ['ZIP', '', '', []],
- 'source-manifest': ['SourceManifest'],
- 'jar-manifest': ['JARManifest'],
- 'properties': ['Properties'],
- 'xml': ['XML', 'expressions', 'expression', None],
- 'text': ['Text', 'regexElements', 'regex', None]
+ "simple": ["Simple", "", "", []],
+ "jar": ["JAR", "", "", []],
+ "tar": ["Tar", "", "", []],
+ "zip": ["ZIP", "", "", []],
+ "source-manifest": ["SourceManifest"],
+ "jar-manifest": ["JARManifest"],
+ "properties": ["Properties"],
+ "xml": ["XML", "expressions", "expression", None],
+ "text": ["Text", "regexElements", "regex", None],
}
- ft = XML.SubElement(xml_parent, ft_prefix + 'FileNameTrigger')
- XML.SubElement(ft, 'spec').text = str(data.get('cron', ''))
- files = data.get('files', [])
+ ft = XML.SubElement(xml_parent, ft_prefix + "FileNameTrigger")
+ XML.SubElement(ft, "spec").text = str(data.get("cron", ""))
+ files = data.get("files", [])
if not files:
- raise JenkinsJobsException('At least one file must be provided')
+ raise JenkinsJobsException("At least one file must be provided")
- files_tag = XML.SubElement(ft, 'fileInfo')
+ files_tag = XML.SubElement(ft, "fileInfo")
for file_info in files:
- file_tag = XML.SubElement(files_tag, ft_prefix + 'FileNameTriggerInfo')
- check_content = file_info.get('check-content', [])
+ file_tag = XML.SubElement(files_tag, ft_prefix + "FileNameTriggerInfo")
+ check_content = file_info.get("check-content", [])
files_mapping = [
- ('path', 'filePathPattern', None),
- ('strategy', 'strategy', 'LATEST', valid_strategies),
- ('', 'inspectingContentFile', bool(check_content)),
+ ("path", "filePathPattern", None),
+ ("strategy", "strategy", "LATEST", valid_strategies),
+ ("", "inspectingContentFile", bool(check_content)),
]
helpers.convert_mapping_to_xml(
- file_tag, file_info, files_mapping, fail_required=True)
+ file_tag, file_info, files_mapping, fail_required=True
+ )
- base_content_tag = XML.SubElement(file_tag, 'contentFileTypes')
+ base_content_tag = XML.SubElement(file_tag, "contentFileTypes")
for content in check_content:
type_name = next(iter(content.keys()))
if type_name not in valid_content_types:
- raise InvalidAttributeError('check-content', type_name,
- valid_content_types.keys())
+ raise InvalidAttributeError(
+ "check-content", type_name, valid_content_types.keys()
+ )
content_type = valid_content_types.get(type_name)
if len(content_type) == 1:
- class_name = '{0}filecontent.{1}FileContent'.format(
- ft_prefix, content_type[0])
+ class_name = "{0}filecontent.{1}FileContent".format(
+ ft_prefix, content_type[0]
+ )
content_data = content.get(type_name)
if not content_data:
- raise JenkinsJobsException("Need to specify something "
- "under " + type_name)
+ raise JenkinsJobsException(
+ "Need to specify something " "under " + type_name
+ )
for entry in content_data:
content_tag = XML.SubElement(base_content_tag, class_name)
- keys = entry.get('keys', [])
+ keys = entry.get("keys", [])
if keys:
- XML.SubElement(content_tag, 'keys2Inspect'
- ).text = ",".join(keys)
- XML.SubElement(content_tag, 'allKeys').text = str(
- entry.get('all-keys', True)).lower()
+ XML.SubElement(content_tag, "keys2Inspect").text = ",".join(
+ keys
+ )
+ XML.SubElement(content_tag, "allKeys").text = str(
+ entry.get("all-keys", True)
+ ).lower()
else:
if content[type_name]:
sub_entries = content_type[3]
if sub_entries is None:
sub_entries = content[type_name]
- build_content_type(base_content_tag, sub_entries,
- ft_prefix + 'filecontent',
- 'FileContent', 'FileContentEntry',
- *content_type[0:3])
+ build_content_type(
+ base_content_tag,
+ sub_entries,
+ ft_prefix + "filecontent",
+ "FileContent",
+ "FileContentEntry",
+ *content_type[0:3]
+ )
if bool(check_content):
- XML.SubElement(file_tag,
- 'doNotCheckLastModificationDate').text = str(
- file_info.get('ignore-modificaton-date', True)).lower()
+ XML.SubElement(file_tag, "doNotCheckLastModificationDate").text = str(
+ file_info.get("ignore-modificaton-date", True)
+ ).lower()
def ivy(registry, xml_parent, data):
@@ -1799,27 +1866,25 @@ def ivy(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/ivy.yaml
"""
- it = XML.SubElement(xml_parent,
- 'org.jenkinsci.plugins.ivytrigger.IvyTrigger')
+ it = XML.SubElement(xml_parent, "org.jenkinsci.plugins.ivytrigger.IvyTrigger")
mapping = [
- ('path', 'ivyPath', None),
- ('settings-path', 'ivySettingsPath', None),
- ('properties-content', 'propertiesContent', None),
- ('debug', 'debug', False),
- ('download-artifacts', 'downloadArtifacts', True),
- ('enable-concurrent', 'enableConcurrentBuild', False),
- ('cron', 'spec', ''),
+ ("path", "ivyPath", None),
+ ("settings-path", "ivySettingsPath", None),
+ ("properties-content", "propertiesContent", None),
+ ("debug", "debug", False),
+ ("download-artifacts", "downloadArtifacts", True),
+ ("enable-concurrent", "enableConcurrentBuild", False),
+ ("cron", "spec", ""),
]
helpers.convert_mapping_to_xml(it, data, mapping, fail_required=False)
- properties_file_path = data.get('properties-file', [])
- XML.SubElement(it, 'propertiesFilePath').text = ";".join(
- properties_file_path)
+ properties_file_path = data.get("properties-file", [])
+ XML.SubElement(it, "propertiesFilePath").text = ";".join(properties_file_path)
- label = data.get('label')
- XML.SubElement(it, 'labelRestriction').text = str(bool(label)).lower()
+ label = data.get("label")
+ XML.SubElement(it, "labelRestriction").text = str(bool(label)).lower()
if label:
- XML.SubElement(it, 'triggerLabel').text = label
+ XML.SubElement(it, "triggerLabel").text = label
def script(registry, xml_parent, data):
@@ -1847,20 +1912,17 @@ def script(registry, xml_parent, data):
.. literalinclude:: /../../tests/triggers/fixtures/script-minimal.yaml
:language: yaml
"""
- st = XML.SubElement(
- xml_parent,
- 'org.jenkinsci.plugins.scripttrigger.ScriptTrigger'
- )
- st.set('plugin', 'scripttrigger')
- label = data.get('label')
+ st = XML.SubElement(xml_parent, "org.jenkinsci.plugins.scripttrigger.ScriptTrigger")
+ st.set("plugin", "scripttrigger")
+ label = data.get("label")
mappings = [
- ('script', 'script', ''),
- ('script-file-path', 'scriptFilePath', ''),
- ('cron', 'spec', ''),
- ('enable-concurrent', 'enableConcurrentBuild', False),
- ('exit-code', 'exitCode', 0),
- ('', 'labelRestriction', bool(label)),
- ('', 'triggerLabel', label),
+ ("script", "script", ""),
+ ("script-file-path", "scriptFilePath", ""),
+ ("cron", "spec", ""),
+ ("enable-concurrent", "enableConcurrentBuild", False),
+ ("exit-code", "exitCode", 0),
+ ("", "labelRestriction", bool(label)),
+ ("", "triggerLabel", label),
]
helpers.convert_mapping_to_xml(st, data, mappings, fail_required=False)
@@ -1896,21 +1958,20 @@ def groovy_script(registry, xml_parent, data):
:language: yaml
"""
gst = XML.SubElement(
- xml_parent,
- 'org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger'
+ xml_parent, "org.jenkinsci.plugins.scripttrigger.groovy.GroovyScriptTrigger"
)
- gst.set('plugin', 'scripttrigger')
+ gst.set("plugin", "scripttrigger")
- label = data.get('label')
+ label = data.get("label")
mappings = [
- ('system-script', 'groovySystemScript', False),
- ('script', 'groovyExpression', ''),
- ('script-file-path', 'groovyFilePath', ''),
- ('property-file-path', 'propertiesFilePath', ''),
- ('enable-concurrent', 'enableConcurrentBuild', False),
- ('cron', 'spec', ''),
- ('', 'labelRestriction', bool(label)),
- ('', 'triggerLabel', label),
+ ("system-script", "groovySystemScript", False),
+ ("script", "groovyExpression", ""),
+ ("script-file-path", "groovyFilePath", ""),
+ ("property-file-path", "propertiesFilePath", ""),
+ ("enable-concurrent", "enableConcurrentBuild", False),
+ ("cron", "spec", ""),
+ ("", "labelRestriction", bool(label)),
+ ("", "triggerLabel", label),
]
helpers.convert_mapping_to_xml(gst, data, mappings, fail_required=False)
@@ -1939,27 +2000,18 @@ def rabbitmq(registry, xml_parent, data):
:language: yaml
"""
- rabbitmq_prefix = 'org.jenkinsci.plugins.rabbitmqbuildtrigger.'
- rabbitmq = XML.SubElement(
- xml_parent,
- rabbitmq_prefix + 'RemoteBuildTrigger')
- filters = data.get('filters', [])
- filter_mapping = [
- ('field', 'field', None),
- ('value', 'value', None),
- ]
+ rabbitmq_prefix = "org.jenkinsci.plugins.rabbitmqbuildtrigger."
+ rabbitmq = XML.SubElement(xml_parent, rabbitmq_prefix + "RemoteBuildTrigger")
+ filters = data.get("filters", [])
+ filter_mapping = [("field", "field", None), ("value", "value", None)]
if filters:
- filters_tag = XML.SubElement(rabbitmq, 'filters')
+ filters_tag = XML.SubElement(rabbitmq, "filters")
for filter_data in filters:
- filter_tag = XML.SubElement(
- filters_tag,
- rabbitmq_prefix + 'Filter')
+ filter_tag = XML.SubElement(filters_tag, rabbitmq_prefix + "Filter")
helpers.convert_mapping_to_xml(
- filter_tag, filter_data, filter_mapping, fail_required=True)
- mapping = [
- ('', 'spec', ''),
- ('token', 'remoteBuildToken', None),
- ]
+ filter_tag, filter_data, filter_mapping, fail_required=True
+ )
+ mapping = [("", "spec", ""), ("token", "remoteBuildToken", None)]
helpers.convert_mapping_to_xml(rabbitmq, data, mapping, fail_required=True)
@@ -1981,14 +2033,10 @@ def parameterized_timer(parser, xml_parent, data):
param_timer = XML.SubElement(
xml_parent,
- 'org.jenkinsci.plugins.parameterizedscheduler.'
- 'ParameterizedTimerTrigger')
- mapping = [
- ('', 'spec', ''),
- ('cron', 'parameterizedSpecification', None),
- ]
- helpers.convert_mapping_to_xml(
- param_timer, data, mapping, fail_required=True)
+ "org.jenkinsci.plugins.parameterizedscheduler." "ParameterizedTimerTrigger",
+ )
+ mapping = [("", "spec", ""), ("cron", "parameterizedSpecification", None)]
+ helpers.convert_mapping_to_xml(param_timer, data, mapping, fail_required=True)
def jira_changelog(registry, xml_parent, data):
@@ -2045,52 +2093,62 @@ def jira_changelog(registry, xml_parent, data):
/../../tests/triggers/fixtures/jira-changelog-full.yaml
:language: yaml
"""
- jcht = XML.SubElement(xml_parent, 'com.ceilfors.jenkins.plugins.'
- 'jiratrigger.JiraChangelogTrigger')
- jcht.set('plugin', 'jira-trigger')
+ jcht = XML.SubElement(
+ xml_parent, "com.ceilfors.jenkins.plugins." "jiratrigger.JiraChangelogTrigger"
+ )
+ jcht.set("plugin", "jira-trigger")
- mapping = [
- ('jql-filter', 'jqlFilter', ''),
- ]
+ mapping = [("jql-filter", "jqlFilter", "")]
helpers.convert_mapping_to_xml(jcht, data, mapping, fail_required=True)
- changelog = XML.SubElement(jcht, 'changelogMatchers')
+ changelog = XML.SubElement(jcht, "changelogMatchers")
mappings = [
- ('field', 'field', ''),
- ('new-value', 'newValue', ''),
- ('old-value', 'oldValue', ''),
- ('compare-new-value', 'comparingNewValue', False),
- ('compare-old-value', 'comparingOldValue', False),
+ ("field", "field", ""),
+ ("new-value", "newValue", ""),
+ ("old-value", "oldValue", ""),
+ ("compare-new-value", "comparingNewValue", False),
+ ("compare-old-value", "comparingOldValue", False),
]
- for matcher in data.get('changelog-matchers', []):
+ for matcher in data.get("changelog-matchers", []):
+
+ fieldtype = matcher.get("field-type")
+ if fieldtype == "CUSTOM":
+ parent_tag = XML.SubElement(
+ changelog,
+ "com.ceilfors.jenkins."
+ "plugins.jiratrigger.changelog."
+ "CustomFieldChangelogMatcher",
+ )
+ XML.SubElement(parent_tag, "fieldType").text = "CUSTOM"
+
+ elif fieldtype == "JIRA":
+ parent_tag = XML.SubElement(
+ changelog,
+ "com.ceilfors.jenkins."
+ "plugins.jiratrigger.changelog."
+ "JiraFieldChangelogMatcher",
+ )
+ XML.SubElement(parent_tag, "fieldType").text = "JIRA"
- fieldtype = matcher.get('field-type')
- if fieldtype == 'CUSTOM':
- parent_tag = XML.SubElement(changelog, 'com.ceilfors.jenkins.'
- 'plugins.jiratrigger.changelog.'
- 'CustomFieldChangelogMatcher')
- XML.SubElement(parent_tag, 'fieldType').text = 'CUSTOM'
-
- elif fieldtype == 'JIRA':
- parent_tag = XML.SubElement(changelog, 'com.ceilfors.jenkins.'
- 'plugins.jiratrigger.changelog.'
- 'JiraFieldChangelogMatcher')
- XML.SubElement(parent_tag, 'fieldType').text = 'JIRA'
-
- helpers.convert_mapping_to_xml(parent_tag, matcher,
- mappings, fail_required=True)
+ helpers.convert_mapping_to_xml(
+ parent_tag, matcher, mappings, fail_required=True
+ )
- param = XML.SubElement(jcht, 'parameterMappings')
+ param = XML.SubElement(jcht, "parameterMappings")
parameter_mappings = [
- ('jenkins-parameter', 'jenkinsParameter', ''),
- ('issue-attribute-path', 'issueAttributePath', ''),
+ ("jenkins-parameter", "jenkinsParameter", ""),
+ ("issue-attribute-path", "issueAttributePath", ""),
]
- for parameter in data.get('parameter-mapping', []):
- parent = XML.SubElement(param, 'com.ceilfors.jenkins.plugins.'
- 'jiratrigger.parameter.'
- 'IssueAttributePathParameterMapping')
+ for parameter in data.get("parameter-mapping", []):
+ parent = XML.SubElement(
+ param,
+ "com.ceilfors.jenkins.plugins."
+ "jiratrigger.parameter."
+ "IssueAttributePathParameterMapping",
+ )
helpers.convert_mapping_to_xml(
- parent, parameter, parameter_mappings, fail_required=True)
+ parent, parameter, parameter_mappings, fail_required=True
+ )
def jira_comment_trigger(registry, xml_parent, data):
@@ -2122,26 +2180,31 @@ def jira_comment_trigger(registry, xml_parent, data):
/../../tests/triggers/fixtures/jira-comment-trigger-full.yaml
:language: yaml
"""
- jct = XML.SubElement(xml_parent, 'com.ceilfors.jenkins.plugins.'
- 'jiratrigger.JiraCommentTrigger')
- jct.set('plugin', 'jira-trigger')
+ jct = XML.SubElement(
+ xml_parent, "com.ceilfors.jenkins.plugins." "jiratrigger.JiraCommentTrigger"
+ )
+ jct.set("plugin", "jira-trigger")
mapping = [
- ('jql-filter', 'jqlFilter', ''),
- ('comment-pattern', 'commentPattern', '(?i)build this please'),
+ ("jql-filter", "jqlFilter", ""),
+ ("comment-pattern", "commentPattern", "(?i)build this please"),
]
helpers.convert_mapping_to_xml(jct, data, mapping, fail_required=True)
- param = XML.SubElement(jct, 'parameterMappings')
- for parameter in data.get('parameter-mapping', []):
- parent = XML.SubElement(param, 'com.ceilfors.jenkins.plugins.'
- 'jiratrigger.parameter.'
- 'IssueAttributePathParameterMapping')
+ param = XML.SubElement(jct, "parameterMappings")
+ for parameter in data.get("parameter-mapping", []):
+ parent = XML.SubElement(
+ param,
+ "com.ceilfors.jenkins.plugins."
+ "jiratrigger.parameter."
+ "IssueAttributePathParameterMapping",
+ )
parameter_mappings = [
- ('jenkins-parameter', 'jenkinsParameter', ''),
- ('issue-attribute-path', 'issueAttributePath', ''),
+ ("jenkins-parameter", "jenkinsParameter", ""),
+ ("issue-attribute-path", "issueAttributePath", ""),
]
helpers.convert_mapping_to_xml(
- parent, parameter, parameter_mappings, fail_required=True)
+ parent, parameter, parameter_mappings, fail_required=True
+ )
def stash_pull_request(registry, xml_parent, data):
@@ -2188,32 +2251,34 @@ def stash_pull_request(registry, xml_parent, data):
"""
pr_trigger = XML.SubElement(
- xml_parent,
- 'stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger')
- pr_trigger.set('plugin', 'stash-pullrequest-builder')
+ xml_parent, "stashpullrequestbuilder.stashpullrequestbuilder.StashBuildTrigger"
+ )
+ pr_trigger.set("plugin", "stash-pullrequest-builder")
mappings = [
- ('cron', 'spec', None), # Spec needs to be set to the same as cron
- ('cron', 'cron', None),
- ('stash-host', 'stashHost', None),
- ('credentials-id', 'credentialsId', None),
- ('project', 'projectCode', None),
- ('repository', 'repositoryName', None),
- ('ci-skip-phrases', 'ciSkipPhrases', 'NO TEST'),
- ('ci-build-phrases', 'ciBuildPhrases', 'test this please'),
- ('target-branches', 'targetBranchesToBuild', ''),
- ('ignore-ssl', 'ignoreSsl', False),
- ('check-destination-commit', 'checkDestinationCommit', False),
- ('check-mergable', 'checkMergeable', False),
- ('merge-on-success', 'mergeOnSuccess', False),
- ('check-not-conflicted', 'checkNotConflicted', True),
- ('only-build-on-comment', 'onlyBuildOnComment', False),
- ('delete-previous-build-finish-comments',
- 'deletePreviousBuildFinishComments', False),
- ('cancel-outdated-jobs', 'cancelOutdatedJobsEnabled', False),
+ ("cron", "spec", None), # Spec needs to be set to the same as cron
+ ("cron", "cron", None),
+ ("stash-host", "stashHost", None),
+ ("credentials-id", "credentialsId", None),
+ ("project", "projectCode", None),
+ ("repository", "repositoryName", None),
+ ("ci-skip-phrases", "ciSkipPhrases", "NO TEST"),
+ ("ci-build-phrases", "ciBuildPhrases", "test this please"),
+ ("target-branches", "targetBranchesToBuild", ""),
+ ("ignore-ssl", "ignoreSsl", False),
+ ("check-destination-commit", "checkDestinationCommit", False),
+ ("check-mergable", "checkMergeable", False),
+ ("merge-on-success", "mergeOnSuccess", False),
+ ("check-not-conflicted", "checkNotConflicted", True),
+ ("only-build-on-comment", "onlyBuildOnComment", False),
+ (
+ "delete-previous-build-finish-comments",
+ "deletePreviousBuildFinishComments",
+ False,
+ ),
+ ("cancel-outdated-jobs", "cancelOutdatedJobsEnabled", False),
]
- helpers.convert_mapping_to_xml(
- pr_trigger, data, mappings, fail_required=True)
+ helpers.convert_mapping_to_xml(pr_trigger, data, mappings, fail_required=True)
def generic_webhook_trigger(registry, xml_parent, data):
@@ -2264,29 +2329,28 @@ def generic_webhook_trigger(registry, xml_parent, data):
/../../tests/triggers/fixtures/generic-webhook-trigger-full.yaml
"""
- namespace = 'org.jenkinsci.plugins.gwt.'
- gwtrig = XML.SubElement(xml_parent,
- namespace + 'GenericTrigger')
- gwtrig.set('plugin', 'generic-webhook-trigger')
- XML.SubElement(gwtrig, 'spec')
+ namespace = "org.jenkinsci.plugins.gwt."
+ gwtrig = XML.SubElement(xml_parent, namespace + "GenericTrigger")
+ gwtrig.set("plugin", "generic-webhook-trigger")
+ XML.SubElement(gwtrig, "spec")
# Generic Varibles (Post content parameters in UI)
try:
- if data.get('post-content-params'):
- gen_vars = XML.SubElement(gwtrig, 'genericVariables')
+ if data.get("post-content-params"):
+ gen_vars = XML.SubElement(gwtrig, "genericVariables")
mappings = [
- ('type', 'expressionType', '', ['JSONPath', 'XPath']),
- ('key', 'key', ''),
- ('value', 'value', ''),
- ('regex-filter', 'regexpFilter', ''),
- ('default-value', 'defaultValue', ''),
+ ("type", "expressionType", "", ["JSONPath", "XPath"]),
+ ("key", "key", ""),
+ ("value", "value", ""),
+ ("regex-filter", "regexpFilter", ""),
+ ("default-value", "defaultValue", ""),
]
- for gen_var_list in data.get('post-content-params'):
- gen_var_tag = XML.SubElement(
- gen_vars, namespace + 'GenericVariable')
+ for gen_var_list in data.get("post-content-params"):
+ gen_var_tag = XML.SubElement(gen_vars, namespace + "GenericVariable")
helpers.convert_mapping_to_xml(
- gen_var_tag, gen_var_list, mappings, fail_required=True)
+ gen_var_tag, gen_var_list, mappings, fail_required=True
+ )
except AttributeError:
pass
@@ -2294,50 +2358,47 @@ def generic_webhook_trigger(registry, xml_parent, data):
# done. It probably doesn't need to be, but since this is the first
# swing..
mapping = [
- ('regex-filter-text', 'regexpFilterText', ''),
- ('regex-filter-expression', 'regexpFilterExpression', '')
+ ("regex-filter-text", "regexpFilterText", ""),
+ ("regex-filter-expression", "regexpFilterExpression", ""),
]
helpers.convert_mapping_to_xml(gwtrig, data, mapping, fail_required=False)
# Generic Request Variables (Request parameters in UI)
try:
- if data.get('request-params'):
- gen_req_vars = XML.SubElement(gwtrig, 'genericRequestVariables')
- mappings = [
- ('key', 'key', ''),
- ('regex-filter', 'regexpFilter', '')
- ]
+ if data.get("request-params"):
+ gen_req_vars = XML.SubElement(gwtrig, "genericRequestVariables")
+ mappings = [("key", "key", ""), ("regex-filter", "regexpFilter", "")]
- for gen_req_list in data.get('request-params'):
+ for gen_req_list in data.get("request-params"):
gen_req_tag = XML.SubElement(
- gen_req_vars, namespace + 'GenericRequestVariable')
+ gen_req_vars, namespace + "GenericRequestVariable"
+ )
helpers.convert_mapping_to_xml(
- gen_req_tag, gen_req_list, mappings, fail_required=False)
+ gen_req_tag, gen_req_list, mappings, fail_required=False
+ )
except AttributeError:
pass
try:
- if data.get('header-params'):
- gen_header_vars = XML.SubElement(gwtrig, 'genericHeaderVariables')
- mappings = [
- ('key', 'key', ''),
- ('regex-filter', 'regexpFilter', '')
- ]
- for gen_header_list in data.get('header-params'):
+ if data.get("header-params"):
+ gen_header_vars = XML.SubElement(gwtrig, "genericHeaderVariables")
+ mappings = [("key", "key", ""), ("regex-filter", "regexpFilter", "")]
+ for gen_header_list in data.get("header-params"):
gen_header_tag = XML.SubElement(
- gen_header_vars, namespace + 'GenericHeaderVariable')
+ gen_header_vars, namespace + "GenericHeaderVariable"
+ )
helpers.convert_mapping_to_xml(
- gen_header_tag, gen_header_list, mappings,
- fail_required=False)
+ gen_header_tag, gen_header_list, mappings, fail_required=False
+ )
except AttributeError:
pass
mapping = [
- ('print-post-content', 'printPostContent', False),
- ('print-contrib-var', 'printContributedVariables', False),
- ('cause', 'causeString', ''),
- ('token', 'token', ''),
- ('silent-response', 'silentResponse', False),
+ ("print-post-content", "printPostContent", False),
+ ("print-contrib-var", "printContributedVariables", False),
+ ("cause", "causeString", ""),
+ ("token", "token", ""),
+ ("silent-response", "silentResponse", False),
]
# This should cover all the top level
helpers.convert_mapping_to_xml(gwtrig, data, mapping, fail_required=False)
@@ -2346,14 +2407,14 @@ def generic_webhook_trigger(registry, xml_parent, data):
class Triggers(jenkins_jobs.modules.base.Base):
sequence = 50
- component_type = 'trigger'
- component_list_type = 'triggers'
+ component_type = "trigger"
+ component_list_type = "triggers"
def gen_xml(self, xml_parent, data):
- triggers = data.get('triggers', [])
+ triggers = data.get("triggers", [])
if not triggers:
return
- trig_e = XML.SubElement(xml_parent, 'triggers', {'class': 'vector'})
+ trig_e = XML.SubElement(xml_parent, "triggers", {"class": "vector"})
for trigger in triggers:
- self.registry.dispatch('trigger', trig_e, trigger)
+ self.registry.dispatch("trigger", trig_e, trigger)