Skip to content Skip to sidebar Skip to footer

How To Fetch The Current Branch From Jenkins?

I would like to query Jenkins using it's API and Python to fetch the branch that is currently ready to be built. How can I do that?

Solution 1:

From the jenkins API you can check

lastSuccessfulBuild/api/json?tree=actions[buildsByBranchName]

Maybe what you can do is build your stuff, and have a second job triggered after your build job is finished.

Then in this new job, you can find the branch name

I dont use python, but with jq you can get the branch names in an array like this:

 jq -r '.actions[].buildsByBranchName | select(. != null)'

The full code (you can of course replace the bash vars correctly):

JENKINS_API_URL=$JENKINS_SERVER/job/$DEPLOY_JOB/lastSuccessfulBuild/api/json?tree=actions[buildsByBranchName]

BRANCHES_JSON=$(curl --globoff --insecure --silent $JENKINS_API_URL)

BRANCHES=`echo $BRANCHES_JSON | /var/lib/jenkins/tools/jq/jq -r '.actions[].buildsByBranchName | select(. != null)'`

Solution 2:

I finally did this.

    # 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

Post a Comment for "How To Fetch The Current Branch From Jenkins?"