So I created some tasks in one of my roles today that queries Jenkins to find the latest build of a project and then uses that build number to go get a zip file onto one of my managed servers.
The relevant part of my tasks/main.yml looks like this:
-
uri: url=http://jenkins/job/BuildSomeProject/api/json?tree=lastSuccessfulBuild[number] method=GET return_content=yes
delegate_to: localhost
register: jenkins_response
tags: latest -
debug: var=jenkins_response.json.lastSuccessfulBuild.number
-
name: get specified zip
win_get_url:
url: ‘http://jenkins/job/BuildSomeProject/lastSuccessfulBuild/artifact/zip/someProject.{{jenkins_response.json.lastSuccessfulBuild.number}}.zip’
dest: ‘C:\stagingArea\zips\someProject.{{jenkins_response.json.lastSuccessfulBuild.number}}.zip’
It works fine (thank you whoever created uri: module) but I’d like to assign a single variable name, say {{latestBuildNumber}}, rather than the {{jenkins_response.json.lastSuccessfulBuild.number}} which is a bit of a mouthful.
Maybe I’m thinking in programming mode and this is just the way it has to be, but I have the feeling I’ve been at the screen too long and I’m missing something obvious.
Jenkins can return a bunch of useful information about builds actually, so it would be nice to grab > 1 thing and assign it a more meaningful name that doesn’t directly reference the structure of the json response.
Many thanks,
Jon