name: "Pull Request: Validate" on: pull_request: types: - opened - reopened - ready_for_review - synchronize concurrency: group: ${{ github.head_ref }}-pr-validate cancel-in-progress: true permissions: contents: read jobs: prepare: name: Prepare data required for workflow runs-on: ubuntu-22.04 outputs: repoConfiguration: ${{ steps.repo-config.outputs.config }} addedOrModifiedFiles: ${{ steps.added-modified-files.outputs.all_changed_files }} chartsToLint: ${{ steps.charts-to-lint.outputs.filteredCharts }} chartsToInstall: ${{ steps.charts-to-install.outputs.filteredCharts }} steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Grab repository configuration id: repo-config shell: bash run: | echo "config=$(yq '.' '.ci/repo-config.yaml' -o json -I=0)" >> "$GITHUB_OUTPUT" - name: Get all added or modified files id: added-modified-files uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 - name: Get changed charts id: changed-charts uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 with: matrix: true path: charts dir_names: true dir_names_max_depth: 2 - name: Determine charts to lint id: charts-to-lint uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | var changedCharts = ${{ steps.changed-charts.outputs.all_changed_files }}; var chartsToFilter = ${{ toJSON(fromJSON(steps.repo-config.outputs.config).excluded-charts-lint) }}; let filteredCharts = changedCharts.filter(item => chartsToFilter.indexOf(item) < 0); core.setOutput("filteredCharts", filteredCharts); - name: Determine charts to install id: charts-to-install uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | var changedCharts = ${{ steps.changed-charts.outputs.all_changed_files }}; var chartsToFilter = ${{ toJSON(fromJSON(steps.repo-config.outputs.config).excluded-charts-install) }}; let filteredCharts = changedCharts.filter(item => chartsToFilter.indexOf(item) < 0); core.setOutput("filteredCharts", filteredCharts); pre-commit-check: name: Perform Pre-Commit check runs-on: ubuntu-22.04 needs: - prepare steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run against changes uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 with: extra_args: --files ${{ needs.prepare.outputs.addedOrModifiedFiles }} --config .ci/pre-commit/config.yaml charts-lint: name: Lint charts uses: ./.github/workflows/charts-lint.yaml needs: - prepare with: charts: ${{ needs.prepare.outputs.chartsToLint }} charts-test: name: Test charts uses: ./.github/workflows/charts-test.yaml needs: - prepare with: charts: ${{ needs.prepare.outputs.chartsToInstall }}