name: "Charts: Lint" on: workflow_call: inputs: charts: description: > Json encoded list of Helm charts to release. Defaults to releasing everything. default: "[]" required: true type: string helmVersion: description: > Helm version to use. default: "3.11.2" required: false type: string jobs: lint-chart: if: ${{ inputs.charts != '[]' && inputs.charts != '' }} name: Lint chart strategy: matrix: chart: ${{ fromJSON(inputs.charts) }} fail-fast: false runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Install Kubernetes tools uses: yokawasa/action-setup-kube-tools@v0.11.2 with: setup-tools: | helmv3 helm: "${{ inputs.helmVersion }}" - name: Set up chart-testing uses: helm/chart-testing-action@v2.7.0 - name: Dereference JSON schema uses: bjw-s/helm-charts-actions/dereference-json-schema@main with: schemaFile: "charts/${{ matrix.chart }}/values.schema.json" outputFile: "charts/${{ matrix.chart }}/values.schema.json" allowFileNotFound: true - name: Run chart-testing (lint) run: ct lint --config .ci/ct/ct.yaml --charts "charts/${{ matrix.chart }}" lint_success: needs: - lint-chart if: | always() name: Lint successful runs-on: ubuntu-latest steps: - name: Check matrix status if: >- ${{ ( inputs.chartsToLint != '' && inputs.chartsToLint != '[]' ) && ( contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') ) }} run: exit 1