blob: e41f2cd68ebb1027cff4541ffa4f73ea3c0dcdf4 [file] [log] [blame]
Zack Williams7468c362018-04-06 09:52:30 -07001#!/usr/bin/env bash
Zack Williamsac984412018-04-04 15:39:45 -07002
3# Copyright 2018-present Open Networking Foundation
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17# helmlint.sh
18# run `helm lint` on all helm charts that are found
19
20set +e -u -o pipefail
Zack Williams7468c362018-04-06 09:52:30 -070021
22# verify that we have helm installed
23command -v helm >/dev/null 2>&1 || { echo "helm not found, please install it" >&2; exit 1; }
24
Zack Williamsac984412018-04-04 15:39:45 -070025echo "helmlint.sh, using helm version: $(helm version -c --short)"
26
27fail_lint=0
28
Zack Williams7468c362018-04-06 09:52:30 -070029# when not running under Jenkins, use current dir as workspace
30WORKSPACE=${WORKSPACE:-.}
31
Zack Williams32293ee2018-05-18 09:15:13 -070032while IFS= read -r -d '' chart
33do
Zack Williamsac984412018-04-04 15:39:45 -070034 chartdir=$(dirname "${chart}")
35
Zack Williamse9301102018-05-15 08:49:17 -070036 # update requirements if it exists. Skip voltha as it has non-clean reqirements
Andy Bavierf0d0b9e2018-07-17 14:24:53 -070037 if [[ ! $chartdir =~ voltha$ ]] && \
38 [[ ! $chartdir =~ nem-core$ ]] && \
39 [[ ! $chartdir =~ seba-substrate$ ]] && \
Matteo Scandolob575a292018-07-25 14:40:52 -070040 [[ ! $chartdir =~ nem-monitoring$ ]] && \
Andy Bavierf0d0b9e2018-07-17 14:24:53 -070041 [ -f "${chartdir}/requirements.yaml" ]
42 then
Zack Williamse9301102018-05-15 08:49:17 -070043 helm dependency update "${chartdir}"
44 fi
45
Zack Williamsac984412018-04-04 15:39:45 -070046 # lint with values.yaml if it exists
47 if [ -f "${chartdir}/values.yaml" ]; then
48 helm lint --strict --values "${chartdir}/values.yaml" "${chartdir}"
49 else
50 helm lint --strict "${chartdir}"
51 fi
52
53 rc=$?
54 if [[ $rc != 0 ]]; then
55 fail_lint=1
56 fi
Zack Williams32293ee2018-05-18 09:15:13 -070057done < <(find "${WORKSPACE}" -name Chart.yaml -print0)
Zack Williamsac984412018-04-04 15:39:45 -070058
Zack Williamse9301102018-05-15 08:49:17 -070059if [[ $fail_lint != 0 ]]; then
60 exit 1
61fi
62
63exit 0