You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.3 KiB
70 lines
2.3 KiB
#!/bin/bash
|
|
|
|
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}"
|
|
v=$(jq -r ".${1}" "$VERSION_FILE")
|
|
if [ "${v}" == "" ]; then
|
|
echo >&2 "Couldn't read version of ${1} from $VERSION_FILE"
|
|
exit 1
|
|
fi
|
|
echo "$v"
|
|
}
|
|
|
|
# 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}")"
|
|
|
|
component="$(convert_to_camel_case "$(echo "${component}" | sed 's/^.*\///')")"
|
|
cv="$(get_current_version "${component}")"
|
|
|
|
# Advanced AI heurestics to filter out common patterns suggesting new version is not stable /s
|
|
if [[ "$v" == "" ]] || [[ "$v" == *"alpha"* ]] || [[ "$v" == *"beta"* ]] || [[ "$v" == *"rc"* ]] || [[ "$v" == *"helm"* ]]; then
|
|
echo "$cv"
|
|
return
|
|
fi
|
|
|
|
# Use higher version from new version and current version
|
|
v=$(printf '%s\n' "$v" "$cv" | sort -r | head -n1)
|
|
|
|
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="$(pwd)/jsonnet/kube-prometheus/versions.json"
|
|
|
|
# token can be passed as `GITHUB_TOKEN` variable or passed as first argument
|
|
GITHUB_TOKEN=${GITHUB_TOKEN:-${1}}
|
|
|
|
if [ -z "$GITHUB_TOKEN" ]; then
|
|
echo >&2 "GITHUB_TOKEN not set. Exiting"
|
|
exit 1
|
|
fi
|
|
|
|
cat <<-EOF
|
|
{
|
|
"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")",
|
|
"kubeRbacProxy": "$(get_version "brancz/kube-rbac-proxy")",
|
|
"configmapReload": "$(get_version "jimmidyson/configmap-reload")"
|
|
}
|
|
EOF
|
|
|