Karpenter nightly provisioning test suite #66
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E tests (nightly, full suite) | |
| # Runs ONLY specs labeled `Nightly` (slow / destructive scaling cases, etc.). | |
| # Triggers: | |
| # - schedule: every day at 00:00 Sydney time | |
| # - workflow_dispatch: manual run | |
| # Pull requests do NOT trigger this workflow; PRs use e2e.yaml which skips | |
| # Nightly specs. | |
| on: | |
| pull_request: {} # remove | |
| schedule: | |
| # 00:00 Sydney time. GitHub cron is UTC; Sydney is UTC+10 (AEST) for | |
| # most of the year, so 14:00 UTC == 00:00 AEST next day. During AEDT | |
| # (UTC+11, ~Oct–early Apr) this fires at 01:00 local; acceptable drift. | |
| - cron: '0 14 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| branch: | |
| description: 'Branch name to run E2E tests against' | |
| required: true | |
| default: 'main' | |
| provider: | |
| description: 'E2E provider — "upstream" or "azure" (Azure-managed KEDA add-on).' | |
| required: false | |
| default: 'upstream' | |
| type: choice | |
| options: | |
| - upstream | |
| - azure | |
| istio_version: | |
| description: 'Istio version (e.g. 1.29.0). Leave empty to use default from versions.env' | |
| required: false | |
| default: '' | |
| gateway_api_version: | |
| description: 'Gateway API CRD version (e.g. v1.2.0). Leave empty to use default from versions.env' | |
| required: false | |
| default: '' | |
| keda_version: | |
| description: 'KEDA Helm chart version (e.g. v2.19.0). Leave empty to use default from versions.env' | |
| required: false | |
| default: '' | |
| env: | |
| # Names are kept short so that the AKS-managed node resource group | |
| # ("MC_<RG>_<CLUSTER>_<LOCATION>") stays within the 80-char limit. | |
| RESOURCE_GROUP: "kaito-nightly-rg-${{ github.run_id }}" | |
| CLUSTER_NAME: "kaito-nightly-aks-${{ github.run_id }}" | |
| ACR_NAME: "kaitonightly${{ github.run_id }}acr" | |
| LOCATION: swedencentral | |
| NODE_COUNT: '3' | |
| NODE_VM_SIZE: Standard_D4d_v4 | |
| permissions: | |
| contents: read | |
| jobs: | |
| e2e-nightly-tests: | |
| runs-on: [ "self-hosted", "hostname:kaito-e2e-github-runner" ] | |
| environment: e2e-test | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ github.event.inputs.branch || github.ref }} | |
| - name: E2E base setup | |
| uses: ./.github/actions/e2e-base-setup | |
| with: | |
| resource-group: ${{ env.RESOURCE_GROUP }} | |
| cluster-name: ${{ env.CLUSTER_NAME }} | |
| acr-name: ${{ env.ACR_NAME }} | |
| location: ${{ env.LOCATION }} | |
| node-count: ${{ env.NODE_COUNT }} | |
| node-vm-size: ${{ env.NODE_VM_SIZE }} | |
| node-provisioner: karpenter | |
| provider: ${{ github.event.inputs.provider }} | |
| istio-version: ${{ github.event.inputs.istio_version }} | |
| gateway-api-version: ${{ github.event.inputs.gateway_api_version }} | |
| keda-version: ${{ github.event.inputs.keda_version }} | |
| - name: Run E2E tests (Nightly — Karpenter scale-from-zero scenarios) | |
| run: make test-e2e-karpenter | |
| - name: Generate E2E coverage report | |
| if: always() | |
| run: | | |
| go run ./hack/e2e/report \ | |
| --label-filter 'Karpenter' \ | |
| --workflow 'E2E tests (nightly, full suite)' \ | |
| --output-md e2e-coverage-report.md \ | |
| --output-html e2e-coverage-report.html | |
| echo '## Karpenter Nightly Coverage' >> "$GITHUB_STEP_SUMMARY" | |
| cat e2e-coverage-report.md >> "$GITHUB_STEP_SUMMARY" | |
| - name: Upload E2E coverage report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-coverage-report | |
| path: | | |
| e2e-coverage-report.md | |
| e2e-coverage-report.html | |
| - name: Dump cluster state | |
| if: failure() | |
| run: make e2e-dump | |
| - name: Teardown cluster | |
| if: always() | |
| run: make e2e-teardown | |
| env: | |
| RESOURCE_GROUP: ${{ env.RESOURCE_GROUP }} |