Skip to content

Commit

Permalink
Automate ignoring deprecated charts
Browse files Browse the repository at this point in the history
  • Loading branch information
WyriHaximus committed Dec 1, 2024
1 parent efa39fb commit faf145b
Showing 1 changed file with 61 additions and 23 deletions.
84 changes: 61 additions & 23 deletions .github/workflows/helm-charts-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,48 @@ name: "helm-charts/test"
on: pull_request

jobs:
lint:
generate-charts:
runs-on: ubuntu-latest
name: Generate Charts
outputs:
deprecated: ${{ steps.deprecated.outputs.charts }}
maintained: ${{ steps.maintained.outputs.charts }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Fetch history
run: git fetch --prune --unshallow
- name: Install Chart Tester
uses: helm/[email protected]
- name: Add WyriHaximusNet repo
run: helm repo add WyriHaximusNet https://helm.wyrihaximus.net/
- name: Lint charts
id: lint
run: ct lint --all
with:
sparse-checkout: |
charts/
- name: Get values files
uses: tj-actions/glob@v22
id: charts
with:
separator: ","
files: |
charts/${{ matrix.chart }}/**/Chart.yaml
- name: Deprecated Charts
id: deprecated
run: |
printf "charts=%s" $(echo "${{ steps.charts.outputs.paths }}" | docker run -i -q --rm -v $(pwd):$(pwd) -w $(pwd) ghcr.io/wyrihaximusnet/php:8.4-nts-alpine-root php -r 'echo str_replace(["charts", "Chart.yaml", "/", "\\"], "", json_encode(array_values(array_filter(explode(",", trim(fgets(STDIN))), static fn (string $path): bool => str_contains(file_get_contents($path), "deprecated: true") && !str_contains($path, "commons"))))) . "\n";') >> $GITHUB_OUTPUT
- name: Maintained Charts
id: maintained
run: |
printf "charts=%s" $(echo "${{ steps.charts.outputs.paths }}" | docker run -i -q --rm -v $(pwd):$(pwd) -w $(pwd) ghcr.io/wyrihaximusnet/php:8.4-nts-alpine-root php -r 'echo str_replace(["charts", "Chart.yaml", "/", "\\"], "", json_encode(array_values(array_filter(explode(",", trim(fgets(STDIN))), static fn (string $path): bool => !str_contains(file_get_contents($path), "deprecated: true") && !str_contains($path, "commons"))))) . "\n";') >> $GITHUB_OUTPUT
- name: Show chart lists
run: |
echo "Deprecated:"
echo ${{ steps.deprecated.outputs.charts }}
echo "Maintained:"
echo ${{ steps.maintained.outputs.charts }}
validate-values-schema:
runs-on: ubuntu-latest
name: Validate values schema json
needs:
- generate-charts
strategy:
fail-fast: false
matrix:
chart:
- cron-jobs
- default-backend
- docker-hub-exporter
- pi-hole-exporter
- redirect
- redis-db-assignment-operator
chart: ${{ fromJson(needs.generate-charts.outputs.maintained) }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -49,11 +64,30 @@ jobs:
input: ${{ steps.valueFiles.outputs.paths }}
output: charts/${{ matrix.chart }}/values.schema.json
fail-on-diff: true
lint:
name: Lint
runs-on: ubuntu-latest
needs:
- validate-values-schema
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Fetch history
run: git fetch --prune --unshallow
- name: Install Chart Tester
uses: helm/[email protected]
- name: Add WyriHaximusNet repo
run: helm repo add WyriHaximusNet https://helm.wyrihaximus.net/
- name: Lint charts
id: lint
run: ct lint --all
test:
name: Test on Kubernetes v${{ matrix.k8s }}
runs-on: ubuntu-latest
needs:
- generate-charts
- lint
- validate-values-schema
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -107,17 +141,21 @@ jobs:
if [[ -n "$changed" ]]; then
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
- name: Prepare library charts
- name: Prepare charts
run: |
echo -e " PIHOLE_HOSTNAME: \"${{ steps.pihole.outputs.hostname }}\"\r\n" >> charts/pi-hole-exporter/library-ci/secret.yaml
cp charts/commons/library-ci/*.yaml charts/commons/templates/
cp charts/cron-jobs/library-ci/*.yaml charts/cron-jobs/templates/
cp charts/pi-hole-exporter/library-ci/*.yaml charts/pi-hole-exporter/templates/
sed -i 's/library/application/g' charts/commons/Chart.yaml
sed -i 's/library/application/g' charts/cron-jobs/Chart.yaml
rm -Rf charts/commento
rm -Rf charts/commentoplusplus
rm -Rf charts/horizontal-pod-autoscalers
echo '${{ needs.generate-charts.outputs.deprecated }}' >> charts.json
cat charts.json
jq -c '.[]' charts.json | while read chart; do
rm -Rfv $(echo "charts/${chart}" | docker run -i -q --rm ghcr.io/wyrihaximusnet/php:8.4-nts-alpine-root php -r 'echo str_replace("\"", "", fgets(STDIN));')
done
rm -f charts.json
- run: ls -lasth charts/
- run: kubectl get pods -A
- run: kubectl get svc -A
- name: Test Changed Charts
Expand Down

0 comments on commit faf145b

Please sign in to comment.