Script to get Jenkins CentOS versions?

44 views
Skip to first unread message

zil...@gmail.com

unread,
Nov 25, 2020, 9:40:16 AM11/25/20
to Jenkins Users
I want to use the Groovy script in this post to get Jenkins versions. So I do this, where I change the docker_image_tags_url to point to a Jenkins end point.

// Import the JsonSlurper class to parse Dockerhub API response
import groovy.json.JsonSlurper
// Set the URL we want to read from, it is MySQL from official Library for this example, limited to 20 results only.
try {
    // Set requirements for the HTTP GET request, you can add Content-Type headers and so on...
    def http_client = new URL(docker_image_tags_url).openConnection() as HttpURLConnection
    http_client.setRequestMethod('GET')
    // Run the HTTP request
    http_client.connect()
    // Prepare a variable where we save parsed JSON as a HashMap, it's good for our use case, as we just need the 'name' of each tag.
    def dockerhub_response = [:]    
    // Check if we got HTTP 200, otherwise exit
    if (http_client.responseCode == 200) {
        dockerhub_response = new JsonSlurper().parseText(http_client.inputStream.getText('UTF-8'))
    } else {
        println("HTTP response error")
        System.exit(0)
    }
    // Prepare a List to collect the tag names into
    def image_tag_list = []
    // Iterate the HashMap of all Tags and grab only their "names" into our List
    dockerhub_response.results.each { tag_metadata ->
        image_tag_list.add(tag_metadata.name)    
    }
    // The returned value MUST be a Groovy type of List or a related type (inherited from List)
    // It is necessary for the Active Choice plugin to display results in a combo-box
    return image_tag_list.sort()
} catch (Exception e) {
         // handle exceptions like timeout, connection errors, etc.
         println(e)
}

However, it just returns Alpine versions. How can I get the CentOS versions?

Thanks,
Chris

zil...@gmail.com

unread,
Nov 25, 2020, 9:57:45 AM11/25/20
to Jenkins Users
I essentially want to get this list, but in a JSON format in an HTTP response. But using this link as my docker_image_tags_url value for my script doesn't work of course, that is, it gives a blank list.

Slide

unread,
Nov 25, 2020, 10:22:41 AM11/25/20
to Jenkins User Mailing List

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/365c1f68-145b-499d-a808-bb8b96351386n%40googlegroups.com.


--

zil...@gmail.com

unread,
Nov 25, 2020, 10:35:57 AM11/25/20
to Jenkins Users
That's what I essentially have already. Just need the correct docker_image_tags_url value, and that post didn't tell me.

Björn Pedersen

unread,
Nov 26, 2020, 2:50:04 AM11/26/20
to Jenkins Users
The problem  probably is that the centos image is not in the first  30 results . You would need to get the next page(s) until you find a centos image.
See https://docs.docker.com/registry/spec/api/#tags for details. And remember that this endpoint has a limit on the numbe rof requests in a certain timeframe, so be sure to cache the result.

zil...@gmail.com

unread,
Nov 26, 2020, 10:10:01 AM11/26/20
to Jenkins Users
Yeah that makes sense. Thanks.

Chris

zil...@gmail.com

unread,
Nov 26, 2020, 11:07:46 AM11/26/20
to Jenkins Users
I read the page you linked, and the part regarding tags pagination. I infer from the page that I should be able to get a list of tags with the following.


But if I paste the URL on my browser, I get

"txnid": "REPOSREQ-29168001-2818-486d-9af5-45c455b6155e",
  "message": "tag 'list' not found",
  "errinfo": {
    "api_call_docker_id": "",
    "api_call_name": "GetRepositoryTag",
    "api_call_start": "2020-11-26T16:03:21.274810611Z",
    "api_call_txnid": "REPOSREQ-29168001-2818-486d-9af5-45c455b6155e",
    "namespace": "library",
    "repository": "jenkins",
    "tag": "list"
  }
}

Björn Pedersen

unread,
Nov 27, 2020, 1:48:19 AM11/27/20
to Jenkins Users

zil...@gmail.com

unread,
Nov 27, 2020, 5:33:13 PM11/27/20
to Jenkins Users
Thanks again. I get the following even though I give it my Docker Hub creds, which i'm able to use to log in.

{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/jenkins","Action":"pull"}]}]}
Reply all
Reply to author
Forward
0 new messages