name: Common Library Tests on: pull_request: paths: - library/common/** - library/common-test/** - .github/ct-install-config/common*.yaml - '!.github/ct-install-config/charts*' - .github/workflows/common_library_tests.yaml jobs: lint: name: Lint Common runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: helm-version: - v3.9.4 - v3.10.3 - v3.12.1 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 with: # Depth 0 is required for chart-testing to work properly fetch-depth: 0 - name: Install Helm uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78 # tag=v3 with: version: ${{ matrix.helm-version }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # tag=v4 with: python-version: "3.10" - name: Set up chart-testing uses: helm/chart-testing-action@b43128a8b25298e1e7b043b78ea6613844e079b1 # tag=v2.6.0 - name: Run chart-testing (lint) id: lint run: | ct lint --config .github/ct-install-config/common-ct-lint.yaml unittest: needs: - lint name: Unit Tests runs-on: ubuntu-22.04 env: helmUnitVersion: 0.3.0 strategy: fail-fast: false matrix: helm-version: - v3.9.4 - v3.10.3 - v3.12.1 steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 with: # Depth 0 is required for chart-testing to work properly fetch-depth: 0 - name: Install Helm uses: azure/setup-helm@f382f75448129b3be48f8121b9857be18d815a82 # tag=v3 with: version: ${{ matrix.helm-version }} - name: Run Unit-tests shell: bash run: | # Retry helm plugin install helm plugin install https://github.com/helm-unittest/helm-unittest --version v${helmUnitVersion} || \ helm plugin install https://github.com/helm-unittest/helm-unittest --version v${helmUnitVersion} || \ helm plugin install https://github.com/helm-unittest/helm-unittest --version v${helmUnitVersion} || \ helm plugin install https://github.com/helm-unittest/helm-unittest --version v${helmUnitVersion} # Run tests cd library/common-test/ helm dependency update helm unittest -f "tests/*/*.yaml" . install: needs: - lint name: Install Charts runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: # We run tests on k3s version of latest SCALE release, SCALE nightly and manually defined "latest" k3s-version: - v1.26.6+k3s1 # We run tests on Helm version of latest SCALE release, SCALE nightly and manually defined "latest" helm-version: - v3.12.1 values: - basic-values.yaml - configmap-values.yaml - secrets-values.yaml - imagePullSecret-values.yaml - job-values.yaml - cron-values.yaml - persistence-values.yaml - rbac-values.yaml - init-values.yaml steps: - name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1 with: # Depth 0 is required for chart-testing to work properly fetch-depth: 0 - name: Install Helm uses: azure/setup-helm@f382f75448129b3be48f8121b9857be18d815a82 # tag=v3 with: version: ${{ matrix.helm-version }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # tag=v4 with: python-version: "3.10" - name: Set up chart-testing uses: helm/chart-testing-action@b43128a8b25298e1e7b043b78ea6613844e079b1 # tag=v2.6.0 - name: Create k3d cluster - Attempt 1/3 continue-on-error: true id: createc1 uses: nolar/setup-k3d-k3s@293b8e5822a20bc0d5bcdd4826f1a665e72aba96 # tag=v1.0.9 with: github-token: ${{ secrets.GITHUB_TOKEN }} version: ${{ matrix.k3s-version }} # Flags found here https://github.com/k3d-io/k3d k3d-args: --k3s-arg --disable=metrics-server@server:* - name: Wait 10 second to retry if: steps.createc1.outcome=='failure' run: | sleep 10 - name: Create k3d cluster - Attempt 2/3 continue-on-error: true if: steps.createc1.outcome=='failure' id: createc2 uses: nolar/setup-k3d-k3s@293b8e5822a20bc0d5bcdd4826f1a665e72aba96 # tag=v1.0.9 with: github-token: ${{ secrets.GITHUB_TOKEN }} version: ${{ matrix.k3s-version }} # Flags found here https://github.com/k3d-io/k3d k3d-args: --k3s-arg --disable=metrics-server@server:* - name: Wait 10 second to retry if: steps.createc2.outcome=='failure' run: | sleep 10 - name: Create k3d cluster - Attempt 3/3 id: createc3 if: steps.createc2.outcome=='failure' uses: nolar/setup-k3d-k3s@293b8e5822a20bc0d5bcdd4826f1a665e72aba96 # tag=v1.0.9 with: github-token: ${{ secrets.GITHUB_TOKEN }} version: ${{ matrix.k3s-version }} # Flags found here https://github.com/k3d-io/k3d k3d-args: --k3s-arg --disable=metrics-server@server:* - name: Run chart-testing (install) run: | # This is done to improve speed of the tests, so we can run tests in parallel # Move all ci values on a temp location (or skip if already moved from another matrix job) mv library/common-test/ci library/common-test/runtests || echo "Nothing to move" # Move one values.yaml to the correct location to run the test mv -f library/common-test/runtests/${{ matrix.values }} library/common-test/values.yaml # Actually run the test ct install --config .github/ct-install-config/common-ct-install.yaml