From 16c05d16e25723b8c741bf34fd997ae872377702 Mon Sep 17 00:00:00 2001 From: paulfantom <pawel@krupa.net.pl> Date: Fri, 5 Mar 2021 10:36:58 +0100 Subject: [PATCH] jsonnet,scripts: better version updater --- jsonnet/kube-prometheus/versions.json | 1 + scripts/generate-versions.sh | 42 ++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/jsonnet/kube-prometheus/versions.json b/jsonnet/kube-prometheus/versions.json index 71b77d08..db5f2a94 100644 --- a/jsonnet/kube-prometheus/versions.json +++ b/jsonnet/kube-prometheus/versions.json @@ -2,6 +2,7 @@ "alertmanager": "0.21.0", "blackboxExporter": "0.18.0", "grafana": "7.4.3", + "kubeStateMetrics": "1.9.8", "nodeExporter": "1.1.1", "prometheus": "2.25.0", "prometheusAdapter": "0.8.3", diff --git a/scripts/generate-versions.sh b/scripts/generate-versions.sh index 4db472a1..3eb01bae 100755 --- a/scripts/generate-versions.sh +++ b/scripts/generate-versions.sh @@ -2,11 +2,38 @@ set -euo pipefail +# Get component version from GitHub API get_latest_version() { echo >&2 "Checking release version for ${1}" curl --retry 5 --silent --fail -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/${1}/releases/latest" | jq '.tag_name' | tr -d '"v' } +# Get component version from version file +get_current_version() { + echo >&2 "Reading currently used version of ${1}" + jq -r ".${1}" "$VERSION_FILE" +} + +# Get version from online source and filter out unstable releases. In case of unstable release use what is set in version file +get_version() { + component="${1}" + v="$(get_latest_version "${component}")" + + # Advanced AI heurestics to filter out common patterns suggesting new version is not stable /s + if [[ "$v" == *"alpha"* ]] || [[ "$v" == *"beta"* ]] || [[ "$v" == *"rc"* ]] || [[ "$v" == *"helm"* ]]; then + component="$(convert_to_camel_case "$(echo "${component}" | sed 's/^.*\///')")" + v="$(get_current_version "${component}")" + fi + echo "$v" +} + +convert_to_camel_case() { + echo "${1}" | sed -E 's/[ _-]([a-z])/\U\1/gi;s/^([A-Z])/\l\1/' +} + +# File is used to read current versions +VERSION_FILE="jsonnet/kube-prometheus/versions.json" + # token can be passed as `GITHUB_TOKEN` variable or passed as first argument GITHUB_TOKEN=${GITHUB_TOKEN:-${1}} @@ -17,12 +44,13 @@ fi cat <<-EOF { - "alertmanager": "$(get_latest_version "prometheus/alertmanager")", - "blackboxExporter": "$(get_latest_version "prometheus/blackbox_exporter")", - "grafana": "$(get_latest_version "grafana/grafana")", - "nodeExporter": "$(get_latest_version "prometheus/node_exporter")", - "prometheus": "$(get_latest_version "prometheus/prometheus")", - "prometheusAdapter": "$(get_latest_version "kubernetes-sigs/prometheus-adapter")", - "prometheusOperator": "$(get_latest_version "prometheus-operator/prometheus-operator")" + "alertmanager": "$(get_version "prometheus/alertmanager")", + "blackboxExporter": "$(get_version "prometheus/blackbox_exporter")", + "grafana": "$(get_version "grafana/grafana")", + "kubeStateMetrics": "$(get_version "kubernetes/kube-state-metrics")", + "nodeExporter": "$(get_version "prometheus/node_exporter")", + "prometheus": "$(get_version "prometheus/prometheus")", + "prometheusAdapter": "$(get_version "kubernetes-sigs/prometheus-adapter")", + "prometheusOperator": "$(get_version "prometheus-operator/prometheus-operator")" } EOF -- GitLab