Skip to content

Conversation

@dscho
Copy link
Member

@dscho dscho commented Jan 24, 2025

One particularly important part of Git for Windows' MSYS2 runtime is that it is used to run Git's tests, and regressions happened there: For example, the first iteration of MSYS2 runtime v3.5.5 caused plenty of hangs. This was realized unfortunately only after deploying the msys2-runtime Pacman package, and some painful vacation-time scrambling was required to revert to v3.5.4.

To verify that this does not happen anymore, let's reuse what setup-git-for-windows-sdk uses in Git's very own CI:

  • determine the latest successful ci-artifacts workflow run in git-for-windows/git-sdk-64
  • download its Git files and build artifacts
  • download its minimal-sdk
  • overwrite the MSYS2 runtime in the minimal-sdk
  • run the test suite and the assorted validations just like the ci-artifacts workflow (from which these jobs are copied)

This obviously adds a hefty time penalty to every MSYS2 runtime PR in the git-for-windows org. Happily, these days we don't need many of those, and the balance between things like the v3.5.5 scramble and waiting a little longer for the CI to finish is clearly in favor of the latter.

@dscho dscho self-assigned this Jan 24, 2025
@dscho dscho force-pushed the run-gits-test-suite branch 2 times, most recently from ad01166 to 725b84b Compare January 24, 2025 11:29
One particularly important part of Git for Windows' MSYS2 runtime is
that it is used to run Git's tests, and regressions happened there: For
example, the first iteration of MSYS2 runtime v3.5.5 caused plenty of
hangs. This was realized unfortunately only after deploying the
msys2-runtime Pacman package, and some painful vacation-time scrambling
was required to revert to v3.5.4.This was realized unfortunately only
after deploying the msys2-runtime Pacman package, and some painful
vacation-time scrambling was required to revert to v3.5.4.

To verify that this does not happen anymore, let's reuse what
`setup-git-for-windows-sdk` uses in Git's very own CI:

- determine the latest successful `ci-artifacts` workflow run in
  git-for-windows/git-sdk-64

- download its Git files and build artifacts

- download its minimal-sdk

- overwrite the MSYS2 runtime in the minimal-sdk

- run the test suite and the assorted validations just like the
  `ci-artifacts` workflow (from which these jobs are copied)

This obviously adds a hefty time penalty (around 7 minutes!) to every
MSYS2 runtime PR in the git-for-windows org. Happily, these days we
don't need many of those, and the balance between things like the v3.5.5
scramble and waiting a little longer for the CI to finish is clearly in
favor of the latter.

Signed-off-by: Johannes Schindelin <[email protected]>
@dscho dscho force-pushed the run-gits-test-suite branch from 3d65449 to 929a93e Compare January 24, 2025 12:41
@dscho dscho marked this pull request as ready for review January 24, 2025 12:59
@dscho dscho merged commit 25b818f into git-for-windows:main Jan 24, 2025
21 checks passed
@dscho dscho deleted the run-gits-test-suite branch January 24, 2025 13:07
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 26, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 26, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 26, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 27, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 28, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jan 30, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Mar 21, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Mar 21, 2025
@jeremyd2019
Copy link
Contributor

The 'upstream' of these tests is git-for-windows/git? I ask because I think this could be a candidate for a callable/reusable workflow to avoid duplicating these jobs. I want to try that and possibly open some PRs to make it so if it works out.

@dscho
Copy link
Member Author

dscho commented Mar 21, 2025

The 'upstream' of these tests is git-for-windows/git?

Define "upstream" ;-)

river delta

This workflow downloads artifacts that are built by git-sdk-64's ci-artifacts workflow, which build's and tests git/git's master branch of the day.

I ask because I think this could be a candidate for a callable/reusable workflow to avoid duplicating these jobs.

I did try with Git for Windows' GitHub workflows to put logic into reusable workflows (or more like, composite Actions, because I find them easier to use and maintain), but I gave up. GitHub Actions' design is kind of recapitulating parts of the history of programming, where e.g. the value of inheritance and sub-classing was discovered and re-discovered, but since investment in GitHub Actions has all but stopped, it never got quite where I need it to be. Sure, I can emulate some reusable component design by moving logic into composite Actions with a gazillion inputs and then use if: conditions quite liberally, but it gets unreadable really quickly.

I want to try that and possibly open some PRs to make it so if it works out.

Sure, I won't stop you, and I will be delighted to see your beautiful solution!

dscho added a commit to dscho/msys2-runtime that referenced this pull request Apr 9, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Apr 9, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request May 26, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jun 5, 2025
dscho added a commit to dscho/msys2-runtime that referenced this pull request Jul 15, 2025
dscho added a commit that referenced this pull request Oct 10, 2025
ci: run Git's entire test suite
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants