Skip to content

ci: add Branch Helm E2E workflow with test:e2e-helm gate#1162

Merged
TaylorMutch merged 9 commits intotmutch/kube-e2efrom
tmutch/helm-e2e-ci
May 5, 2026
Merged

ci: add Branch Helm E2E workflow with test:e2e-helm gate#1162
TaylorMutch merged 9 commits intotmutch/kube-e2efrom
tmutch/helm-e2e-ci

Conversation

@TaylorMutch
Copy link
Copy Markdown
Collaborator

Summary

  • Adds branch-helm-e2e.yml — a label-gated workflow that runs the Helm e2e test suite on PRs tagged test:e2e-helm
  • Wires the new workflow into the existing gate infrastructure (e2e-gate.yml, e2e-label-help.yml)

Related Issue

Stacked on #1159 (which introduces tasks/scripts/helm-e2e.sh and the e2e:helm:* mise tasks this workflow calls).

Changes

  • .github/workflows/branch-helm-e2e.yml — new guarded workflow: gates on test:e2e-helm, runs helm-e2e-rust and helm-e2e-python as separate parallel jobs on linux-amd64-cpu8 runners (60-min timeout each); privileged container with Docker socket for k3d; unique HELM_E2E_CLUSTER_NAME per run to prevent collisions
  • .github/workflows/e2e-gate.yml — adds Branch Helm E2E to the workflow_run trigger and adds a helm-e2e gate check job (label: test:e2e-helm, workflow: branch-helm-e2e.yml)
  • .github/workflows/e2e-label-help.yml — extends the job condition and case switch to handle test:e2e-helm, posting the correct next-step comment when the label is applied

Design notes

  • No separate image build jobs: helm-e2e.sh builds gateway and supervisor images internally via docker buildx build --load and imports them into k3d — simpler than the branch-e2e.yml pattern
  • mise install --locked provisions k3d, helm, and kubectl from mise.toml; no CI image changes needed
  • git config safe.directory is required because helm-e2e.sh calls git rev-parse to derive the default cluster name, and GHA container user/UID mismatch causes git to refuse the workspace otherwise

Testing

  • Apply test:e2e-helm to a PR and verify the label-help comment posts correctly
  • Verify Branch Helm E2E fires and both Helm E2E (rust) and Helm E2E (python) jobs run
  • Verify E2E Gate posts a Helm E2E check that goes green once both jobs pass

Checklist

  • Follows conventional commits format
  • No secrets or credentials committed
  • Gate infrastructure updated (gate + label-help)

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 5, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@TaylorMutch TaylorMutch marked this pull request as ready for review May 5, 2026 02:21
@TaylorMutch TaylorMutch requested a review from a team as a code owner May 5, 2026 02:21
@TaylorMutch
Copy link
Copy Markdown
Collaborator Author

/ok to test 5a8e33a

TaylorMutch and others added 8 commits May 5, 2026 10:55
* Add support for grpcRoute from Kubernetes Gateway API spec
* Add pkiInitJob to initialize mTLS resources
* Add sshHandshake init job
* Test integration with Envoy Gateway
* Add keycloak integration testing with Skaffold
… setup

Add a TLS behaviour section explaining that values-skaffold.yaml disables
TLS by default, and a port-forward connection guide covering both plaintext
and mTLS modes with the exact commands to extract client certs from the
cluster PKI secret.
Re-add the openshell.issuerSelfSigned helper, the mutual-exclusion guard
in pki-hook.yaml, and the certManager condition in the statefulset volume
mount. Add server.disableTls: false to values-cert-manager.yaml so the
overlay correctly overrides the skaffold dev default. Tested end-to-end
with cert-manager issuing mTLS certs and sandbox create over port-forward.
Use port 8090 for direct port-forward to avoid colliding with the k3d
LB binding on 8080 when Envoy Gateway is active.

Check both server and client TLS secrets before skipping PKI generation.
Previously only the server secret was checked, which would silently skip
generation if a partial cleanup left one half of the pair behind. Now
emits a clear error with a recovery command when partial state is detected.
Consolidates values overlays into deploy/helm/openshell/ci/, adds a
helm:lint matrix task that validates all configuration variants, and
introduces a helm-e2e.sh script that creates a k3d cluster, builds
images via docker buildx, deploys via Helm, and runs the Rust and
Python e2e suites. Tests that require Docker-native host networking
(host.openshell.internal SSRF) are skipped on the Kubernetes path.
* ci: add helm lint workflow triggered on helm chart changes

* chore: trigger helm lint CI test

* Revert "chore: trigger helm lint CI test"

This reverts commit 6b6b0a5.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 5, 2026

@TaylorMutch TaylorMutch merged commit 56d6fae into tmutch/kube-e2e May 5, 2026
12 checks passed
@TaylorMutch TaylorMutch deleted the tmutch/helm-e2e-ci branch May 5, 2026 21:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant