mirror of
https://github.com/bjw-s-labs/helm-charts.git
synced 2025-07-04 00:47:04 +02:00
ci: 🧠
This commit is contained in:
parent
ad184ab678
commit
f5a67d0150
10 changed files with 387 additions and 0 deletions
53
.github/workflows/charts-lint-test.yaml
vendored
Normal file
53
.github/workflows/charts-lint-test.yaml
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
name: "Charts: Lint"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
checkoutCommit:
|
||||
required: true
|
||||
type: string
|
||||
chartChangesDetected:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint charts
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ inputs.checkoutCommit }}
|
||||
|
||||
- name: Install Kubernetes tools
|
||||
uses: yokawasa/action-setup-kube-tools@v0.8.2
|
||||
with:
|
||||
setup-tools: |
|
||||
helmv3
|
||||
helm: "3.8.0"
|
||||
|
||||
- name: Install Helm
|
||||
uses: Azure/setup-helm@v3.3
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.2.1
|
||||
|
||||
- name: Collect changes
|
||||
id: list-changed
|
||||
if: inputs.chartChangesDetected == 'true'
|
||||
run: |
|
||||
EXCLUDED=$(yq eval -o=json '.excluded-charts // []' .ci/ct/ct-lint.yaml)
|
||||
CHARTS=$(ct list-changed --config .ci/ct/ct-lint.yaml)
|
||||
CHARTS_JSON=$(echo "${CHARTS}" | jq -R -s -c 'split("\n")[:-1]')
|
||||
OUTPUT_JSON=$(echo "{\"excluded\": ${EXCLUDED}, \"all\": ${CHARTS_JSON}}" | jq -c '.all-.excluded')
|
||||
echo ::set-output name=charts::${OUTPUT_JSON}
|
||||
if [[ $(echo ${OUTPUT_JSON} | jq -c '. | length') -gt 0 ]]; then
|
||||
echo "::set-output name=detected::true"
|
||||
fi
|
||||
|
||||
- name: Run chart-testing (lint)
|
||||
id: lint
|
||||
if: steps.list-changed.outputs.detected == 'true'
|
||||
run: ct lint --config .ci/ct/ct-lint.yaml
|
60
.github/workflows/pr-metadata.yaml
vendored
Normal file
60
.github/workflows/pr-metadata.yaml
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
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.4
|
||||
|
||||
- name: Save PR data to file
|
||||
env:
|
||||
PR_NUMBER: ${{ github.event.number }}
|
||||
run: |
|
||||
echo $PR_NUMBER > pr_number.txt
|
||||
|
||||
- name: Store pr data in artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: pr_metadata
|
||||
path: ./pr_number.txt
|
||||
retention-days: 5
|
||||
|
||||
pr-changes:
|
||||
name: Collect PR changes
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
addedOrModified: ${{ steps.collect-changes.outputs.changesDetected }}
|
||||
addedOrModifiedFiles: ${{ steps.collect-changes.outputs.addedOrModifiedFiles }}
|
||||
addedOrModifiedCharts: ${{ steps.collect-changes.outputs.addedOrModifiedCharts }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Collect changes
|
||||
id: collect-changes
|
||||
uses: ./.github/actions/collect-changes
|
55
.github/workflows/pr-validate.yaml
vendored
Normal file
55
.github/workflows/pr-validate.yaml
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
name: "Pull Request: Validate"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- development
|
||||
types:
|
||||
- opened
|
||||
- edited
|
||||
- reopened
|
||||
- ready_for_review
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.head_ref }}-pr-validate
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
pr-metadata:
|
||||
uses: bjw-s/charts/.github/workflows/pr-metadata.yaml@main
|
||||
|
||||
pre-commit-check:
|
||||
uses: bjw-s/charts/.github/workflows/pre-commit-check.yaml@main
|
||||
needs:
|
||||
- pr-metadata
|
||||
with:
|
||||
modifiedFiles: ${{ needs.pr-metadata.outputs.addedOrModifiedFiles }}
|
||||
|
||||
# charts-changelog:
|
||||
# uses: bjw-s/charts/.github/workflows/charts-changelog.yaml@main
|
||||
# needs:
|
||||
# - pr-metadata
|
||||
# - pre-commit-check
|
||||
# with:
|
||||
# isRenovatePR: ${{ needs.pr-metadata.outputs.isRenovatePR }}
|
||||
# modifiedCharts: ${{ needs.pr-metadata.outputs.addedOrModifiedCharts }}
|
||||
|
||||
charts-lint:
|
||||
uses: bjw-s/charts/.github/workflows/charts-lint.yaml@main
|
||||
needs:
|
||||
- pr-metadata
|
||||
- charts-changelog
|
||||
with:
|
||||
checkoutCommit: ${{ needs.charts-changelog.outputs.commitHash }}
|
||||
chartChangesDetected: ${{ needs.pr-metadata.outputs.addedOrModified }}
|
||||
|
||||
# charts-test:
|
||||
# uses: bjw-s/charts/.github/workflows/charts-test.yaml@main
|
||||
# needs:
|
||||
# - pr-metadata
|
||||
# - charts-changelog
|
||||
# with:
|
||||
# checkoutCommit: ${{ needs.charts-changelog.outputs.commitHash }}
|
||||
# chartChangesDetected: ${{ needs.pr-metadata.outputs.addedOrModified }}
|
Loading…
Add table
Add a link
Reference in a new issue