summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-10-23 19:12:14 +0000
committerGerrit Code Review <review@openstack.org>2017-10-23 19:12:14 +0000
commita23f8bf8db087d6bdc7c56b8f217f696927350a8 (patch)
treeef9921f1e700e92512dd5a8b77dc5a3b76992873
parent2b65528b443443e3ca9be579b85d908d1165d69e (diff)
parent8bcd0d0bd2caf9d28d4f55cba712afb20654b591 (diff)
downloadpython-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.rst7
-rw-r--r--jenkins_jobs/modules/project_folder.py57
-rw-r--r--setup.cfg1
-rw-r--r--tests/yamlparser/fixtures/project_folder_template001.xml20
-rw-r--r--tests/yamlparser/fixtures/project_folder_template001.yaml3
-rw-r--r--tests/yamlparser/fixtures/project_folder_template002.xml20
-rw-r--r--tests/yamlparser/fixtures/project_folder_template002.yaml8
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
diff --git a/setup.cfg b/setup.cfg
index 1d5a34aa..77edb7e6 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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>&lt;!-- Managed by Jenkins Job Builder --&gt;</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>&lt;!-- Managed by Jenkins Job Builder --&gt;</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}'