Merge "Add Dimensions SCM support"
This commit is contained in:
commit
4960f92ad3
@ -1256,6 +1256,109 @@ def url(registry, xml_parent, data):
|
|||||||
data.get('clear-workspace', False)).lower()
|
data.get('clear-workspace', False)).lower()
|
||||||
|
|
||||||
|
|
||||||
|
def dimensions(registry, xml_parent, data):
|
||||||
|
"""yaml: dimensions
|
||||||
|
|
||||||
|
Specifies the Dimensions SCM repository for this job.
|
||||||
|
Requires Jenkins :jenkins-wiki:`Dimensions Plugin <Dimensions+Plugin>`.
|
||||||
|
|
||||||
|
:arg str project: Project name of format PRODUCT_ID:PROJECT_NAME (required)
|
||||||
|
:arg str permissions: Default Permissions for updated files
|
||||||
|
(default: DEFAULT)
|
||||||
|
|
||||||
|
:Permissions:
|
||||||
|
* **DEFAULT**
|
||||||
|
* **READONLY**
|
||||||
|
* **WRITABLE**
|
||||||
|
:arg str eol: End of line (default: DEFAULT)
|
||||||
|
|
||||||
|
:End of line:
|
||||||
|
* **DEFAULT**
|
||||||
|
* **UNIX**
|
||||||
|
* **WINDOWS**
|
||||||
|
* **UNCHANGED**
|
||||||
|
:arg list folders: Folders to monitor (default /)
|
||||||
|
:arg list exclude: Paths to exclude from monitor
|
||||||
|
:arg str username: Repository username for this job
|
||||||
|
:arg str password: Repository password for this job
|
||||||
|
:arg str server: Dimensions server for this job
|
||||||
|
:arg str database: Dimensions database for this job.
|
||||||
|
Format must be database@dsn
|
||||||
|
:arg bool update: Use update (default false)
|
||||||
|
:arg bool clear-workspace: Clear workspace prior to build (default false)
|
||||||
|
:arg bool force-build: Force build even if the repository SCM checkout
|
||||||
|
operation fails (default false)
|
||||||
|
:arg bool overwrite-modified: Overwrite files in worspace from
|
||||||
|
repository files (default false)
|
||||||
|
:arg bool expand-vars: Expand substitution variables (default false)
|
||||||
|
:arg bool no-metadata: Checkout files with no metadata (default false)
|
||||||
|
:arg bool maintain-timestamp: Maintain file timestamp from Dimensions
|
||||||
|
(default false)
|
||||||
|
:arg bool slave-checkout: Force slave based checkout (default false)
|
||||||
|
:arg str timezone: Server timezone
|
||||||
|
:arg str web-url: Dimensions Web URL
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
.. literalinclude:: /../../tests/scm/fixtures/dimensions-minimal.yaml
|
||||||
|
:language: yaml
|
||||||
|
.. literalinclude:: /../../tests/scm/fixtures/dimensions-full.yaml
|
||||||
|
:language: yaml
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
scm = XML.SubElement(
|
||||||
|
xml_parent,
|
||||||
|
'scm', {'class': 'hudson.plugins.dimensionsscm.DimensionsSCM'})
|
||||||
|
|
||||||
|
# List to check against for valid permission
|
||||||
|
perm = ['DEFAULT', 'READONLY', 'WRITABLE']
|
||||||
|
|
||||||
|
# List to check against for valid end of line
|
||||||
|
eol = ['DEFAULT', 'UNIX', 'WINDOWS', 'UNCHANGED']
|
||||||
|
|
||||||
|
mapping = [
|
||||||
|
# option, xml name, default value (text), attributes (hard coded)
|
||||||
|
('project', 'project', None),
|
||||||
|
('permissions', 'permissions', 'DEFAULT', perm),
|
||||||
|
('eol', 'eol', 'DEFAULT', eol),
|
||||||
|
('update', 'canJobUpdate', False),
|
||||||
|
('clear-workspace', 'canJobDelete', False),
|
||||||
|
('force-build', 'canJobForce', False),
|
||||||
|
('overwrite-modified', 'canJobRevert', False),
|
||||||
|
('expand-vars', 'canJobExpand', False),
|
||||||
|
('no-metadata', 'canJobNoMetadata', False),
|
||||||
|
('maintain-timestamp', 'canJobNoTouch', False),
|
||||||
|
('slave-checkout', 'forceAsSlave', False),
|
||||||
|
]
|
||||||
|
convert_mapping_to_xml(scm, data, mapping, fail_required=True)
|
||||||
|
|
||||||
|
# Folders to monitor. Default '/'
|
||||||
|
folders = XML.SubElement(scm, 'folders')
|
||||||
|
if 'folders' in data:
|
||||||
|
for folder in data['folders']:
|
||||||
|
XML.SubElement(folders, 'string').text = folder
|
||||||
|
else:
|
||||||
|
XML.SubElement(folders, 'string').text = '/'
|
||||||
|
|
||||||
|
# Excluded paths
|
||||||
|
exclude = XML.SubElement(scm, 'pathsToExclude')
|
||||||
|
if 'exclude' in data:
|
||||||
|
for exc in data['exclude']:
|
||||||
|
XML.SubElement(exclude, 'string').text = exc
|
||||||
|
|
||||||
|
optional_mapping = [
|
||||||
|
# option, xml name, default value (text), attributes (hard coded)
|
||||||
|
('username', 'jobUserName', None),
|
||||||
|
('password', 'jobPasswd', None),
|
||||||
|
('server', 'jobServer', None),
|
||||||
|
('database', 'jobDatabase', None),
|
||||||
|
('timezone', 'jobTimeZone', None),
|
||||||
|
('web-url', 'jobWebUrl', None),
|
||||||
|
]
|
||||||
|
convert_mapping_to_xml(scm, data, optional_mapping, fail_required=False)
|
||||||
|
|
||||||
|
|
||||||
class SCM(jenkins_jobs.modules.base.Base):
|
class SCM(jenkins_jobs.modules.base.Base):
|
||||||
sequence = 30
|
sequence = 30
|
||||||
|
|
||||||
|
30
tests/scm/fixtures/dimensions-full.xml
Normal file
30
tests/scm/fixtures/dimensions-full.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<scm class="hudson.plugins.dimensionsscm.DimensionsSCM">
|
||||||
|
<project>myProduct:myProject</project>
|
||||||
|
<permissions>WRITABLE</permissions>
|
||||||
|
<eol>UNIX</eol>
|
||||||
|
<canJobUpdate>true</canJobUpdate>
|
||||||
|
<canJobDelete>true</canJobDelete>
|
||||||
|
<canJobForce>true</canJobForce>
|
||||||
|
<canJobRevert>true</canJobRevert>
|
||||||
|
<canJobExpand>true</canJobExpand>
|
||||||
|
<canJobNoMetadata>true</canJobNoMetadata>
|
||||||
|
<canJobNoTouch>true</canJobNoTouch>
|
||||||
|
<forceAsSlave>true</forceAsSlave>
|
||||||
|
<folders>
|
||||||
|
<string>src</string>
|
||||||
|
<string>test</string>
|
||||||
|
</folders>
|
||||||
|
<pathsToExclude>
|
||||||
|
<string>excluded_dir</string>
|
||||||
|
<string>excluded_other_dir</string>
|
||||||
|
</pathsToExclude>
|
||||||
|
<jobUserName>johnd</jobUserName>
|
||||||
|
<jobPasswd>passw0rd</jobPasswd>
|
||||||
|
<jobServer>my.dmscm.server:1234</jobServer>
|
||||||
|
<jobDatabase>myDatabase@myDsn</jobDatabase>
|
||||||
|
<jobTimeZone>Europe/Berlin</jobTimeZone>
|
||||||
|
<jobWebUrl>https://my.dmscm.weburl</jobWebUrl>
|
||||||
|
</scm>
|
||||||
|
</project>
|
25
tests/scm/fixtures/dimensions-full.yaml
Normal file
25
tests/scm/fixtures/dimensions-full.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
scm:
|
||||||
|
- dimensions:
|
||||||
|
project: myProduct:myProject
|
||||||
|
permissions: WRITABLE
|
||||||
|
eol: UNIX
|
||||||
|
folders:
|
||||||
|
- src
|
||||||
|
- test
|
||||||
|
exclude:
|
||||||
|
- excluded_dir
|
||||||
|
- excluded_other_dir
|
||||||
|
username: johnd
|
||||||
|
password: passw0rd
|
||||||
|
server: my.dmscm.server:1234
|
||||||
|
database: myDatabase@myDsn
|
||||||
|
update: true
|
||||||
|
clear-workspace: true
|
||||||
|
force-build: true
|
||||||
|
overwrite-modified: true
|
||||||
|
expand-vars: true
|
||||||
|
no-metadata: true
|
||||||
|
maintain-timestamp: true
|
||||||
|
slave-checkout: true
|
||||||
|
timezone: Europe/Berlin
|
||||||
|
web-url: https://my.dmscm.weburl
|
20
tests/scm/fixtures/dimensions-minimal.xml
Normal file
20
tests/scm/fixtures/dimensions-minimal.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<scm class="hudson.plugins.dimensionsscm.DimensionsSCM">
|
||||||
|
<project>myProduct:myProject</project>
|
||||||
|
<permissions>DEFAULT</permissions>
|
||||||
|
<eol>DEFAULT</eol>
|
||||||
|
<canJobUpdate>false</canJobUpdate>
|
||||||
|
<canJobDelete>false</canJobDelete>
|
||||||
|
<canJobForce>false</canJobForce>
|
||||||
|
<canJobRevert>false</canJobRevert>
|
||||||
|
<canJobExpand>false</canJobExpand>
|
||||||
|
<canJobNoMetadata>false</canJobNoMetadata>
|
||||||
|
<canJobNoTouch>false</canJobNoTouch>
|
||||||
|
<forceAsSlave>false</forceAsSlave>
|
||||||
|
<folders>
|
||||||
|
<string>/</string>
|
||||||
|
</folders>
|
||||||
|
<pathsToExclude/>
|
||||||
|
</scm>
|
||||||
|
</project>
|
3
tests/scm/fixtures/dimensions-minimal.yaml
Normal file
3
tests/scm/fixtures/dimensions-minimal.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
scm:
|
||||||
|
- dimensions:
|
||||||
|
project: myProduct:myProject
|
Loading…
Reference in New Issue
Block a user