From 5709ed0fcd2650f4f3a4924c81d567b66894b75f Mon Sep 17 00:00:00 2001 From: Jesse Hitch Date: Wed, 24 Jul 2024 07:55:36 +0200 Subject: [PATCH] Refactor .github/workflows/lint-test.yaml to use a matrix for generating jobs for each test case (#598) Signed-off-by: jessebot Co-authored-by: Kate <26026535+provokateurin@users.noreply.github.com> --- .github/workflows/lint-test.yaml | 75 ++++++++++++++------------------ 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml index ded95bf8..d7b760fc 100644 --- a/.github/workflows/lint-test.yaml +++ b/.github/workflows/lint-test.yaml @@ -22,7 +22,7 @@ jobs: - 'charts/nextcloud/templates/**' lint: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest-low needs: changes if: needs.changes.outputs.src != 'false' steps: @@ -56,10 +56,32 @@ jobs: if: steps.list-changed.outputs.changed == 'true' run: ct lint --target-branch ${{ github.event.repository.default_branch }} - test-internal-database: + run-tests: runs-on: ubuntu-22.04 needs: [changes, lint] + # only run this job if there are helm chart file changes if: needs.changes.outputs.src != 'false' + strategy: + # continue with all the other jobs even if one fails + fail-fast: false + matrix: + # each item in this list is a job with an isolated test VM + test_cases: + # test the plain helm chart with nothing changed + - name: 'Default - no custom values' + + # test the helm chart with postgresql subchart enabled + - name: PostgreSQL Enabled + helm_args: '--helm-extra-set-args "--set=postgresql.enabled=true --set=postgresql.global.postgresql.auth.password=testing123456 --set=internalDatabase.enabled=false --set=externalDatabase.enabled=True --set=externalDatabase.type=postgresql --set=externalDatabase.password=testing12345"' + + # test the helm chart with nginx container enabled + - name: Nginx Enabled + helm_args: '--helm-extra-set-args "--set=image.flavor=fpm --set=nginx.enabled=true"' + + # test the helm chart with horizontal pod autoscaling enabled + - name: Horizontal Pod Autoscaling Enabled + helm_args: '--helm-extra-set-args "--set=hpa.enabled=true --set=hpa.minPods=1 --set=hpa.maxPods=3 --set=hpa.targetCPUUtilizationPercentage=75"' + steps: - name: Checkout uses: actions/checkout@v4 @@ -90,48 +112,15 @@ jobs: uses: helm/kind-action@v1.10.0 if: steps.list-changed.outputs.changed == 'true' - - name: Run chart-testing (install) + - name: Run chart-testing (install ${{ matrix.test_cases.name }}) id: install if: steps.list-changed.outputs.changed == 'true' - run: ct install --target-branch ${{ github.event.repository.default_branch }} + run: ct install --target-branch ${{ github.event.repository.default_branch }} ${{ matrix.test_cases.helm_args }} - test-postgresql-database: - runs-on: ubuntu-22.04 - needs: [changes, lint] - if: needs.changes.outputs.src != 'false' + summary: + runs-on: ubuntu-latest-low + needs: [changes, run-tests] + if: always() steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install Helm - uses: azure/setup-helm@v4 - with: - version: v3.14.4 - - - name: Add dependency chart repos - run: | - helm repo add bitnami https://charts.bitnami.com/bitnami - - - name: Set up chart-testing - uses: helm/chart-testing-action@v2.6.1 - - - name: Run chart-testing (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: Create kind cluster - uses: helm/kind-action@v1.10.0 - if: steps.list-changed.outputs.changed == 'true' - - - name: Run chart-testing (install) - id: install - if: steps.list-changed.outputs.changed == 'true' - run: | - ct install --target-branch ${{ github.event.repository.default_branch }} \ - --helm-extra-set-args "--set=postgresql.enabled=true --set=postgresql.global.postgresql.auth.password=testing123456 --set=internalDatabase.enabled=false --set=externalDatabase.enabled=True --set=externalDatabase.type=postgresql --set=externalDatabase.password=testing123456" + - name: Summary + run: if ${{ needs.changes.outputs.src != 'false' && needs.run-tests.result != 'success' }}; then exit 1; fi