/ .github / workflows / helm-validate.yml
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