| #!/bin/bash |
| ############################################################################## |
| # |
| # Copyright (c) 2019 AT&T Intellectual Property. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| ############################################################################## |
| # Verifies RIC helm charts |
| # Requires Linux with wget and tar. |
| # This script should be executed inside the ric-plt/ric-dep bin directory only. |
| set -eu |
| echo "--> verify-ric-charts" |
| |
| |
| # (Optional) provide HELMVERSION as first parameter. It selects the helm client version |
| # (Optional) provide OVERRIDEYAML as the second parameter. It allows us to specify an override file to replace values used to render the helm charts |
| if [[ "${1:-nope}" != "nope" ]]; then |
| HELMVERSION=$1 |
| else |
| HELMVERSION=2.17.0 |
| fi |
| if [[ "${2:-nope}" != "nope" ]]; then |
| OVERRIDEYAML=$2 |
| fi |
| |
| ROOT_DIR="$(pwd)" |
| HELM_COMMAND=helm |
| |
| if ! $($HELM_COMMAND > /dev/null);then |
| echo "Download and install Helm" |
| if [ ! -e helm-v${HELMVERSION}-linux-amd64.tar.gz ]; then |
| wget -nv https://storage.googleapis.com/kubernetes-helm/helm-v${HELMVERSION}-linux-amd64.tar.gz |
| fi |
| tar -xvf ./helm-v${HELMVERSION}-linux-amd64.tar.gz |
| mv linux-amd64/helm ./ |
| HELM_COMMAND=./helm |
| $HELM_COMMAND init -c |
| fi |
| # Set up ric common template |
| # Download it/dep common template charts |
| git clone --single-branch --branch master "https://gerrit.o-ran-sc.org/r/it/dep" ./dep |
| |
| # Start Helm local repo if there isn't one |
| if [ ! -z $(pgrep "$HELM_COMMAND") ]; then |
| echo "Stopping existing local Helm server." |
| kill -9 "$(pgrep "$HELM_COMMAND")" |
| fi |
| if [ ! -d ./charts ]; then |
| mkdir ./charts |
| fi |
| echo "Starting local Helm server" |
| nohup $HELM_COMMAND serve --repo-path charts >& /dev/null & |
| # Package ric-common and serve it using Helm local repo |
| $HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/ric-common" |
| $HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/aux-common" |
| $HELM_COMMAND repo index ./charts |
| # Make sure that helm local repo is added |
| $HELM_COMMAND repo remove local |
| $HELM_COMMAND repo remove stable |
| $HELM_COMMAND repo add local http://127.0.0.1:8879/charts |
| # Remove it/dep charts |
| rm -rf ./dep |
| |
| # Create array of helm charts |
| echo "Finding all Helm charts" |
| CHART_ARRAY=() |
| while IFS= read -r -d $'\0'; do |
| CHART_ARRAY+=("$REPLY") |
| done < <(find "$ROOT_DIR/../" -maxdepth 4 -name Chart.yaml -printf '%h\0') |
| |
| echo "***************************************" |
| for dir in "${CHART_ARRAY[@]}" |
| do |
| echo "Running helm lint and verification on chart $dir" |
| echo "Update chart dependency" |
| $HELM_COMMAND dep up "$dir" |
| # Lint clearly marks errors; e.g., [ERROR] |
| echo "Performing Helm lint" |
| if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then |
| $HELM_COMMAND lint -f "$OVERRIDEYAML" "$dir" |
| else |
| $HELM_COMMAND lint "$dir" |
| fi |
| echo "***************************************************************************************************************" |
| echo "Rendering Helm charts locally" |
| if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then |
| $HELM_COMMAND template -f "$OVERRIDEYAML" "$dir" |
| else |
| $HELM_COMMAND template "$dir" |
| fi |
| echo "***************************************************************************************************************" |
| done |
| echo "--> verify-ric-charts ends" |
| exit 0 |
| |