diff options
author | Zuul <zuul@review.openstack.org> | 2017-10-23 19:12:14 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-10-23 19:12:14 +0000 |
commit | a23f8bf8db087d6bdc7c56b8f217f696927350a8 (patch) | |
tree | ef9921f1e700e92512dd5a8b77dc5a3b76992873 | |
parent | 2b65528b443443e3ca9be579b85d908d1165d69e (diff) | |
parent | 8bcd0d0bd2caf9d28d4f55cba712afb20654b591 (diff) | |
download | python-jenkins-job-builder-a23f8bf8db087d6bdc7c56b8f217f696927350a8.tar.gz python-jenkins-job-builder-a23f8bf8db087d6bdc7c56b8f217f696927350a8.tar.xz python-jenkins-job-builder-a23f8bf8db087d6bdc7c56b8f217f696927350a8.zip |
Merge "Add cloudbees folder creation support"
-rw-r--r-- | doc/source/project_folder.rst | 7 | ||||
-rw-r--r-- | jenkins_jobs/modules/project_folder.py | 57 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | tests/yamlparser/fixtures/project_folder_template001.xml | 20 | ||||
-rw-r--r-- | tests/yamlparser/fixtures/project_folder_template001.yaml | 3 | ||||
-rw-r--r-- | tests/yamlparser/fixtures/project_folder_template002.xml | 20 | ||||
-rw-r--r-- | tests/yamlparser/fixtures/project_folder_template002.yaml | 8 |
7 files changed, 116 insertions, 0 deletions
diff --git a/doc/source/project_folder.rst b/doc/source/project_folder.rst new file mode 100644 index 00000000..1d5b70a6 --- /dev/null +++ b/doc/source/project_folder.rst @@ -0,0 +1,7 @@ +.. _project_folder: + +Folder Project +================= + +.. automodule:: project_folder + :members: diff --git a/jenkins_jobs/modules/project_folder.py b/jenkins_jobs/modules/project_folder.py new file mode 100644 index 00000000..ac6e6bdd --- /dev/null +++ b/jenkins_jobs/modules/project_folder.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2015 Cisco Systems, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +""" +The folder Project module handles creating Jenkins folder projects. +You may specify ``folder`` in the ``project-type`` attribute of +the :ref:`Job` definition. + +Requires the Jenkins :jenkins-wiki:`CloudBees Folder Plugin +<CloudBees+Folder+Plugin>`. + +Job example: + + .. literalinclude:: + /../../tests/yamlparser/fixtures/project_folder_template001.yaml + +Job template example: + + .. literalinclude:: + /../../tests/yamlparser/fixtures/project_folder_template002.yaml + +""" + +import xml.etree.ElementTree as XML +import jenkins_jobs.modules.base + + +class Folder(jenkins_jobs.modules.base.Base): + sequence = 0 + + def root_xml(self, data): + xml_parent = XML.Element('com.cloudbees.hudson.plugins.folder.Folder', + plugin="cloudbees-folder") + XML.SubElement(xml_parent, 'actions') + attributes = {"class": "com.cloudbees.hudson.plugins.folder." + "icons.StockFolderIcon"} + XML.SubElement(xml_parent, 'icon', attrib=attributes) + XML.SubElement(xml_parent, 'views') + attributes = {"class": "hudson.views.DefaultViewsTabBar"} + XML.SubElement(xml_parent, 'viewsTabBar', attrib=attributes) + XML.SubElement(xml_parent, 'primaryView').text = 'All' + XML.SubElement(xml_parent, 'healthMetrics') + + return xml_parent @@ -44,6 +44,7 @@ jjb.cli.subcommands = jenkins_jobs.projects = externaljob=jenkins_jobs.modules.project_externaljob:ExternalJob flow=jenkins_jobs.modules.project_flow:Flow + folder=jenkins_jobs.modules.project_folder:Folder freestyle=jenkins_jobs.modules.project_freestyle:Freestyle matrix=jenkins_jobs.modules.project_matrix:Matrix maven=jenkins_jobs.modules.project_maven:Maven diff --git a/tests/yamlparser/fixtures/project_folder_template001.xml b/tests/yamlparser/fixtures/project_folder_template001.xml new file mode 100644 index 00000000..38cd68d0 --- /dev/null +++ b/tests/yamlparser/fixtures/project_folder_template001.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.cloudbees.hudson.plugins.folder.Folder plugin="cloudbees-folder"> + <actions/> + <icon class="com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon"/> + <views/> + <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> + <primaryView>All</primaryView> + <healthMetrics/> + <actions/> + <description><!-- Managed by Jenkins Job Builder --></description> + <keepDependencies>false</keepDependencies> + <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> + <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> + <concurrentBuild>false</concurrentBuild> + <canRoam>true</canRoam> + <properties/> + <scm class="hudson.scm.NullSCM"/> + <publishers/> + <buildWrappers/> +</com.cloudbees.hudson.plugins.folder.Folder> diff --git a/tests/yamlparser/fixtures/project_folder_template001.yaml b/tests/yamlparser/fixtures/project_folder_template001.yaml new file mode 100644 index 00000000..0a499490 --- /dev/null +++ b/tests/yamlparser/fixtures/project_folder_template001.yaml @@ -0,0 +1,3 @@ +- job: + name: folder_test + project-type: folder diff --git a/tests/yamlparser/fixtures/project_folder_template002.xml b/tests/yamlparser/fixtures/project_folder_template002.xml new file mode 100644 index 00000000..38cd68d0 --- /dev/null +++ b/tests/yamlparser/fixtures/project_folder_template002.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<com.cloudbees.hudson.plugins.folder.Folder plugin="cloudbees-folder"> + <actions/> + <icon class="com.cloudbees.hudson.plugins.folder.icons.StockFolderIcon"/> + <views/> + <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> + <primaryView>All</primaryView> + <healthMetrics/> + <actions/> + <description><!-- Managed by Jenkins Job Builder --></description> + <keepDependencies>false</keepDependencies> + <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> + <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> + <concurrentBuild>false</concurrentBuild> + <canRoam>true</canRoam> + <properties/> + <scm class="hudson.scm.NullSCM"/> + <publishers/> + <buildWrappers/> +</com.cloudbees.hudson.plugins.folder.Folder> diff --git a/tests/yamlparser/fixtures/project_folder_template002.yaml b/tests/yamlparser/fixtures/project_folder_template002.yaml new file mode 100644 index 00000000..4af049cd --- /dev/null +++ b/tests/yamlparser/fixtures/project_folder_template002.yaml @@ -0,0 +1,8 @@ +- job-template: + name: 'folder-{name}' + project-type: folder + +- project: + name: test + jobs: + - 'folder-{name}' |