You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Real-provider E2E: one matrix job covering GitHub, GitLab, and Gitea (see
61
-
# docs/testing/real-provider-e2e.md).
82
+
# docs/testing/real-provider-e2e.md). It starts only after the fast local
83
+
# preflight passes, then provider legs run in parallel.
62
84
provider-e2e:
63
85
name: E2E / ${{ matrix.provider }}
64
-
needs: changes
86
+
needs: [changes, preflight]
65
87
runs-on: [self-hosted, linux, x64, 32gb-ram]
66
88
# Runs when sync/provider-relevant paths changed, or unconditionally on
67
89
# workflow_dispatch/schedule/a push to main (main always gets the full
@@ -156,6 +178,15 @@ jobs:
156
178
# fork PRs get no E2E coverage at all.
157
179
if [ "${{ matrix.provider }}" = "gitea" ]; then
158
180
run=false
181
+
# Make the disabled state explicit in the run log + summary so a
182
+
# green "E2E / gitea" job is never mistaken for "Gitea E2E passed".
183
+
echo "::notice::Gitea E2E is disabled in CI (runner Docker networking — see TODO below). Suite/harness code passes locally; re-enable by removing this block."
184
+
{
185
+
echo "### Gitea E2E: disabled"
186
+
echo "Reason: runner Docker networking — container provisioning against this runner fleet needs investigation (bridge-IP reachability, health-check timing)."
187
+
echo "Suite/harness code is untouched and passes locally (\`npm run test:e2e -- --provider gitea\`). The Gitea infrastructure fix is tracked separately; do not infer three-provider coverage from a green gitea leg."
188
+
echo "Re-enable by removing the gitea block in the \"Determine whether this provider leg should run\" step."
189
+
} >> "$GITHUB_STEP_SUMMARY"
159
190
fi
160
191
if [ "${{ github.event_name }}" = "pull_request" ] \
161
192
&& [ "${{ matrix.provider }}" != "gitea" ] \
@@ -184,29 +215,24 @@ jobs:
184
215
- run: npm ci --ignore-scripts
185
216
if: steps.gate.outputs.run == 'true'
186
217
187
-
# Arrange/Assert/cleanup are Shell + Git (scripts/e2e-harness.sh); Act
188
-
# stays production TypeScript (npx vitest). E2E_WORKDIR/E2E_PR_NUMBER/
189
-
# E2E_SOURCE_BRANCH are set once at job level (see the job `env:`
190
-
# above) so all steps below share the same run state/identity.
191
-
- name: Provision isolated branch/container
192
-
if: steps.gate.outputs.run == 'true'
193
-
env:
194
-
E2E_PROVIDER: ${{ matrix.provider }}
195
-
run: scripts/e2e-harness.sh provision
196
-
197
-
- name: Seed baseline fixture
198
-
if: steps.gate.outputs.run == 'true'
199
-
env:
200
-
E2E_PROVIDER: ${{ matrix.provider }}
201
-
run: scripts/e2e-harness.sh seed
202
-
218
+
# One entry point for the whole real-provider E2E flow: scripts/run-e2e.sh
219
+
# provisions the isolated branch/container, seeds the baseline fixture,
220
+
# runs the suites listed in scripts/e2e-suites.txt (the single source of
221
+
# truth — CI and local run the same command, so the suite list is never
222
+
# duplicated here), and cleans up via its EXIT trap. New suites are added
223
+
# in scripts/e2e-suites.txt only; run-e2e.sh's own forward/reverse checks
224
+
# fail the run if a suite file isn't registered (or vice versa).
225
+
# E2E_WORKDIR is set by the "Compute run-scoped workdir" step above; the
226
+
# job `env:` supplies the provider secrets and run identity
227
+
# (E2E_PR_NUMBER/E2E_SOURCE_BRANCH) that run-e2e.sh/e2e-harness.sh consume.
228
+
#
203
229
# Retried (not just run once): observed failures against the real
204
230
# providers include transient runner-network blips unrelated to the
205
231
# suite/product code (e.g. a bare `getaddrinfo ENOTFOUND gitlab.com`
206
232
# mid-test on 2026-08-14, run 31770197590) that a same-attempt rerun
207
-
# simply doesn't reproduce. Safe to retry the whole step from scratch:
208
-
#each suite's `runId`/branch paths are randomized per vitest process
209
-
#(see e.g. e2e/suites/sync-manager.e2e.test.ts), so a failed
233
+
# simply doesn't reproduce. Safe to retry from scratch: run-e2e.sh
234
+
#re-provisions a fresh isolated branch each attempt and every suite's
235
+
#runId/branch paths are randomized per vitest process, so a failed
210
236
# attempt's partial remote state never collides with the retry -- a
211
237
# genuine product/test bug still fails identically every attempt and
0 commit comments