mirror of
				https://github.com/prometheus-operator/kube-prometheus.git
				synced 2025-10-26 05:31:21 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |