Problem
PRs that don't touch e2e-relevant paths (e.g. workflow-only changes) get permanently blocked by branch protection.
The e2e.yaml workflow uses dorny/paths-filter to skip builds when only unrelated files change. But the e2e-tests job depends on the build jobs (needs: [build-controller-image, build-operator-image, build-python-wheels]), so when those are skipped, e2e-tests is also skipped by GitHub Actions. A skipped job never reports a status check. Since branch protection requires e2e-tests (ubuntu-24.04, amd64) and e2e-tests (ubuntu-24.04-arm, arm64), the PR sits in "Waiting for status to be reported" forever.
Currently affected:
Any future PR that only modifies files outside the paths filter (controller/**, e2e/**, python/**, .github/workflows/e2e.yaml, Makefile) will hit the same issue.
Proposed solution
Add a gate job at the end of e2e.yaml that always runs, regardless of whether the actual test jobs were skipped:
e2e-result:
if: always()
needs: [e2e-tests, e2e-compat-old-controller, e2e-compat-old-client]
runs-on: ubuntu-latest
steps:
- run: |
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then
echo "E2E tests failed"
exit 1
fi
echo "E2E tests passed or were skipped"
Then update branch protection rules to require e2e-result instead of the individual matrix job names (e2e-tests (ubuntu-24.04, amd64), e2e-tests (ubuntu-24.04-arm, arm64)).
This way:
- Paths match: build jobs run, e2e-tests run, gate reports their result
- Paths don't match: build jobs skip, e2e-tests skip, gate still runs and reports success
The same pattern should be evaluated for other conditional workflows (controller-tests, python-tests) if they have similar required checks.
Problem
PRs that don't touch e2e-relevant paths (e.g. workflow-only changes) get permanently blocked by branch protection.
The
e2e.yamlworkflow usesdorny/paths-filterto skip builds when only unrelated files change. But thee2e-testsjob depends on the build jobs (needs: [build-controller-image, build-operator-image, build-python-wheels]), so when those are skipped,e2e-testsis also skipped by GitHub Actions. A skipped job never reports a status check. Since branch protection requirese2e-tests (ubuntu-24.04, amd64)ande2e-tests (ubuntu-24.04-arm, arm64), the PR sits in "Waiting for status to be reported" forever.Currently affected:
.github/workflows/lint.yaml).github/workflows/backport.yamland.github/workflows/trigger-packages.yaml)Any future PR that only modifies files outside the paths filter (
controller/**,e2e/**,python/**,.github/workflows/e2e.yaml,Makefile) will hit the same issue.Proposed solution
Add a gate job at the end of
e2e.yamlthat always runs, regardless of whether the actual test jobs were skipped:Then update branch protection rules to require
e2e-resultinstead of the individual matrix job names (e2e-tests (ubuntu-24.04, amd64),e2e-tests (ubuntu-24.04-arm, arm64)).This way:
The same pattern should be evaluated for other conditional workflows (controller-tests, python-tests) if they have similar required checks.