fix(e2e): serialize concurrent E2E runs to prevent environment conflicts #111
Closed
privilegedescalation-engineer[bot] wants to merge 1 commits from
fix/e2e-concurrency-serialization into main
pull from: fix/e2e-concurrency-serialization
merge into: privilegedescalation:main
privilegedescalation:main
privilegedescalation:gandalf/fix-echo-printf-pri-1757
privilegedescalation:pri-1737-inline-release
privilegedescalation:gandalf/cleanup-agent-artifacts
privilegedescalation:dev
privilegedescalation:gandalf/cleanup-root-artifacts
privilegedescalation:uat
privilegedescalation:promote/uat-artifacthub-v1.0.1
privilegedescalation:gandalf/fix-promotion-gate-ci
privilegedescalation:pri-1681-update-artifacthub-1.0.1
privilegedescalation:fix/release-tarball-pattern
privilegedescalation:gandalf/pri-1671-pnpm-install
privilegedescalation:nancy/fix-dual-approval-uat-regress
privilegedescalation:gandalf/pri-1659-inline-release-workflow
privilegedescalation:gandalf/pri-1636-inline-dual-approval
privilegedescalation:inline-ci-2adb87e5
privilegedescalation:gandalf/fix-polaris-ah-url
privilegedescalation:docs/update-headlamp-namespace
privilegedescalation:hugh/fix-stale-rbac-path-pri-1002
privilegedescalation:gandalf/remove-orphaned-polaris-rbac-pri-917
privilegedescalation:gandalf/reference-shared-infra-rbac-pri-750
privilegedescalation:hugh/update-rbac-to-shared-infra
privilegedescalation:gandalf/add-renovate-github-action
privilegedescalation:pr-142
privilegedescalation:gandalf/fix-rbac-workflow-pri-324
privilegedescalation:gandalf/rename-ns-headlamp-dev
privilegedescalation:gandalf/remove-privilegedescalation-dev-namespace
privilegedescalation:pr-132-fix
privilegedescalation:gandalf/fix-rbac-manifest-PRI-555
privilegedescalation:chore/scrub-dependabot-references
privilegedescalation:gandalf/fix-markdown-lint-pri-391
privilegedescalation:gandalf/fix-e2e-rbac-pri-313
privilegedescalation:gandalf/fix-e2e-polaris-rbac
privilegedescalation:gandalf/fix-lodash-lockfile
No Reviewers
Labels
Clear labels
P0
P0
bug
bug
cla:approved
cla:approved
confirmed
confirmed
documentation
documentation
duplicate
duplicate
e2e
e2e
enhancement
enhancement
good first issue
good first issue
help wanted
help wanted
infra
infra
invalid
invalid
pri-917
pri-917
question
question
typecheck
typecheck
typescript
typescript
wontfix
wontfix
Must fix - blocking
Must fix - blocking
Something isn't working
Something isn't working
Improvements or additions to documentation
Improvements or additions to documentation
This issue or pull request already exists
This issue or pull request already exists
New feature or request
New feature or request
Good for newcomers
Good for newcomers
Extra attention is needed
Extra attention is needed
Infrastructure/ops work
Infrastructure/ops work
This doesn't seem right
This doesn't seem right
Further information is requested
Further information is requested
This will not be worked on
This will not be worked on
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
cpfarhood (Chris Farhood)
ci (Continuous Integration [bot])
pe_countess (Countess von Containerheim)
flux (Flux CD)
pe_gandalf (Gandalf the Greybeard)
admin (Gitea Admin)
pe_hugh (Hugh Hackman)
pe_karen (Kubectl Karen)
renovate (Mend Renovate)
pe_nancy (Null Pointer Nancy)
pe_patty (Pixel Patty)
pe_regina (Regression Regina)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: privilegedescalation/headlamp-polaris-plugin#111
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/e2e-concurrency-serialization"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Concurrent E2E runs share the same
headlamp-e2erelease name inprivilegedescalation-dev. When two PRs trigger E2E tests simultaneously, one run's teardown step (if: always()) deletes the shared Deployment/Service/ConfigMap while the other run is still using it — causing Playwright auth setup to time out trying to reach the Headlamp UI.Root cause evidence: Pod events in
privilegedescalation-devshowedheadlamp-e2ecycling through scale 0→1 multiple times in minutes, with each cycle matching a concurrent CI run lifecycle. Run 23499990163 (feat/renovate-extend-org-config) failed while a concurrent run onfix/node24-action-versionswas tearing down the shared environment.Fix: Add a repo-wide
concurrencygroup to the E2E workflow. Only one E2E run executes at a time; others queue (cancel-in-progress: false) rather than cancel, to avoid interrupting teardown and leaving dangling cluster resources.Changes
.github/workflows/e2e.yaml: Addconcurrencyblock withgroup: e2e-${{ github.repository }}andcancel-in-progress: falseTest Plan
cc @cpfarhood
Closing as duplicate of #110. Both PRs add the same group to the E2E workflow. One difference worth noting on #110: I've used
cancel-in-progress: falsehere vstruein #110. Recommend changing #110 tofalse— when GitHub cancels an in-progress run, theif: always()teardown step may not execute, leaving dangling Deployment/Service/ConfigMap resources inprivilegedescalation-dev. Queuing (false) is safer for shared cluster environments.Pull request closed