name: "Pull Request: Get metadata" on: workflow_call: outputs: isRenovatePR: description: "Is the PR coming from Renovate?" value: ${{ jobs.pr-metadata.outputs.isRenovatePR }} isFork: description: "Is the PR coming from a forked repo?" value: ${{ jobs.pr-metadata.outputs.isFork }} addedOrModified: description: "Does the PR contain any changes?" value: ${{ jobs.pr-changes.outputs.addedOrModified }} addedOrModifiedFiles: description: "A list of the files changed in this PR" value: ${{ jobs.pr-changes.outputs.addedOrModifiedFiles }} addedOrModifiedCharts: description: "A list of the charts changed in this PR" value: ${{ jobs.pr-changes.outputs.addedOrModifiedCharts }} jobs: pr-metadata: name: Collect PR metadata runs-on: ubuntu-latest outputs: isRenovatePR: ${{ startsWith(steps.branch-name.outputs.current_branch, 'renovate/') }} isFork: ${{ github.event.pull_request.head.repo.full_name != github.repository }} steps: - name: Get branch name id: branch-name uses: tj-actions/branch-names@v5.1 pr-changes: name: Collect PR changes runs-on: ubuntu-latest outputs: addedOrModified: ${{ steps.filter.outputs.addedOrModified }} addedOrModifiedFiles: ${{ steps.filter.outputs.addedOrModified_files }} addedOrModifiedCharts: ${{ steps.filter-charts.outputs.addedOrModified }} steps: - name: Checkout uses: actions/checkout@v2 - name: Collect changed files uses: dorny/paths-filter@v2 id: filter with: list-files: shell filters: | addedOrModified: - added|modified: 'charts/**' - name: Collect changed charts if: | steps.filter.outputs.addedOrModified == 'true' id: filter-charts run: | CHARTS=() PATHS=(${{ steps.filter.outputs.addedOrModified_files }}) # Get only the chart paths for CHARTPATH in "${PATHS[@]}" do IFS='/' read -r -a path_parts <<< "${CHARTPATH}" CHARTS+=("${path_parts[1]}/${path_parts[2]}") done # Remove duplicates CHARTS=( `printf "%s\n" "${CHARTS[@]}" | sort -u` ) # Set output to changed charts printf "::set-output name=addedOrModified::%s\n" "${CHARTS[*]}"