Skip to content

ci(e2e): run nightly and release-tag e2e on the container lane - #4828

Merged
Aleksei Sviridkin (lexfrei) merged 2 commits into
mainfrom
ci/nightly-container-lane
Oct 10, 2026
Merged

Aleksei Sviridkin (lexfrei) merged 2 commits into
mainfrom
ci/nightly-container-lane

Conversation

@lexfrei

@lexfrei Aleksei Sviridkin (lexfrei) commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does

Nightly and the release-tag e2e (e2e-tag.yaml, the rc gate) now run on the Talos-container substrate the PR lanes moved to in #4020. This is the interim step from #4642, not the whole issue, so it does not close it.

On QEMU the nightly full suite has been cancelled at its 215-minute timeout on every night since 2026-10-01 except 2026-10-07. From 2026-10-02 on, kubernetes-latest and kubernetes-previous failed their tenant node-join deadline almost every night, each failure took about 35 minutes, and the suites after them alphabetically never ran. In the 18 PR runs since 2026-10-03 that I checked and that ran them, they passed every time, at 7 to 10 minutes each. A nightly dispatched from this branch (run 37934155231) passed all 62 tests in 193 minutes. The kubernetes suites took 9 to 11 minutes there.

Changes:

  • nightly.yaml and e2e-tag.yaml get the same host module step, prepare-env-container, endpoint and storage-class env and two-part teardown as pull-requests.yaml. Nightly's e2e no longer waits for the nocloud disk, which it does not boot. The disk is still built and published.
  • e2e-tag.yaml still requires the release to carry its disk but no longer downloads it. A dispatch against a tag cut before the container lane (v1.6.3 and older, v1.7.0-alpha.1) fails early and says to dispatch with --ref <tag>. When tags.yaml calls it, it runs the copy from the tag's own commit, so the guard does not fire there.
  • The comment above timeout-minutes: 215 in all four e2e workflows claimed the budget covers two failing tenant Kubernetes suites. It does not, and the comment now says so. The value is unchanged.
  • platform-packages_test.bats now checks the container-lane env on all four workflows, and collect-images_test.bats covers the new guard.

What loses coverage: DRBD and the replicated StorageClass (Immediate binding, tenant StorageClass propagation, RWX), the Cozystack Talos node image with its extensions, and the stock 600M CDI importer limit. None of them can run on containers, so no CI lane tests them until #4642 gets a lane with a kernel per node. The docs and comments that pointed at nightly and rc as that coverage now say this.

Release lines keep their own e2e-tag.yaml, so rc tags on release-1.6 stay on QEMU until this is backported. That is why kind/backport is on this PR. Leftover QEMU-only text and diagnostics are collected in #4825.

A dispatch of e2e-tag.yaml from this branch against v1.7.0-alpha.3 is running as run 37958852914. I'll post the result here.

Screenshots

Downstream repositories

Release note

ci(e2e): nightly and release-tag e2e run on Talos containers instead of QEMU guests. DRBD, the replicated StorageClass and the Cozystack Talos node image are no longer covered by any e2e lane.

Summary by CodeRabbit

  • CI and Testing
    • Release-tag and nightly end-to-end tests now run against container-based environments rather than booting disk images.
    • Release-tag checks still verify that the published release includes its disk image.
    • CI no longer covers QEMU-based DRBD scenarios or certain storage and Talos extension behaviors; these coverage gaps are documented.
  • Documentation
    • Updated E2E and release guidance to reflect the container-based test coverage and its limitations.

Nightly and the rc gate still booted the management nodes as QEMU
guests, the substrate the merge-gating lanes left behind. On it the
tenant Kubernetes suites have missed their node-join deadline on most
nights since 2026-10-02, each failure spends the whole deadline, and
the job reaches its timeout before the alphabetically later suites
run. Over the same days those suites passed on every PR run that
selected them, where the nodes are Talos containers and a tenant
worker sits one virtualization level shallower.

Both lanes now use the PR lanes' container substrate. Nightly's e2e no
longer waits for the nocloud disk, which it does not boot; the disk is
still built and published. A manual e2e-tag dispatch against a tag
that predates the container lane fails early and names the ref to
dispatch from instead.

