Skip to content

Branch protection blocks PRs that don't trigger e2e-tests workflow #559

@raballew

Description

@raballew

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions