From 85878043eaf6f4bfcbd7a51bba443eba0f491b28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gardais=20J=C3=A9r=C3=A9my?= Date: Wed, 29 Aug 2018 10:23:25 +0200 Subject: [PATCH] Compare the ID of Docker images instead of tags --- docker/check.rocketchat.update | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/docker/check.rocketchat.update b/docker/check.rocketchat.update index 8903809..c490162 100755 --- a/docker/check.rocketchat.update +++ b/docker/check.rocketchat.update @@ -26,9 +26,11 @@ rkt_repo_name="rocketchat" rkt_image_name="rocket.chat" rkt_current_version=$(docker container ls | grep -- "${rkt_repo_name}/${rkt_image_name}" | sed -- "s/.*${rkt_repo_name}\/${rkt_image_name}:\([^ ]*\) .*/\1/") +rkt_current_imageid=$(docker image inspect "${rkt_repo_name}/${rkt_image_name}:${rkt_current_version}" | grep -m 1 -- "Image.*sha256" | sed "s/.*Image.*sha256:\(.*\)\",/\1/") rkt_grep_pattern="[[:digit:]]\\.\\+[[:digit:]]*\\.\\?[[:digit:]]*$" rkt_new_version=$("${script_wd}"/imagetags "${rkt_repo_name}/${rkt_image_name}" "${rkt_grep_pattern}" | tail -n1) +rkt_new_imageid=$(docker image inspect "${rkt_repo_name}/${rkt_image_name}:${rkt_new_version}" | grep -m 1 -- "Image.*sha256" | sed "s/.*Image.*sha256:\(.*\)\",/\1/") rkt_new_version_file="/tmp/.docker.rocket.chat.upgrade" # }}} @@ -45,11 +47,25 @@ fi # Check if the current version is the last one {{{ if [ "${rkt_current_version}" != "${rkt_new_version}" ]; then - [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Test version — An upgrade is available for ${rkt_image_name}: ${rkt_new_version}." - # Create a temp file to monitor - touch -- "${rkt_new_version_file}" - printf '\e[1;35m%-6s\e[m\n' "An upgrade is available for ${rkt_image_name}: ${rkt_new_version}." >> "${rkt_new_version_file}" + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Test version — Current version (${rkt_current_version}) and new one (${rkt_new_version}) of ${rkt_image_name} seems to be different." + # Ensure to download this new version of the image + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Test version — Download ${rkt_repo_name}/${rkt_image_name}:${rkt_new_version} image to compare ImageID." docker pull "${rkt_repo_name}/${rkt_image_name}:${rkt_new_version}" > /dev/null + + ## Compare the ImageID of current and new version {{{ + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : ImageID — ID of the current version is ${rkt_current_imageid}." + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : ImageID — ID of the new version is ${rkt_new_imageid}." + if [ "${rkt_current_imageid}" != "${rkt_new_imageid}" ]; then + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : ImageID — An upgrade is available for ${rkt_image_name}: ${rkt_new_version}." + ## Create a temp file to monitor + touch -- "${rkt_new_version_file}" + printf '\e[1;35m%-6s\e[m\n' "An upgrade is available for ${rkt_image_name}: ${rkt_new_version}." >> "${rkt_new_version_file}" + else + [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : ImageID — The current version is up-to-date." + rm -f -- "${rkt_new_version_file}" + fi + ## }}} + else [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG : Test version — The current version is up-to-date." rm -f -- "${rkt_new_version_file}"