Skip to content

Commit a926ff7

Browse files
Minipadaclaude
andcommitted
ci: add e2e-split job to gate the unmanaged-shipper + passthrough-merge path
run_split.sh was not in CI, leaving merge_custom_config_files() (#472) untested end-to-end. The split scenario is the only e2e that runs with shipper.managed:false — separate Vector container reading the merged config from a shared volume — so it is the only scenario that exercises the new code path. Uses shorter outage/delay windows (30 s outage, 15 s steady state) matching the CI-sized values already used by the main e2e job. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcgXCGPQqN3fkehWdnfYE5 Signed-off-by: David Bensoussan <d.bensoussan@proton.me>
1 parent d4799c9 commit a926ff7

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

.github/workflows/ci.yaml

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
# pull_request the same way: a not-yet-merged PR must never move that floating ref.
2424
#
2525
# build-workspace (Release: build + colcon test) ─┬─▶ sim (pull dc-workspace, simulation smoke check)
26-
# ├─▶ build-e2e-image ────▶ e2e (pull dc-e2e, zero-loss harness)
26+
# ├─▶ build-e2e-image ────▶ e2e (pull dc-e2e, zero-loss harness, managed shipper)
27+
# │ └─▶ e2e-split (same image, unmanaged shipper + passthrough merge)
2728
# ├─▶ build-dc-ros-image ─┬─▶ verify-published-images (pull + run, no build)
2829
# │ ├─▶ verify-kind-networkpolicy (#452: kind + Calico, NetworkPolicy proof)
2930
# └─▶ build-dc-uploader-image ─┴─▶ verify-robot-manifests (#450: podman kube play + network isolation)
@@ -1015,3 +1016,39 @@ jobs:
10151016
with:
10161017
name: e2e-harness-logs
10171018
path: tools/e2e/.run/**
1019+
1020+
e2e-split:
1021+
needs: [build-workspace, build-e2e-image]
1022+
runs-on: ubuntu-latest
1023+
permissions:
1024+
contents: read
1025+
packages: read
1026+
steps:
1027+
- uses: actions/checkout@v5
1028+
1029+
- name: Verify podman
1030+
run: podman --version
1031+
1032+
- name: Log in to ghcr.io (to pull the E2E image)
1033+
run: |
1034+
echo "${{ secrets.GITHUB_TOKEN }}" | podman login ghcr.io -u "${{ github.actor }}" --password-stdin
1035+
1036+
- name: Run split-topology E2E harness (unmanaged shipper + passthrough merge)
1037+
# Proves merge_custom_config_files() (#472) works end-to-end: dc-ros writes a
1038+
# single merged Vector config (rendered TOML + passthrough snippet) to the shared
1039+
# volume, a separate Vector container reads it, and Records reach Postgres. Uses
1040+
# shorter outage/delay windows than the local default so the CI job finishes in
1041+
# reasonable time while still exercising the full split-topology recovery path
1042+
# (Shipper starts late, dc-ros restarts mid-outage, zero-loss verified).
1043+
env:
1044+
DC_E2E_SPLIT_OUTAGE_SECONDS: "30"
1045+
DC_E2E_SPLIT_STEADY_STATE_SECONDS: "15"
1046+
DC_E2E_IMAGE: ${{ needs.build-workspace.outputs.e2e_ref }}
1047+
run: ./tools/e2e/scripts/run_split.sh
1048+
1049+
- name: Upload split E2E harness logs (on failure)
1050+
if: failure()
1051+
uses: actions/upload-artifact@v4
1052+
with:
1053+
name: e2e-split-harness-logs
1054+
path: tools/e2e/.run/**

0 commit comments

Comments
 (0)