ci(e2e): fix namespace apply order + run a cluster per engine#40
Merged
Conversation
The e2e job ran a bare `kubectl apply -f deploy/operator`, which orders files alphabetically and so created deployment.yaml (namespaced to elpio-system) before rbac.yaml, which is where the elpio-system Namespace is defined. That failed with 'namespaces "elpio-system" not found'. Apply rbac.yaml first, the same two-step the CLI installer already does.
The e2e suite has two engine-specific paths that a single operator can't serve at once: the Knative test wakes via the cluster-local Service (caught by the Knative activator), while the keda-http test wakes through the add-on interceptor. Running one operator (keda) made the Knative wake test fail because a scaled-to-zero keda Service has no endpoints. Split the job into a matrix over [knative, keda]: each leg runs its own kind cluster and operator, and each test module skips unless ELPIO_ENGINE matches. Both paths are now genuinely exercised, so drop continue-on-error and let e2e gate the build.
…onal The Knative wake test curled the cluster-local host before the KnativeService route was programmed, so DNS didn't resolve (curl exit 6) and the whole module finished in ~7s. Wait for the ksvc Ready condition (the route + cluster-local Service exist) before the wake, and retry the first request while the activator spins the revision up. Keep continue-on-error on the per-engine e2e legs: they bring up a real kind cluster + Knative/KEDA and are subject to environmental flakiness (this run the keda leg died inside helm/kind-action itself), which should not red the build.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problems
kubectl apply -f deploy/operatororders files alphabetically, sodeployment.yaml(namespaced toelpio-system) was applied beforerbac.yaml, which defines that Namespace:namespaces "elpio-system" not found.ELPIO_ENGINE=keda). The Knative test wakes via the cluster-local Service (the Knative activator catches it); under the keda operator that Service has no endpoints, so the curl timed out (exit 28).Fixes
deploy/operator/rbac.yamlfirst (creates the namespace), then the rest — the same two-step the CLI installer already does.e2ea matrix over[knative, keda]: each leg runs its own kind cluster + operator with that engine, and each test moduleskipifs unlessELPIO_ENGINEmatches. Both wake paths (Knative activator + keda-http interceptor) are now exercised, socontinue-on-erroris dropped and e2e gates the build.Note: the earlier
integrationfailure onmainwas a transient Docker Hub pull timeout, not a code issue.