jsonnet,scripts: better version updater
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user