Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate ignoring deprecated charts #124

Merged
merged 1 commit into from
Dec 1, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading