@cryptotaxi247 / netdata-1 / commits / 8a0ca04ac

Adds support for only performing updates if there is a newer version (#7939)

* Re-formatted ./packaging/installer/netdata-updater.sh with shfmt -w -i 2 -ci -sr * Fixed errors/warnings founds with shellcheck for ./packaging/installer/netdata-updater.sh * Fixed logic for removing TMPDIR * Fixed logic for removing TMPDIR proper * Fixed another shellcheck warning that ReviewDog found * Added support for only performing updates if there is a newer version * Fixed exit 1 on bad cd * Fixed expansion of pids in kill * Trigger CI

James Mills committed Feb 5, 2020 at 15:38 UTC 8a0ca04ac9901f21c5a5d1889df6312bff0e34da
1 file changed +56 -21
packaging/installer/netdata-updater.sh
+56 -21
@@ -73,14 +73,45 @@ download() {
73 fi
74 }
75
76 -set_tarball_urls() {
77 - local extension="tar.gz"
76 +function parse_version() {
77 + r="${1}"
78 + if echo "${r}" | grep -q '^v.*'; then
79 + # shellcheck disable=SC2001
80 + # XXX: Need a regex group subsitutation here.
81 + r="$(echo "${r}" | sed -e 's/^v\(.*\)/\1/')"
82 + fi
83
79 - if [ -n "${NETDATA_LOCAL_TARBAL_OVERRIDE}" ]; then
80 - info "Not fetching remote tarballs, local override was given"
81 - return
84 + read -r -a p <<< "$(echo "${r}" | tr '-' ' ')"
85 +
86 + v="${p[0]}"
87 + b="${p[1]}"
88 + _="${p[2]}" # ignore the SHA
89 +
90 + if [[ ! "${b}" =~ ^[0-9]+$ ]]; then
91 + b="0"
92 fi
93
94 + read -r -a pp <<< "$(echo "${v}" | tr '.' ' ')"
95 + printf "%03d%03d%03d%03d" "${pp[0]}" "${pp[1]}" "${pp[2]}" "${b}"
96 +}
97 +
98 +get_latest_version() {
99 + shasums="${1}"
100 +
101 + tarball="$(grep -o 'netdata-v.*\.tar\.gz' "${shasums}")"
102 + if [ -n "${tarball}" ]; then
103 + # shellcheck disable=SC2001
104 + # XXX: Need to use regex group substitution here.
105 + version="$(echo "${tarball}" | sed -e 's/^netdata-\(.*\)\.tar.gz/\1/')"
106 + parse_version "${version}"
107 + else
108 + echo "000000000000"
109 + fi
110 +}
111 +
112 +set_tarball_urls() {
113 + local extension="tar.gz"
114 +
115 if [ "$2" == "yes" ]; then
116 extension="gz.run"
117 fi
@@ -105,23 +136,27 @@ update() {
136 tmpdir=$(create_tmp_directory)
137 cd "$tmpdir" || exit 1
138
108 - if [ -z "${NETDATA_LOCAL_TARBAL_OVERRIDE}" ]; then
109 - download "${NETDATA_TARBALL_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt" >&3 2>&3
110 - if [[ -n "${NETDATA_TARBALL_CHECKSUM}" ]] && grep "${NETDATA_TARBALL_CHECKSUM}" sha256sum.txt >&3 2>&3; then
111 - info "Newest version is already installed"
112 - else
113 - download "${NETDATA_TARBALL_URL}" "${tmpdir}/netdata-latest.tar.gz"
114 - if ! grep netdata-latest.tar.gz sha256sum.txt | safe_sha256sum -c - >&3 2>&3; then
115 - fatal "Tarball checksum validation failed. Stopping netdata upgrade and leaving tarball in ${tmpdir}"
116 - fi
117 - NEW_CHECKSUM="$(safe_sha256sum netdata-latest.tar.gz 2> /dev/null | cut -d' ' -f1)"
118 - tar -xf netdata-latest.tar.gz >&3 2>&3
119 - rm netdata-latest.tar.gz >&3 2>&3
120 - cd netdata-* || exit 1
121 - RUN_INSTALLER=1
122 - fi
139 + download "${NETDATA_TARBALL_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt" >&3 2>&3
140 +
141 + current_version="$(command -v netdata > /dev/null && parse_version "$(netdata -v | cut -f 2 -d ' ')")"
142 + latest_version="$(get_latest_version "${tmpdir}/sha256sum.txt")"
143 +
144 + info "Current Version: ${current_version}"
145 + info "Latest Version: ${latest_version}"
146 +
147 + if [ "${latest_version}" -gt 0 ] && [ "${current_version}" -gt 0 ] && [ "${current_version}" -ge "${current_version}" ]; then
148 + info "Newest version ${current_version} <= ${latest_version} is already installed"
149 + elif [ -n "${NETDATA_TARBALL_CHECKSUM}" ] && grep "${NETDATA_TARBALL_CHECKSUM}" sha256sum.txt >&3 2>&3; then
150 + info "Newest version is already installed"
151 else
124 - info "!!Local tarball override detected!! - Entering directory ${NETDATA_LOCAL_TARBAL_OVERRIDE} for installation, not downloading anything"
152 + download "${NETDATA_TARBALL_URL}" "${tmpdir}/netdata-latest.tar.gz"
153 + if ! grep netdata-latest.tar.gz sha256sum.txt | safe_sha256sum -c - >&3 2>&3; then
154 + fatal "Tarball checksum validation failed. Stopping netdata upgrade and leaving tarball in ${tmpdir}"
155 + fi
156 + NEW_CHECKSUM="$(safe_sha256sum netdata-latest.tar.gz 2> /dev/null | cut -d' ' -f1)"
157 + tar -xf netdata-latest.tar.gz >&3 2>&3
158 + rm netdata-latest.tar.gz >&3 2>&3
159 + cd netdata-* || exit 1
160 RUN_INSTALLER=1
161 cd "${NETDATA_LOCAL_TARBAL_OVERRIDE}" || exit 1
162 fi