wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | ############################################################################## |
| 3 | # |
| 4 | # Copyright (c) 2019 AT&T Intellectual Property. |
| 5 | # |
| 6 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 7 | # you may not use this file except in compliance with the License. |
| 8 | # You may obtain a copy of the License at |
| 9 | # |
| 10 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | # |
| 12 | # Unless required by applicable law or agreed to in writing, software |
| 13 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 15 | # See the License for the specific language governing permissions and |
| 16 | # limitations under the License. |
| 17 | # |
| 18 | ############################################################################## |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 19 | # Verifies RIC helm charts |
| 20 | # Requires Linux with wget and tar. |
| 21 | # This script should be executed inside the ric-plt/ric-dep bin directory only. |
| 22 | set -eu |
| 23 | echo "--> verify-ric-charts" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 24 | |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 25 | |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 26 | # (Optional) provide HELMVERSION as first parameter. It selects the helm client version |
| 27 | # (Optional) provide OVERRIDEYAML as the second parameter. It allows us to specify an override file to replace values used to render the helm charts |
| 28 | if [[ "${1:-nope}" != "nope" ]]; then |
| 29 | HELMVERSION=$1 |
| 30 | else |
| 31 | HELMVERSION=2.12.3 |
| 32 | fi |
| 33 | if [[ "${2:-nope}" != "nope" ]]; then |
| 34 | OVERRIDEYAML=$2 |
Zhe Huang | dbdd2b5 | 2020-03-26 16:50:33 -0400 | [diff] [blame] | 35 | fi |
| 36 | |
Zhe Huang | 1c0c34b | 2020-04-07 16:50:52 -0400 | [diff] [blame^] | 37 | ROOT_DIR="$(pwd)" |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 38 | HELM_COMMAND=helm |
Zhe Huang | dbdd2b5 | 2020-03-26 16:50:33 -0400 | [diff] [blame] | 39 | |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 40 | if ! $($HELM_COMMAND > /dev/null);then |
| 41 | echo "Download and install Helm" |
| 42 | if [ ! -e helm-v${HELMVERSION}-linux-amd64.tar.gz ]; then |
| 43 | wget -nv https://storage.googleapis.com/kubernetes-helm/helm-v${HELMVERSION}-linux-amd64.tar.gz |
| 44 | fi |
| 45 | tar -xvf ./helm-v${HELMVERSION}-linux-amd64.tar.gz |
| 46 | mv linux-amd64/helm ./ |
| 47 | HELM_COMMAND=./helm |
| 48 | $HELM_COMMAND init -c |
| 49 | fi |
| 50 | # Set up ric common template |
| 51 | # Download it/dep common template charts |
| 52 | git clone --single-branch --branch master "https://gerrit.o-ran-sc.org/r/it/dep" ./dep |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 53 | |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 54 | # Start Helm local repo if there isn't one |
Zhe Huang | 1c0c34b | 2020-04-07 16:50:52 -0400 | [diff] [blame^] | 55 | if [ ! -z $(pgrep "$HELM_COMMAND") ]; then |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 56 | echo "Stopping existing local Helm server." |
Zhe Huang | 1c0c34b | 2020-04-07 16:50:52 -0400 | [diff] [blame^] | 57 | kill -9 "$(pgrep "$HELM_COMMAND")" |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 58 | fi |
| 59 | if [ ! -d ./charts ]; then |
| 60 | mkdir ./charts |
| 61 | fi |
| 62 | echo "Starting local Helm server" |
| 63 | nohup $HELM_COMMAND serve --repo-path charts >& /dev/null & |
| 64 | # Package ric-common and serve it using Helm local repo |
| 65 | $HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/ric-common" |
| 66 | $HELM_COMMAND package --save=false -d ./charts "$ROOT_DIR/dep/ric-common/Common-Template/helm/aux-common" |
| 67 | $HELM_COMMAND repo index ./charts |
| 68 | # Make sure that helm local repo is added |
| 69 | $HELM_COMMAND repo remove local |
| 70 | $HELM_COMMAND repo add local http://127.0.0.1:8879/charts |
| 71 | # Remove it/dep charts |
| 72 | rm -rf ./dep |
Zhe Huang | dbdd2b5 | 2020-03-26 16:50:33 -0400 | [diff] [blame] | 73 | |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 74 | # Create array of helm charts |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 75 | echo "Finding all Helm charts" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 76 | CHART_ARRAY=() |
| 77 | while IFS= read -r -d $'\0'; do |
| 78 | CHART_ARRAY+=("$REPLY") |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 79 | done < <(find "$ROOT_DIR/../" -maxdepth 4 -name Chart.yaml -printf '%h\0') |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 80 | |
| 81 | echo "***************************************" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 82 | for dir in "${CHART_ARRAY[@]}" |
| 83 | do |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 84 | echo "Running helm lint and verification on chart $dir" |
| 85 | echo "Update chart dependency" |
| 86 | $HELM_COMMAND dep up "$dir" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 87 | # Lint clearly marks errors; e.g., [ERROR] |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 88 | echo "Performing Helm lint" |
| 89 | if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then |
| 90 | $HELM_COMMAND lint -f "$OVERRIDEYAML" "$dir"> /tmp/output 2>&1 |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 91 | else |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 92 | $HELM_COMMAND lint "$dir" > /tmp/output 2>&1 |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 93 | fi |
| 94 | echo "***************************************************************************************************************" |
| 95 | cat /tmp/output |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 96 | egrep -q '^Error: [0-9]* chart\(s\) linted, [0-9]* chart\(s\) failed' /tmp/output && exit 1 |
| 97 | echo "***************************************************************************************************************" |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 98 | echo "Rendering Helm charts locally" |
| 99 | if [[ "${OVERRIDEYAML:-nope}" != "nope" ]]; then |
| 100 | $HELM_COMMAND template -f "$OVERRIDEYAML" "$dir" > /tmp/output 2>&1 |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 101 | else |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 102 | $HELM_COMMAND template "$dir" > /tmp/output 2>&1 |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 103 | fi |
| 104 | echo "***************************************************************************************************************" |
| 105 | cat /tmp/output |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 106 | grep -E -n '%!.\(.*=.*\)' /tmp/output && echo "Error: Type mismatch." && exit 1 |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 107 | echo "***************************************************************************************************************" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 108 | done |
Zhe Huang | faf7b36 | 2020-03-26 17:35:19 -0400 | [diff] [blame] | 109 | echo "--> verify-ric-charts ends" |
wrider | db365a7 | 2020-01-20 15:28:51 -0500 | [diff] [blame] | 110 | exit 0 |
| 111 | |