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 777a3dc
Showing 1 changed file with 94 additions and 55 deletions.
149 changes: 94 additions & 55 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 --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 --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 All @@ -74,28 +108,28 @@ jobs:
- name: Fetch history
run: git fetch --prune --unshallow

- name: Create kind cluster
uses: helm/[email protected]
with:
node_image: "kindest/node:v${{ matrix.k8s }}.0"
config: etc/kind.yaml
- run: kubectl get nodes --show-labels=true
- run: kubectl get pods -A
- run: kubectl get svc -A
- name: Install PiHole
uses: evryfs/[email protected]
id: helm-pihole
with:
repo: https://mojo2600.github.io/pihole-kubernetes/
chart: pihole
helm: 'helm' # optional, default value is 'helm'
args: '--wait --atomic --timeout 13m' #optional, default value is '--wait --timeout 2m' in order to wait for the chart-install to stabilize into ready state
- run: kubectl get pods -A
- run: kubectl get svc -A
- name: Create PiHole HostName
id: pihole
run: |
echo ::set-output name=hostname::$(echo "${{ steps.helm-pihole.outputs.releaseName }}-web.default" | base64)
# - name: Create kind cluster
# uses: helm/[email protected]
# with:
# node_image: "kindest/node:v${{ matrix.k8s }}.0"
# config: etc/kind.yaml
# - run: kubectl get nodes --show-labels=true
# - run: kubectl get pods -A
# - run: kubectl get svc -A
# - name: Install PiHole
# uses: evryfs/[email protected]
# id: helm-pihole
# with:
# repo: https://mojo2600.github.io/pihole-kubernetes/
# chart: pihole
# helm: 'helm' # optional, default value is 'helm'
# args: '--wait --atomic --timeout 13m' #optional, default value is '--wait --timeout 2m' in order to wait for the chart-install to stabilize into ready state
# - run: kubectl get pods -A
# - run: kubectl get svc -A
# - name: Create PiHole HostName
# id: pihole
# run: |
# echo ::set-output name=hostname::$(echo "${{ steps.helm-pihole.outputs.releaseName }}-web.default" | base64)
- name: Add WyriHaximusNet repo
run: helm repo add WyriHaximusNet https://helm.wyrihaximus.net/
- name: Install Chart Tester
Expand All @@ -107,24 +141,29 @@ 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
- run: kubectl get pods -A
- run: kubectl get svc -A
- name: Test Changed Charts
if: steps.list-changed.outputs.changed == 'true'
run: ct install
- name: Test All Charts
if: steps.list-changed.outputs.changed != 'true'
run: ct install --all
- run: kubectl get pods -A
- run: kubectl get svc -A
echo '${{ needs.generate-charts.outputs.deprecated }}' >> charts.json
cat charts.json
jq -c '.[]' charts.json | while read chart; do
echo $(echo "charts/${chart}" | docker run -i --rm ghcr.io/wyrihaximusnet/php:8.4-nts-alpine-root php -r 'echo str_replace("\"", "", fgets(STDIN));')
rm -Rfv "charts/${chart}"
done
rm -f charts.json
- run: ls -lasth charts/
# - run: kubectl get pods -A
# - run: kubectl get svc -A
# - name: Test Changed Charts
# if: steps.list-changed.outputs.changed == 'true'
# run: ct install
# - name: Test All Charts
# if: steps.list-changed.outputs.changed != 'true'
# run: ct install --all
# - run: kubectl get pods -A
# - run: kubectl get svc -A

0 comments on commit 777a3dc

Please sign in to comment.