def root_to_yaml(root, name):
    # Top-level "job" data
    job = {}
    build = [{'job': job}]

    job['name'] = unicode(name)

    # Create register
    reg = Registry()

    # "project-type:" YAML
    project_types = reg.get_project_types()

    if root.tag in project_types:
        job['project-type'] = project_types[root.tag]

        # Handle each top-level XML element with custom modules/functions in
        # modules/handlers.py
        # registry determines difference at runtime
        reg = Registry()
        handlers = Handlers(reg)
        handlers.gen_yml(job, root)
    else:
        # Project type not currently supported, so output as raw XML
        if 'maven' in root.tag:
            job['project-type'] = 'maven'

        raw = {}
        raw['xml'] = ET.tostring(root)
        job['xml'] = {'raw': raw}

    return yaml.dump(build, default_flow_style=False, default_style=None)
Example #2
0
def definition(top, parent):
    reg = Registry()
    handlers = Handlers(reg)
    # Create register
    reg = Registry()

    # sub-level "definition" data
    definition = {}
    if 'class' in top.attrib:  # Pipeline script
        if top.attrib[
                'class'] == 'org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition':
            #  Using pipeline-scm (getting jenkinsfile from repo)
            parent.append(['pipeline-scm', definition])
        elif top.attrib[
                'class'] == 'org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition':
            # Using DSL (passing raw pipeline script)
            for child in top.getchildren():
                if child.tag == 'script':
                    parent.append(['dsl', child.text])
                elif child.tag == 'sandbox':
                    parent.append(['sandbox', get_bool(child.text)])
            # Don't pass anything to handlers.gen_yml, handled it here
            top = ''
    else:
        parent.append(['definition', definition])
    reg = Registry()
    handlers = Handlers(reg)
    handlers.gen_yml(definition, top)
def root_to_yaml(root, name):
    # Top-level "job" data
    job = {}
    build = [{'job': job}]

    job['name'] = unicode(name)

    # Create register
    reg = Registry()

    # "project-type:" YAML
    project_types = reg.get_project_types()

    if root.tag in project_types:
        job['project-type'] = project_types[root.tag]

        # Handle each top-level XML element with custom modules/functions in
        # modules/handlers.py
        # registry determines difference at runtime
        reg = Registry()
        handlers = Handlers(reg)
        handlers.gen_yml(job, root)
    else:
        # Project type not currently supported, so output as raw XML
        if 'maven' in root.tag:
            job['project-type'] = 'maven'

        raw = {}
        raw['xml'] = ET.tostring(root)
        job['xml'] = {'raw': raw}

    return yaml.dump(build, default_flow_style=False, default_style=None)
def definition(top, parent):
    reg = Registry()
    handlers = Handlers(reg)
    # Create register
    reg = Registry()

    # sub-level "definition" data
    definition = {}
    parent.append(['definition', definition])
    reg = Registry()
    handlers = Handlers(reg)
    handlers.gen_yml(definition, top)
Example #5
0
def root_to_yaml(root, name, ignore_actions=False):
    # Top-level "job" data
    job = {}
    job['name'] = text_type(name)
    build = []

    # Create register
    reg = Registry()

    # "project-type:" YAML
    project_types = reg.get_project_types()

    if root.tag in project_types:
        job['project-type'] = project_types[root.tag]

        if job['project-type'] == 'pipeline':
            # For pipeline jobs, they have the
            # DisableConcurrentBuildsJobProperty tag for not allowing
            # concurrent builds, but no tag for true. JJB defaults to false,
            # this is to make it true in the event that the tag doesn't exist
            if not root.find('properties.DisableConcurrentBuildsJobProperty'):
                conElement = ET.SubElement(root, 'concurrentBuild')
                conElement.text = 'true'

        # Handle each top-level XML element with custom modules/functions in
        # modules/handlers.py
        # registry determines difference at runtime
        if job['project-type'] == 'listview':
            build.append({'view': job})
            reg = Registry(ignore_actions=ignore_actions)
            viewhandler = Listview(reg)
            viewhandler.gen_yml(job, root)
        elif job['project-type'] != 'folder':
            build.append({'job': job})
            reg = Registry(ignore_actions=ignore_actions)
            handlers = Handlers(reg)
            handlers.gen_yml(job, root)
    else:
        # Project type not currently supported, so output as raw XML
        if 'maven' in root.tag:
            job['project-type'] = 'maven'

        raw = {}
        raw['xml'] = ET.tostring(root)
        job['xml'] = {'raw': raw}

    return yaml.dump(build, default_flow_style=False, default_style=None)