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