@@ -446,6 +446,9 @@ jobs:
446446
447447 make -C git -j$(sysctl -n hw.physicalcpu) GIT-VERSION-FILE dist dist-doc
448448
449+ export GIT_BUILT_FROM_COMMIT=$(gunzip -c git/git-$VERSION.tar.gz | git get-tar-commit-id) ||
450+ die "Could not determine commit for build"
451+
449452 # Extract tarballs
450453 mkdir payload manpages
451454 tar -xvf git/git-$VERSION.tar.gz -C payload
@@ -640,12 +643,83 @@ jobs:
640643 *.deb
641644 # End build and sign Debian package
642645
646+ # Validate installers
647+ validate-installers :
648+ name : Validate installers
649+ strategy :
650+ matrix :
651+ component :
652+ - os : ubuntu-latest
653+ artifact : linux-artifacts
654+ command : git
655+ - os : macos-latest-xl-arm64
656+ artifact : macos-artifacts
657+ command : git
658+ - os : macos-latest
659+ artifact : macos-artifacts
660+ command : git
661+ - os : windows-latest
662+ artifact : win-installer-x86_64
663+ command : $PROGRAMFILES\Git\cmd\git.exe
664+ - os : ['self-hosted', '1ES.Pool=github-arm64-pool']
665+ artifact : win-installer-aarch64
666+ command : $PROGRAMFILES\Git\cmd\git.exe
667+ runs-on : ${{ matrix.component.os }}
668+ needs : [prereqs, windows_artifacts, create-macos-artifacts, create-linux-artifacts]
669+ steps :
670+ - name : Download artifacts
671+ uses : actions/download-artifact@v4
672+ with :
673+ name : ${{ matrix.component.artifact }}
674+
675+ - name : Install Windows
676+ if : contains(matrix.component.artifact, 'win-installer')
677+ shell : pwsh
678+ run : |
679+ $exePath = Get-ChildItem -Path ./*.exe | %{$_.FullName}
680+ Start-Process -Wait -FilePath "$exePath" -ArgumentList "/SILENT /VERYSILENT /NORESTART /SUPPRESSMSGBOXES /ALLOWDOWNGRADE=1"
681+
682+ - name : Install Linux
683+ if : contains(matrix.component.artifact, 'linux')
684+ run : |
685+ debpath=$(find ./*.deb)
686+ sudo apt install $debpath
687+
688+ - name : Install macOS
689+ if : contains(matrix.component.artifact, 'macos')
690+ run : |
691+ # avoid letting Homebrew's `git` in `/opt/homebrew/bin` override `/usr/local/bin/git`
692+ arch="$(uname -m)"
693+ test arm64 != "$arch" ||
694+ brew uninstall git
695+
696+ pkgpath=$(find ./*universal*.pkg)
697+ sudo installer -pkg $pkgpath -target /
698+
699+ - name : Validate
700+ shell : bash
701+ run : |
702+ "${{ matrix.component.command }}" --version | sed 's/git version //' >actual
703+ echo ${{ needs.prereqs.outputs.tag_version }} >expect
704+ cmp expect actual || exit 1
705+
706+ - name : Validate universal binary CPU architecture
707+ if : contains(matrix.component.os, 'macos')
708+ shell : bash
709+ run : |
710+ set -ex
711+ git version --build-options >actual
712+ cat actual
713+ grep "cpu: $(uname -m)" actual
714+ # End validate installers
715+
643716 create-github-release :
644717 runs-on : ubuntu-latest
645718 permissions :
646719 contents : write
647720 id-token : write # required for Azure login via OIDC
648721 needs :
722+ - validate-installers
649723 - create-linux-artifacts
650724 - create-macos-artifacts
651725 - windows_artifacts
0 commit comments