forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a GitHub workflow to verify that Git/Scalar work in Nano Server
In Git for Windows v2.39.0, we fixed a regression where `git.exe` would no longer work in Windows Nano Server (frequently used in Docker containers). This GitHub workflow can be used to verify manually that the Git/Scalar executables work in Nano Server. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
- Loading branch information
Showing
1 changed file
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
name: Windows Nano Server tests | ||
|
||
on: | ||
workflow_dispatch: | ||
|
||
env: | ||
DEVELOPER: 1 | ||
|
||
jobs: | ||
test-nano-server: | ||
runs-on: windows-2022 | ||
env: | ||
WINDBG_DIR: "C:/Program Files (x86)/Windows Kits/10/Debuggers/x64" | ||
IMAGE: mcr.microsoft.com/powershell:nanoserver-ltsc2022 | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: git-for-windows/setup-git-for-windows-sdk@v1 | ||
- name: build Git | ||
shell: bash | ||
run: make -j15 | ||
- name: pull nanoserver image | ||
shell: bash | ||
run: docker pull $IMAGE | ||
- name: run nano-server test | ||
shell: bash | ||
run: | | ||
docker run \ | ||
--user "ContainerAdministrator" \ | ||
-v "$WINDBG_DIR:C:/dbg" \ | ||
-v "$(cygpath -aw /mingw64/bin):C:/mingw64-bin" \ | ||
-v "$(cygpath -aw .):C:/test" \ | ||
$IMAGE pwsh.exe -Command ' | ||
# Extend the PATH to include the `.dll` files in /mingw64/bin/ | ||
$env:PATH += ";C:\mingw64-bin" | ||
# For each executable to test pick some no-operation set of | ||
# flags/subcommands or something that should quickly result in an | ||
# error with known exit code that is not a negative 32-bit | ||
# number, and set the expected return code appropriately. | ||
# | ||
# Only test executables that could be expected to run in a UI | ||
# less environment. | ||
# | ||
# ( Executable path, arguments, expected return code ) | ||
# also note space is required before close parenthesis (a | ||
# powershell quirk when defining nested arrays like this) | ||
$executables_to_test = @( | ||
("C:\test\git.exe", "", 1 ), | ||
("C:\test\scalar.exe", "version", 0 ) | ||
) | ||
foreach ($executable in $executables_to_test) | ||
{ | ||
Write-Output "Now testing $($executable[0])" | ||
&$executable[0] $executable[1] | ||
if ($LASTEXITCODE -ne $executable[2]) { | ||
# if we failed, run the debugger to find out what function | ||
# or DLL could not be found and then exit the script with | ||
# failure The missing DLL or EXE will be referenced near | ||
# the end of the output | ||
# Set a flag to have the debugger show loader stub | ||
# diagnostics. This requires running as administrator, | ||
# otherwise the flag will be ignored. | ||
C:\dbg\gflags -i $executable[0] +SLS | ||
C:\dbg\cdb.exe -c "g" -c "q" $executable[0] $executable[1] | ||
exit 1 | ||
} | ||
} | ||
exit 0 | ||
' |