blob: aabdca0d7935475ee64300c2f38f1b25f4454f91 [file] [log] [blame]
Zack Williams1e107832018-05-14 14:54:25 -07001#!/usr/bin/env bash
Zack Williams9963fe52018-04-03 08:40:26 -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
Zack Williams3702be72018-08-20 11:14:21 -070020set +e -o pipefail
Zack Williamsfc1568d2018-05-15 10:24:25 -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 Williams9963fe52018-04-03 08:40:26 -070025echo "helmlint.sh, using helm version: $(helm version -c --short)"
26
27fail_lint=0
28
Zack Williamsfc1568d2018-05-15 10:24:25 -070029# when not running under Jenkins, use current dir as workspace
30WORKSPACE=${WORKSPACE:-.}
31
Zack Williams3702be72018-08-20 11:14:21 -070032# cleanup repos if `clean` option passed as parameter
33if [ "$1" = "clean" ]
34then
35 echo "Removing dependent charts"
36 find "${WORKSPACE}" -name 'charts' -exec rm -rf {} \;
37fi
Zack Williams9963fe52018-04-03 08:40:26 -070038
Zack Williams3702be72018-08-20 11:14:21 -070039while IFS= read -r -d '' chart
40do
Zack Williams9963fe52018-04-03 08:40:26 -070041 chartdir=$(dirname "${chart}")
42
Zack Williams3702be72018-08-20 11:14:21 -070043 # only update dependencies for profiles
Matteo Scandolo34dd2362018-12-12 15:16:25 -080044 if [[ $chartdir =~ xos-profiles || $chartdir =~ workflows ]] && [ -f "${chartdir}/requirements.yaml" ]
Zack Williams3702be72018-08-20 11:14:21 -070045 then
Zack Williams1e107832018-05-14 14:54:25 -070046 helm dependency update "${chartdir}"
47 fi
48
Zack Williams9963fe52018-04-03 08:40:26 -070049 # lint with values.yaml if it exists
50 if [ -f "${chartdir}/values.yaml" ]; then
51 helm lint --strict --values "${chartdir}/values.yaml" "${chartdir}"
52 else
53 helm lint --strict "${chartdir}"
54 fi
55
56 rc=$?
57 if [[ $rc != 0 ]]; then
58 fail_lint=1
59 fi
Zack Williams3702be72018-08-20 11:14:21 -070060done < <(find "${WORKSPACE}" -name Chart.yaml -print0)
Zack Williams9963fe52018-04-03 08:40:26 -070061
62if [[ $fail_lint != 0 ]]; then
63 exit 1
64fi
65
66exit 0