Skip to content

CI perf: Gradle compatibility — 4 Windows hosted cells (36–42 min each) on every matching PR are 70% of the run (~5,000 Windows job-min/day) #1300

Description

Measurement

Window: 2026-10-09 01:23 → 16:16 UTC. Runs are from workflows/gradle-compatibility.yml/runs?event=pull_request, first page of 100 (177 in 24h).

Where the time goes

  • All the time is in the e2e_redirect_gradle_build --ignored gradle_hosted_ step. Each of the 43 tests drives a real Gradle build on Windows, in groovy and kotlin DSL. In the log (job 113883777777), the tests take 60–180 s each.
  • Setup, JDK selection, Gradle install and artifact download together take under 0.5 min per cell. There is nothing to trim outside the test step.

Root cause

Proposed fix

In .github/workflows/gradle-compatibility.yml, cells, on pull_request only:

  • Keep all 4 agent and all 4 vendor Windows cells. They are cheap: 59 job-min.
  • Keep two hosted Windows cells: the oldest line, 6.9.4 / jdk 11, and the newest, 9.8.0 / jdk 21.
  • Move 7.6.6 / jdk 17 / hosted and 8.14.3 / jdk 21 / hosted on windows to the nightly (17 4 * * *) and workflow_dispatch. One way is two exclude entries keyed on the event, like the existing macOS and ubuntu ones:
    - {os: "${{ github.event_name == 'pull_request' && 'windows-latest' || '' }}", gradle: '7.6.6', mode: hosted}
    - {os: "${{ github.event_name == 'pull_request' && 'windows-latest' || '' }}", gradle: '8.14.3', mode: hosted}
    Check that an exclude entry with an empty os value matches nothing on other events, as the existing entries do.
  • Update the header comment ("Windows cells run on every PR that matches paths:").

Expected saving

  • Per full PR run: 41.1 + 42.2 = ~83 Windows job-min (40%).
  • At 60–100 full PR runs per day, that is ~5,000–8,300 Windows job-min/day. I use 5k (60/day) for ROI, in case PR volume falls after Run compatibility matrices on PRs only for their own files #1206.
  • PR wall clock for this non-required workflow drops from ~45 to ~37 min, now bound by the 6.9.4 hosted cell.
  • No change to ci-ok, clippy or the merge-queue critical path: this workflow is not required and does not run in merge_group.
  • Linux and macOS: 0.

Coverage and risk

Effort

S. Two exclude lines plus a comment, in one file.

ROI

Saving: ~5k Windows job-min/day × 2 (Windows weight) = 10. Confidence: 0.6, since the run rate after #1206 is uncertain. Effort: S = 1. ROI = 10 × 0.6 / 1 = 6.0


Generated by Claude Code

Activity

  1. mikolalysenko commented on Oct 9, 2026

    @mikolalysenko
    CollaboratorAuthor

    Working on this in the CI perf implementer.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions