mirror of
https://github.com/k8s-at-home/charts.git
synced 2025-02-02 23:39:03 +00:00
ci: Add PR validation flow
Signed-off-by: Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs <me@bjw-s.dev>
This commit is contained in:
parent
1db3745ec4
commit
ee6b8361da
71
.github/workflows/pr-get-metadata.yaml
vendored
Normal file
71
.github/workflows/pr-get-metadata.yaml
vendored
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
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[*]}"
|
14
.github/workflows/pr-validate.yaml
vendored
Normal file
14
.github/workflows/pr-validate.yaml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
name: "Pull Request: Validate"
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.head_ref }}-pr-validate
|
||||||
|
# cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pr-get-metadata:
|
||||||
|
uses: k8s-at-home/charts/.github/workflows/pr-get-metadata.yaml@master
|
Loading…
Reference in New Issue
Block a user