helm-validate.yml
1 name: Helm Chart Validation 2 3 on: 4 pull_request: 5 paths: 6 - "charts/**" 7 8 jobs: 9 helm-lint: 10 runs-on: ubuntu-24.04 11 steps: 12 - name: Checkout 13 uses: actions/checkout@v6 14 with: 15 fetch-depth: 0 16 17 - name: Set up Helm 18 uses: azure/setup-helm@v3 19 with: 20 version: v3.17.3 21 22 - name: Helm lint 23 run: helm lint charts/budibase 24 25 helm-unittest: 26 runs-on: ubuntu-24.04 27 steps: 28 - name: Checkout 29 uses: actions/checkout@v6 30 31 - name: Set up Helm 32 uses: azure/setup-helm@v3 33 with: 34 version: v3.17.3 35 36 - name: Install helm-unittest plugin 37 run: helm plugin install https://github.com/helm-unittest/helm-unittest.git --version 0.7.2 38 39 - name: Update chart dependencies 40 run: helm dependency update charts/budibase 41 42 - name: Run unit tests 43 run: helm unittest charts/budibase 44 45 chart-testing: 46 runs-on: ubuntu-24.04 47 steps: 48 - name: Checkout 49 uses: actions/checkout@v6 50 with: 51 fetch-depth: 0 52 53 - name: Set up Helm 54 uses: azure/setup-helm@v3 55 with: 56 version: v3.17.3 57 58 - name: Set up chart-testing 59 uses: helm/chart-testing-action@v2 60 61 - name: Add helm repositories 62 run: helm repo add couchdb https://apache.github.io/couchdb-helm 63 64 - name: List changed charts 65 id: list-changed 66 run: | 67 changed=$(ct list-changed --config ct.yaml) 68 if [[ -n "$changed" ]]; then 69 echo "changed=true" >> "$GITHUB_OUTPUT" 70 fi 71 72 - name: Lint changed charts 73 if: steps.list-changed.outputs.changed == 'true' 74 run: ct lint --config ct.yaml 75 76 kubeconform: 77 runs-on: ubuntu-24.04 78 strategy: 79 matrix: 80 k8s_version: 81 - "1.28.0" 82 - "1.29.0" 83 - "1.30.0" 84 - "1.31.0" 85 steps: 86 - name: Checkout 87 uses: actions/checkout@v6 88 89 - name: Set up Helm 90 uses: azure/setup-helm@v3 91 with: 92 version: v3.17.3 93 94 - name: Install kubeconform 95 run: | 96 curl -fsSL https://github.com/yannh/kubeconform/releases/latest/download/kubeconform-linux-amd64.tar.gz | \ 97 tar xz -C /usr/local/bin kubeconform 98 99 - name: Update chart dependencies 100 run: helm dependency update charts/budibase 101 102 - name: Template and validate with kubeconform 103 run: | 104 helm template budibase charts/budibase \ 105 --set services.couchdb.enabled=false | \ 106 kubeconform \ 107 -kubernetes-version ${{ matrix.k8s_version }} \ 108 -strict \ 109 -summary \ 110 -output text 111 112 kubeval: 113 runs-on: ubuntu-24.04 114 steps: 115 - name: Checkout 116 uses: actions/checkout@v6 117 118 - name: Set up Helm 119 uses: azure/setup-helm@v3 120 with: 121 version: v3.17.3 122 123 - name: Install kubeval 124 run: | 125 curl -fsSL https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz | \ 126 tar xz -C /usr/local/bin kubeval 127 128 - name: Update chart dependencies 129 run: helm dependency update charts/budibase 130 131 - name: Template and validate with kubeval 132 run: | 133 helm template budibase charts/budibase \ 134 --set services.couchdb.enabled=false | \ 135 kubeval --strict --ignore-missing-schemas