Skip to content

Automate ignoring deprecated charts #552

Automate ignoring deprecated charts

Automate ignoring deprecated charts #552

name: "helm-charts/test"
on: pull_request
jobs:
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
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: |
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")))));'
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")))));') >> $GITHUB_OUTPUT
- name: Maintained Charts
id: maintained
run: |
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")))));'
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"))));') >> $GITHUB_OUTPUT
validate-values-schema:
runs-on: ubuntu-latest
name: Validate values schema json
strategy:
matrix:
chart: ${{ fromJson(needs.generate-charts.outputs.maintained) }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
sparse-checkout: |
charts/${{ matrix.chart }}/
- name: Get values files
uses: tj-actions/glob@v22
id: valueFiles
with:
separator: ","
files: |
charts/${{ matrix.chart }}/**/*values.yaml
- name: Validate values schema json
uses: losisin/helm-values-schema-json-action@v1
with:
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:
# - lint
# strategy:
# fail-fast: false
# matrix:
# k8s:
# - "1.23"
# - "1.24"
# - "1.25"
# - "1.26"
# - "1.27"
# - "1.28"
# - "1.29"
# - "1.30"
# - "1.31"
# steps:
# - name: Checkout
# uses: actions/checkout@v4
#
# - 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: Add WyriHaximusNet repo
# run: helm repo add WyriHaximusNet https://helm.wyrihaximus.net/
# - name: Install Chart Tester
# uses: helm/[email protected]
# - name: Run List Changed
# id: list-changed
# run: |
# changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
# if [[ -n "$changed" ]]; then
# echo "changed=true" >> "$GITHUB_OUTPUT"
# fi
# - name: Prepare library 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