#!/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