Skip to content

Split Cygwin CI into non-performance and performance test jobs #2042

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 7, 2025

Conversation

EliahKagan
Copy link
Member

@EliahKagan EliahKagan commented Jun 7, 2025

One job is for all tests except the performance tests, while the other job is for only the performance tests.

The idea is to decrease the total time it takes for all CI jobs to complete in most cases, by splitting the long-running (currently usually about 13 minute) Cygwin job into two less-long jobs.

This seems to work well. The performance tests take longer than all the other tests combined. Even with the other steps--mainly setting up Cygwin--taking about 2.5 minutes, this still completes significantly faster than before by allowing the jobs to run in parallel.

A secondary advantage is that incomplete results of tests that are more often of interest can be seen sooner. (I say that's secondary because it could alternatively have been achieved by using a plugin that allow the order of the tests to be specified, and running the performance tests last.)

I'll wait for them to complete here in this PR, and I'll look at the timings, to make sure that wasn't a fluke (also because I would not want to merge a PR whose CI isn't passing, without good reason).


Edit: Yes, the longer of the jobs still completes 4 minutes sooner than the combined test would have completed. (Extrapolating this to future runs presumes that there will not usually be a huge queue of jobs for a Windows runner, or that there will not be a huge queue in the situations where one most wants jobs to complete faster. I think this is a reasonable assumption, but definitely one that should be open to challenge or revision.) All non-xfail tests continue to pass and the output remains readable.

However, before merging this, I'm going to experiment with showing the arguments in the step name, which I suspect may make the jobs easier to distinguish from each other when glancing at their steps.

One job is for all tests except the `performance` tests, while the
other job is for only the `performance` tests.

The idea is to decrease the total time it takes for all CI jobs to
complete in most cases, by splitting the long-running (currently
usually about 13 minute) Cygwin job into two less-long jobs.
In the "Test with pytest" step of the Cygwin test jobs.

This is to distinguish the newly split jobs from each other more
clearly when glancing at their steps for a run.
This removes an unnecessary trailing slash that I had not used
consistently anyway.
@EliahKagan EliahKagan marked this pull request as ready for review June 7, 2025 18:31
@EliahKagan EliahKagan merged commit e337e99 into gitpython-developers:main Jun 7, 2025
27 checks passed
@EliahKagan EliahKagan deleted the cygwin-ci-split branch June 7, 2025 18:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant