Skip to content

ci: add an IPv6-only kind e2e job - #939

Draft
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:ci-kind-ipv6
Draft

ci: add an IPv6-only kind e2e job#939
Yuan Gao (ygao-g) wants to merge 1 commit into
agent-substrate:mainfrom
ygao-g:ci-kind-ipv6

Conversation

@ygao-g

@ygao-g Yuan Gao (ygao-g) commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Do not merge until #958 and #1275 land.

Part of #246.

No CI job exercises IPv6-only, so nothing catches a change that breaks it, and
the IPv6 work is a set of changes that do little apart. This job builds a
single-stack IPv6 kind cluster, installs the full system, and runs the
networking suite, where every test that can tell one address family from
another lives — asserting the cluster really is single-stack before anything is
installed, so a green run cannot be vacuous. It carries no copy of the code it
exercises: dispatch it with a list of pull requests and it merges them onto
main in that order, and the stack lives only for the length of the run.

A fresh IPv6-only cluster resolves nothing from a pod, and a runner has no IPv6
egress of its own, so both the cluster's DNS (#958) and the translator it needs
(#1275) come from hack/; this job asks for them and then reads back what it
got. Setting that up here instead would have meant the job supplying the very
thing it exists to gate, and a green run proving nothing. The cost is that
against main alone it now stops at the NAT64 step rather than reaching the
install — including on the pull_request path that lets this file test itself,
until those two land. #911 has since merged, so the atenet dual-stack bind
needs no gate. The in-cluster registry address still goes stale (#1049). The
job stays out of the e2e-test gate either way, so it never blocks a pull
request.

Demonstrated end to end on #1065, which stacks #958, #753, #1080, #979, #1060,
#1116, #1057 and #1275: the job runs there through pull_request, is green
through all twenty steps, and the vacuity guard reports 11 passed, 0 skipped.

🤖 Generated with Claude Code

@ygao-g
Yuan Gao (ygao-g) force-pushed the ci-kind-ipv6 branch 5 times, most recently from 72285e4 to 68972e5 Compare August 14, 2026 18:13
@ygao-g Yuan Gao (ygao-g) changed the title ci: add a label-gated IPv6-only kind e2e job ci: add an IPv6-only kind e2e job [DO NOT MERGE — signal only] Aug 14, 2026
@ygao-g Yuan Gao (ygao-g) added the DO NOT MERGE This PR must not be merged yet. label Aug 19, 2026
@ygao-g
Yuan Gao (ygao-g) force-pushed the ci-kind-ipv6 branch 5 times, most recently from ba8d79e to af37e8b Compare August 20, 2026 16:43
@ygao-g Yuan Gao (ygao-g) changed the title ci: add an IPv6-only kind e2e job [DO NOT MERGE — signal only] ci: add an IPv6-only kind e2e job [DO NOT MERGE — needs #958 and #911] Aug 20, 2026
@ygao-g
Yuan Gao (ygao-g) force-pushed the ci-kind-ipv6 branch 3 times, most recently from 39c862c to fa8afe0 Compare August 27, 2026 19:17
@ygao-g Yuan Gao (ygao-g) changed the title ci: add an IPv6-only kind e2e job [DO NOT MERGE — needs #958 and #911] ci: add an IPv6-only kind e2e job Aug 27, 2026
@ygao-g
Yuan Gao (ygao-g) force-pushed the ci-kind-ipv6 branch 2 times, most recently from 8347786 to 65c684c Compare August 28, 2026 15:27
@ygao-g

Copy link
Copy Markdown
Collaborator Author

Dispatch record for this lane. The runs are on the fork; a fork pull request cannot dispatch a workflow upstream.

prs outcome
958 753 1080 979 1060 1116 1057 1275 11 passed, 0 skipped — 33132033499, and again on a later main in 33187917892
1275 7 passed; TestActorEgress, TestActorEgressHTTPS, TestActorEgressGRPC and TestActorEgressNonStandardPort fail — 33129489452

#1275 on its own brings the cluster up and leaves exactly those four failing, so everything else in the stack is what those four measure. Nothing bisects the eight, so the minimal green set is unmeasured.

The two green runs used a byte-identical e2e-ipv6.yaml on different bases, so the pass is not an artifact of one main.

No CI job exercises IPv6-only, so nothing catches a change that breaks it,
and the IPv6 work is a set of changes that do little apart. This builds a
single-stack IPv6 kind cluster, installs the full system and runs the
networking suite, where every test that can tell one address family from
another lives. It asserts the cluster really is single-stack, and that
cluster DNS is the shape an IPv6-only install needs, before installing
anything -- so a green run cannot be vacuous.

It carries no copy of what it exercises: dispatch it with a list of pull
requests and it merges them onto main for the length of the run. It stays
out of the e2e-test gate, so it never blocks a pull request.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO NOT MERGE This PR must not be merged yet.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant