github.com/kubeshop/testkube@v1.17.23/install.sh (about)

     1  #!/bin/bash
     2  echo "Getting kubectl-testkube plugin"
     3  
     4  if [ ! -z "${DEBUG}" ];
     5  then set -x
     6  fi
     7  
     8  _detect_arch() {
     9      case $(uname -m) in
    10      amd64|x86_64) echo "x86_64"
    11      ;;
    12      arm64|aarch64) echo "arm64"
    13      ;;
    14      i386) echo "i386"
    15      ;;
    16      *) echo "Unsupported processor architecture";
    17      return 1
    18      ;;
    19       esac
    20  }
    21  
    22  _detect_os(){
    23      case $(uname) in
    24      Linux) echo "Linux"
    25      ;;
    26      Darwin) echo "Darwin"
    27      ;;
    28      Windows) echo "Windows"
    29      ;;
    30       esac
    31  }
    32  
    33  _download_url() {
    34    local arch
    35    local os
    36    local tag
    37    local version
    38  
    39    arch="$(_detect_arch)"
    40    os="$(_detect_os)"
    41    if [ -z "$TESTKUBE_VERSION" ]; then
    42      if [ "$1" = "beta" ]; then
    43        tag="$(
    44          curl -s "https://api.github.com/repos/kubeshop/testkube/releases" \
    45          2>/dev/null \
    46          | jq -r '.[].tag_name | select(test("beta"))' \
    47          | head -n 1 \
    48        )"
    49          if [ -z "$tag" ]; then
    50              echo "No beta releases found. Installing latest release" >&2
    51              tag="$(
    52                curl -s "https://api.github.com/repos/kubeshop/testkube/releases/latest" \
    53                2>/dev/null \
    54                | jq -r '.tag_name' \
    55              )"
    56          fi
    57      else
    58        tag="$(
    59          curl -s "https://api.github.com/repos/kubeshop/testkube/releases/latest" \
    60          2>/dev/null \
    61          | jq -r '.tag_name' \
    62        )"
    63      fi
    64    else
    65      tag="$TESTKUBE_VERSION"
    66    fi
    67    version="${tag/#v/}" # remove leading v if present
    68  
    69    echo "https://github.com/kubeshop/testkube/releases/download/${tag}/testkube_${version:-1}_${os}_$arch.tar.gz"
    70  }
    71  
    72  if [ "$1" = "beta" ]; then
    73    url="$(_download_url "beta")"
    74    echo "Downloading testkube from URL: $url"
    75    curl -sSLf "$url" > testkube.tar.gz
    76  else
    77    echo "Downloading testkube from URL: $(_download_url)"
    78    curl -sSLf "$(_download_url)" > testkube.tar.gz
    79  fi
    80  
    81  tar -xzf testkube.tar.gz kubectl-testkube
    82  rm testkube.tar.gz
    83  mv kubectl-testkube /usr/local/bin/kubectl-testkube
    84  ln -s /usr/local/bin/kubectl-testkube /usr/local/bin/testkube
    85  ln -s /usr/local/bin/kubectl-testkube /usr/local/bin/tk
    86  
    87  echo "kubectl-testkube installed in:"
    88  echo "- /usr/local/bin/kubectl-testkube"
    89  echo "- /usr/local/bin/testkube"
    90  echo "- /usr/local/bin/tk"
    91  echo ""
    92  echo "You'll also need `helm` and Kubernetes `kubectl` installed."
    93  echo "- Install Helm: https://helm.sh/docs/intro/install/"
    94  echo "- Install kubectl: https://kubernetes.io/docs/tasks/tools/#kubectl"