Skip to content

agentgateway: report nacks via events #1100

agentgateway: report nacks via events

agentgateway: report nacks via events #1100

Workflow file for this run

name: Kubernetes Tests
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
merge_group:
types: [checks_requested]
env:
VERSION: '1.0.0-ci1'
GITHUB_TOKEN: ${{ github.token }}
GO_TEST_RETRIES: 2
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
jobs:
end_to_end_tests:
name: End-to-End (${{ matrix.test.cluster-name }})
runs-on: ubuntu-22.04
timeout-minutes: 60
if: ${{ !github.event.pull_request.draft }}
strategy:
fail-fast: false
matrix:
# We intentionally set an upper threshold of 30 minutes for our End-to-End tests
# Our goal is to load balance tests in a way that allows quick iteration on PRs
# If tests are exceeding the 30-minute limit, please see:
# /test/e2e/load_balancing_tests.md
#
# Above each test below, we document the latest date/time for the GitHub action step `Run /./.github/actions/kubernetes-e2e-tests` to run
# NOTE: We use the GitHub action step time (as opposed to the `go test` time or the GitHub action job time), because it is easier to capture and fairly consistent
test:
# August 29, 2025: ~10 minutes
- cluster-name: 'cluster-one'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgateway$$/^BasicRouting$$|^TestKgateway$$/^PathMatching$$|^TestKgateway$$/^HTTPRouteServices$$|^TestKgateway$$/^TLSRouteServices$$|^TestKgateway$$/^GRPCRouteServices$$|^TestKgateway$$/^SessionPersistence$$'
localstack: 'false'
# August 29, 2025: ~13 minutes
- cluster-name: 'cluster-two'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgatewayWaypoint$$'
localstack: 'false'
# August 29, 2025: ~9 minutes
- cluster-name: 'cluster-three'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgateway$$/^DynamicForwardProxy$$|^TestKgateway$$/^Lambda$$|^TestKgateway$$/^AccessLog$$|^TestKgateway$$/^LocalRateLimit$$|^TestKgateway$$/^Cors$$|^TestKgateway$$/^BackendConfigPolicy$$|^TestKgateway$$/^HttpListenerPolicy$$|^TestKgateway$$/^Tracing$$|^TestKgateway$$/^DirectResponse$$|^TestKgateway$$/^AdminServer$$'
localstack: 'true'
# August 29, 2025: ~9 minutes
- cluster-name: 'cluster-four'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgateway$$/^ExtProc$$|^TestKgateway$$/^ExtAuth$$|^TestKgateway$$/^PolicySelector$$|^TestKgateway$$/^Backends$$|^TestKgateway$$/^BackendTLSPolicies$$|^TestKgateway$$/^CSRF$$|^TestKgateway$$/^AutoHostRewrite$$|^TestKgateway$$/^LeaderElection$$'
localstack: 'false'
# August 29, 2025: ~10 minutes
- cluster-name: 'cluster-five'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgateway$$/^TimeoutRetry$$|^TestKgateway$$/^HeaderModifiers$$|^TestKgateway$$/^RBAC$$|^TestKgateway$$/^Deployer$$|^TestKgateway$$/^Transforms$$|^TestRouteReplacement$$|^TestKgateway$$/^RouteDelegation$$'
localstack: 'false'
# August 29, 2025: ~9 minutes
- cluster-name: 'cluster-six'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestInferenceExtension$$|^TestListenerSet$$|^TestKgateway$$/^TCPRouteServices$$|^TestKgatewayIstioAutoMtls$$|^TestZeroDowntimeRollout$$'
localstack: 'false'
# August 29, 2025: ~4 minutes
- cluster-name: 'cluster-metrics'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestKgatewayMetrics$$|^TestControlPlaneTLS$$'
localstack: 'false'
# August 29, 2025: ~4 minutes
- cluster-name: 'cluster-multi-install'
go-test-args: '-v -timeout=5m'
go-test-run-regex: '^TestMultipleInstalls'
localstack: 'false'
# August 29, 2025: ~4 minutes
- cluster-name: 'agent-gateway-cluster'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestAgentgatewayIntegration'
agentgateway: 'true'
# August 29, 2025: ~3 minutes
- cluster-name: 'api-validation'
go-test-args: '-v -timeout=10m'
go-test-run-regex: '^TestAPIValidation'
# In our PR tests, we run the suite of tests using the upper ends of versions that we claim to support
# The versions should mirror: https://kgateway.dev/docs/reference/versions/
version-files:
- file: './.github/workflows/.env/pr-tests/versions.env'
steps:
- uses: actions/checkout@v4
- name: Prep Go Runner
uses: ./.github/actions/prep-go-runner
# The dotenv action is used to load key-value pairs from files.
# In this case, the file is specified in the matrix and will contain the versions of the tools to use
- name: Dotenv Action
uses: falti/[email protected]
id: dotenv
with:
path: ${{ matrix.version-files.file }}
log-variables: true
- id: setup-kind-cluster
name: Setup KinD Cluster
uses: ./.github/actions/setup-kind-cluster
with:
cluster-name: ${{ matrix.test.cluster-name }}
kind-node-version: ${{ steps.dotenv.outputs.node_version }}
kubectl-version: ${{ steps.dotenv.outputs.kubectl_version }}
istio-version: ${{ steps.dotenv.outputs.istio_version }}
localstack: ${{ matrix.test.localstack }}
- id: run-tests
uses: ./.github/actions/kubernetes-e2e-tests
with:
cluster-name: ${{ matrix.test.cluster-name }}
test-args: ${{ matrix.test.go-test-args }}
run-regex: ${{ matrix.test.go-test-run-regex }}
istio-version: ${{ steps.dotenv.outputs.istio_version }}
matrix-label: "pr"
- id: debug-space
shell: bash
run: |
echo "After job disk space:"
df -h
docker system df -v