github.com/verrazzano/verrazzano@v1.7.1/tools/scripts/list_package_versions.sh (about) 1 #!/bin/bash 2 # 3 # Copyright (c) 2021, 2022, Oracle and/or its affiliates. 4 # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 5 # 6 # tools/scripts/list_package_versions.sh list|table [<github-usernsame>:<github-token>] 7 SCRIPT_DIR=$(cd $(dirname "$0"); pwd -P) 8 TMP_DIR=$(mktemp -d) 9 TAGS_SIZE=100 10 IMAGE_LIST=$TMP_DIR/image_list.txt 11 $SCRIPT_DIR/generate_image_list.sh $SCRIPT_DIR/../../platform-operator/verrazzano-bom.json $IMAGE_LIST oracle,verrazzano 12 FORMAT="${1:-list}" 13 GH_CRED= 14 if [ -z "$2" ]; then 15 # echo "Specify <github-usernsame>:<github-token> to get a higher github API rate limit" 16 GH_CRED= 17 else 18 GH_CRED="-u $2" 19 fi 20 21 function find_version_in_use() { 22 image_name=$1 23 if [ -z "$3" ]; then 24 image_name=$1 25 else 26 image_name=$3 27 fi 28 cat $IMAGE_LIST | grep -m1 $image_name: | cut -d: -f2 | cut -d- -f1 29 } 30 31 # available_versions <component> <owner> [imageInBOM-component] [tags|releases] 32 function available_versions() { 33 TAGS_FILE="$TMP_DIR/tags_$1.json" 34 RES="${4:-tags}" 35 if [ ! -f "$TAGS_FILE" ]; then 36 curl -L -s $GH_CRED -H "Accept: application/json" https://api.github.com/repos/$2/$1/$RES?per_page=$TAGS_SIZE > $TAGS_FILE 37 fi 38 local versions 39 if [ -z "$4" ]; then 40 cat $TAGS_FILE | jq -r '.[] | .name' 41 else 42 cat $TAGS_FILE | jq -r '.[] | .tag_name' 43 fi 44 } 45 46 function is_valid_verion() { 47 # skip v010(no'.'), rc, beta, alpha, helm 48 [[ "$1" == *"."* ]] && [[ "$1" != *"rc"* ]] && [[ "$1" != *"beta"* ]] && [[ "$1" != *"alpha"* ]] && [[ "$1" != *"helm"* ]] 49 } 50 51 function trim_version() { 52 if [[ "$1" == *"-"* ]]; then 53 local trimed=${1#*-} # remove prefix ending in "-" 54 trim_version $trimed 55 else 56 echo $1 57 fi 58 } 59 60 # list_versions <component> <owner> [imageInBOM-component] [tags|releases] 61 function list_versions() { 62 in_use=$(find_version_in_use $1 $2 $3) 63 local versions=($(available_versions $1 $2 $3 $4)) 64 echo "$1 in use: $in_use" 65 local found=false 66 for ver in "${versions[@]}"; do 67 if $(is_valid_verion $ver) && [[ "$found" == false ]]; then 68 ver=$(trim_version $ver) 69 if [[ "$ver" == *"$in_use"* ]]; then 70 found=true 71 ver="$ver (in use)" 72 fi 73 echo " $ver" 74 fi 75 done 76 } 77 78 function table_row() { 79 local in_use=$(find_version_in_use $1 $2 $3) 80 local versions=($(available_versions $1 $2 $3 $4)) 81 local found=false 82 local latest="" 83 for ver in "${versions[@]}"; do 84 if $(is_valid_verion $ver) && [[ "$found" == false ]]; then 85 ver=$(trim_version $ver) 86 if [[ "$latest" == "" ]]; then 87 latest="$ver" 88 fi 89 if [[ "$ver" == *"$in_use"* ]]; then 90 in_use="$ver" 91 fi 92 fi 93 done 94 RES="${4:-tags}" 95 echo "${1},${in_use},${latest},https://github.com/$2/$1/$RES" 96 } 97 98 if [ "$FORMAT" == table ]; then 99 echo "Component,In Use,Latest, Notes" 100 fi 101 102 function package_versions() { 103 if [ "$FORMAT" == list ]; then 104 list_versions $1 $2 $3 $4 105 elif [[ "$FORMAT" == table ]]; then 106 table_row $1 $2 $3 $4 107 else 108 echo "Unknown format: $FORMAT" 109 fi 110 } 111 112 package_versions alertmanager prometheus alertmanager 113 package_versions backup-restore-operator rancher rancher-backup 114 package_versions cert-manager cert-manager cert-manager-controller 115 package_versions coherence-operator oracle 116 package_versions external-dns kubernetes-sigs 117 package_versions fluentd fluent fluentd-kubernetes-daemonset 118 package_versions grafana grafana 119 package_versions ingress-nginx kubernetes nginx-ingress-controller releases 120 package_versions istio istio proxyv2 121 package_versions jaeger jaegertracing jaeger 122 package_versions jaeger jaegertracing jaeger-operator 123 package_versions keycloak keycloak 124 package_versions kiali kiali 125 package_versions kube-state-metrics kubernetes 126 package_versions mysql-server mysql mysql 127 package_versions mysql-operator mysql mysql-operator 128 package_versions node_exporter prometheus node-exporter 129 package_versions oam-kubernetes-runtime crossplane 130 package_versions OpenSearch opensearch-project opensearch 131 package_versions OpenSearch-Dashboards opensearch-project opensearch-dashboards 132 package_versions prometheus prometheus 133 package_versions prometheus-adapter kubernetes-sigs 134 package_versions prometheus-operator prometheus-operator 135 package_versions pushgateway prometheus pushgateway 136 package_versions rancher rancher 137 package_versions velero vmware-tanzu velero 138 package_versions velero-plugin-for-aws vmware-tanzu 139 package_versions weblogic-kubernetes-operator oracle 140