DRBD, the replicated StorageClass and the Cozystack Talos node image
lose their last e2e coverage with this. The docs and comments that
pointed at nightly and the rc gate as that coverage now say so.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <[email protected]>
The comment on every lane claimed the budget fits two tenant
Kubernetes suites failing at their node-join deadline. A green full
suite on the container lane already spends most of it, and a suite that
runs into the deadline costs about 25 minutes more than one that
passes, so the claim does not hold. State the real bound so a cancelled
run is read as a red suite, not as a budget to raise.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <[email protected]>
@lexfrei Aleksei Sviridkin (lexfrei) added the kind/backport Categorizes issue or PR as requiring a backport to the current release line label Oct 9, 2026
@github-actions github-actions Bot added area/testing Issues or PRs related to testing (e2e, bats, unit tests) size/L This PR changes 100-499 lines, ignoring generated files labels Oct 9, 2026
@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: cozystack/cozystack/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2150f06a-1d23-42c7-b888-f7de7ad63920

📥 Commits

Reviewing files that changed from the base of the PR and between aa804aa and c1fe1e9.


📒 Files selected for processing (11)
  • .github/workflows/e2e-fork.yaml
  • .github/workflows/e2e-tag.yaml
  • .github/workflows/nightly.yaml
  • .github/workflows/pull-requests.yaml
  • docs/agents/e2e-testing.md
  • docs/release.md
  • hack/collect-images_test.bats
  • hack/e2e-chainsaw/README.md
  • hack/e2e-chainsaw/_lib/run-kubernetes.sh
  • hack/e2e-platform-packages.sh
  • hack/platform-packages_test.bats

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.



📝 Walkthrough

Walkthrough

Nightly and tagged E2E jobs now use Talos containers instead of booting the nocloud disk. The workflows prepare and remove container clusters, use local storage with DRBD disabled, and update checks and documentation to describe the resulting lane coverage.

Changes

E2E lane transition

Layer / File(s) Summary
Nightly container E2E
.github/workflows/nightly.yaml, docs/release.md
The nightly E2E job runs against the GHCR-published tree and prepares a container cluster. It loads required host modules, installs with DRBD disabled and local storage, runs the suite, and removes the cluster. The release documentation describes this flow without disk boot.
Tagged-release container E2E
.github/workflows/e2e-tag.yaml, docs/release.md, hack/collect-images_test.bats
The tagged workflow checks for hack/e2e-compose.yaml, prepares a container cluster, and runs E2E with local storage and DRBD disabled. It retains the published disk requirement but removes disk download steps. The BATS test checks the compose-file prerequisite.
Lane coverage and workflow checks
.github/workflows/e2e-fork.yaml, .github/workflows/pull-requests.yaml, docs/agents/e2e-testing.md, hack/e2e-chainsaw/*, hack/e2e-platform-packages.sh, hack/platform-packages_test.bats
Comments and documentation describe the container-lane limits and coverage gaps. BATS checks verify the container-tree prerequisite and check local storage and DRBD settings across all four E2E workflows.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Sequence Diagram(s)

sequenceDiagram
  participant NightlyE2EWorkflow
  participant GitHubRunner
  participant GHCR
  participant ContainerCluster
  participant E2ESuite
  NightlyE2EWorkflow->>GitHubRunner: Start E2E after mirror
  GitHubRunner->>GHCR: Log in and stage the published closure
  GitHubRunner->>ContainerCluster: Load modules and run prepare-env-container
  GitHubRunner->>ContainerCluster: Install with DRBD disabled and local storage
  GitHubRunner->>E2ESuite: Run the full E2E suite
  GitHubRunner->>ContainerCluster: Delete the container cluster
Loading

Merge Risk: ⚪ Minimal · up to c1fe1

The container-lane transition is mergeable after normal workflow checks. The loss of disk- and DRBD-specific CI coverage is documented and intentional.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title accurately and concisely describes the main change: moving nightly and release-tag E2E runs to the container lane.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 4 files. (7 skipped: 7 …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.


✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@lexfrei

Copy link
Copy Markdown
Contributor Author

The e2e-tag.yaml dispatch from this branch against v1.7.0-alpha.3 passed (run 37958852914): 57 tests, none failed, 169 minutes for the job. The guard let the tree through, and the multi-arch audit passed on what the container nodes pulled.

@lexfrei
Aleksei Sviridkin (lexfrei) merged commit 4346a30 into main Oct 10, 2026
116 of 117 checks passed
@lexfrei
Aleksei Sviridkin (lexfrei) deleted the ci/nightly-container-lane branch October 10, 2026 00:56
@github-actions

Copy link
Copy Markdown

Git push to origin failed for release-1.6 with exitcode 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/testing Issues or PRs related to testing (e2e, bats, unit tests) kind/backport Categorizes issue or PR as requiring a backport to the current release line size/L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants