Meet101
Meet101

Reputation: 801

How to create Jenkins Job with Customized XML in python

I am trying to create a Jenkins job using Jenkins module in python. I am able to successfully connect with jenkins and perfrom get job_count as well as create_job() method.

In create_job() method i can perfrom this operation only with "jenkins.EMPTY_CONFIG_XML" parameter. How do i pass my own xml config file? below is my code, I have config saved on local, how to pass it by replacing EMPTY_CONFIG_XML. I tried few things, didn't work. Couldn't find it online. My below code is working. It's creating TestJob with EMPTY_CONFIG_XML. can someone please help how to pass customized XML file? Thank you for help!

import jenkins
import xml.etree.ElementTree as ET

server = jenkins.Jenkins("http://x.x.x.x:8080", username="foo", password="baar")

#print server.get_whoami()
server.create_job("TestJob",jenkins.EMPTY_CONFIG_XML)

Upvotes: 0

Views: 2075

Answers (1)

harshp
harshp

Reputation: 111

Looking through the documentation for create_job, the config_xml parameter should be passed as a string representation of the xml.

I used a xml.etree.ElementTree to parse the XML file and convert it into a string:

import xml.etree.ElementTree as ET

def convert_xml_file_to_str():
    tree = ET.parse(path_to_config_file)
    root = tree.getroot()
    return ET.tostring(root, encoding='utf8', method='xml').decode()

def main():
    target_server = jenkins.Jenkins(url, username=username, password=password)
    config = convert_xml_file_to_str()
    target_server.create_job(job_name, config)

main()

I found this thread very helpful in understanding how to parse XML files, it also has a nice explanation about differences between Python2/3.

Upvotes: 3

Related Questions