Roubar o nome do branch atual do Github do Jenkins

Sim, você leu certo. Roubando. Porque eu não posso descrever melhor.

Algo que deveria ser bem simples levou 2 horas de pesquisa e, eventualmente, mais algum tempo de construção.

Eu queria o nome do branch que está AGORA no Jenkins esperando para ser construído.

Eu pesquisei no Google, StackEverything, blogs, APIs Python para Jenkins no Github, mas em v√£o.

Finalmente decidi DoItMYself.

Este é o desejo com o qual eu terminei e funciona como um encanto! :]

__author__ = 'wehappyfew'


# the url of jenkins config.xml
jenkins_url
= 'http://11.11.111.11:8686/job/TheJob/config.xml'
j_user
= "someone"
j_pass
= "somepass"

def get_jenkins_branch_name(jenkins_url, j_user, j_pass):
"""
The function goes to the provided jenkins XML url,

authenticates with an authenticated user,

grabs the xml,

turns it to dictionary,

searches inside the dictionary for the branch name

"""

import requests,xmltodict
from requests.auth import HTTPBasicAuth

# get the url with an authenticated user
response
= requests.get(jenkins_url, auth=HTTPBasicAuth(j_user, j_pass)) #the response must be 200

# the content of the response is the xml
xml
= response.content

# parse the xml to a dictionary
jenkins_dict
= xmltodict.parse(xml)

# grab the actual branch name
branch_name
= jenkins_dict['project']['scm']['branches']['hudson.plugins.git.BranchSpec']['name']

return branch_name