diff --git a/hack/jenkins/e2e-runner.sh b/hack/jenkins/e2e-runner.sh index b779a963a94..a08298a5427 100755 --- a/hack/jenkins/e2e-runner.sh +++ b/hack/jenkins/e2e-runner.sh @@ -89,13 +89,19 @@ function get_latest_gci_image() { function get_latest_docker_release() { # Typical Docker release versions are like v1.11.2-rc1, v1.11.2, and etc. local -r version_re='.*\"tag_name\":[[:space:]]+\"v([0-9\.r|c-]+)\",.*' - local -r latest_release="$(curl -fsSL --retry 3 https://api.github.com/repos/docker/docker/releases/latest)" - if [[ "${latest_release}" =~ ${version_re} ]]; then - echo "${BASH_REMATCH[1]}" - else - echo "Malformed Docker API response for latest release: ${latest_release}" - exit 1 - fi + local -r releases="$(curl -fsSL --retry 3 https://api.github.com/repos/docker/docker/releases)" + # The GitHub API returns releases in descending order of creation time so the + # first one is always the latest. + # TODO: if we can install `jq` on the Jenkins nodes, we won't have to craft + # regular expressions here. + while read -r line; do + if [[ "${line}" =~ ${version_re} ]]; then + echo "${BASH_REMATCH[1]}" + return + fi + done <<< "${releases}" + echo "Failed to determine the latest Docker release." + exit 1 } function install_google_cloud_sdk_tarball() {