Skip to content

Merge pull request #84 from dscho/git-sdk-64-github-workflows #1065

Merge pull request #84 from dscho/git-sdk-64-github-workflows

Merge pull request #84 from dscho/git-sdk-64-github-workflows #1065

Workflow file for this run

name: ci-artifacts
on:
push:
branches:
- main
pull_request:
env:
LC_CTYPE: C.UTF-8
jobs:
minimal-sdk-artifact:
if: github.event.repository.fork == false
runs-on: windows-latest
steps:
- name: clone git-sdk-64
run: |
git init --bare git-sdk-64.git &&
git --git-dir=git-sdk-64.git remote add origin https://github.com/${{github.repository}} &&
git --git-dir=git-sdk-64.git config remote.origin.promisor true &&
git --git-dir=git-sdk-64.git config remote.origin.partialCloneFilter blob:none &&
git --git-dir=git-sdk-64.git fetch --depth=1 origin ${{github.sha}} &&
git --git-dir=git-sdk-64.git update-ref --no-deref HEAD ${{github.sha}}
- name: clone build-extra
run: git clone --depth=1 --single-branch -b main https://github.com/git-for-windows/build-extra
- name: build git-sdk-64-minimal-sdk
shell: bash
run: |
sh -x ./build-extra/please.sh create-sdk-artifact --sdk=git-sdk-64.git minimal-sdk &&
cat <<-\EOF >minimal-sdk/init.sh &&
echo MSYSTEM=MINGW64 >>$GITHUB_ENV &&
cd "$(dirname "$0")" &&
cygpath -aw usr/bin/core_perl >>$GITHUB_PATH &&
cygpath -aw usr/bin >>$GITHUB_PATH &&
cygpath -aw mingw64/bin >>$GITHUB_PATH ||
exit 1
EOF
minimal-sdk/init.sh
- name: compress artifact
shell: bash
run: (cd minimal-sdk && tar cvf - * .[0-9A-Za-z]*) | gzip -1 >git-sdk-64-minimal.tar.gz
- name: upload minimal-sdk artifact
uses: actions/upload-artifact@v4
with:
name: minimal-sdk
path: git-sdk-64-minimal.tar.gz
- name: clone git.git's `master`
run: git clone --depth=1 --branch master https://github.com/git/git ..\git
- name: build current `master` of git.git
shell: bash
env:
PATH: ${{github.workspace}}\minimal-sdk\mingw64\bin;${{github.workspace}}\minimal-sdk\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem
run: |
set -x
test "$(cygpath -aw /)" = "${{github.workspace}}\minimal-sdk" || exit 1
test "$(type -p gcc)" = "/mingw64/bin/gcc" || exit 1
make -C ../git DEVELOPER=1 NO_PERL=1 SKIP_DASHED_BUILT_INS=YesPlease -j8 all strip
- name: compress git artifacts
shell: bash
run: tar -C .. -czf git-artifacts.tar.gz --exclude '*.a' --exclude '*.o' --exclude .git --exclude .depend git
- name: upload git artifacts for testing
uses: actions/upload-artifact@v4
with:
name: git-artifacts
path: git-artifacts.tar.gz
test-minimal-sdk:
runs-on: windows-latest
needs: [minimal-sdk-artifact]
strategy:
matrix:
# 0..16 permuted according to the matrix builds' timings as of git/git@9fadedd63
nr: [9, 6, 13, 0, 8, 5, 2, 16, 15, 11, 10, 1, 7, 3, 14, 12, 4]
steps:
- name: download minimal-sdk artifact
uses: actions/download-artifact@v4
with:
name: minimal-sdk
path: ${{github.workspace}}
- name: uncompress minimal-sdk
shell: bash
run: |
mkdir -p minimal-sdk &&
tar -C minimal-sdk -xzf git-sdk-64-minimal.tar.gz &&
minimal-sdk/init.sh
- name: download git artifacts
uses: actions/download-artifact@v4
with:
name: git-artifacts
path: ${{github.workspace}}
- name: uncompress git-artifacts
shell: bash
run: tar -C .. -xzf git-artifacts.tar.gz
- name: test
shell: bash
run: |
set -x
test "$(cygpath -aw /)" = "${{github.workspace}}\minimal-sdk" || exit 1
cd ../git/t &&
make T="$(ls -S t[0-9]*.sh | awk '!((NR+${{matrix.nr}})%17)' | tr '\n' \ )" prove || {
for d in trash*
do
t=${d#trash directory.}
echo ===========================
echo Failed: $t.sh
cat test-results/$t.out
done
exit 1
}
env:
PATH: ${{github.workspace}}\minimal-sdk\mingw64\bin;${{github.workspace}}\minimal-sdk\usr\bin;${{github.workspace}}\minimal-sdk\usr\bin\core_perl;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem
GIT_TEST_OPTS: --verbose-log -x --no-chain-lint
GIT_PROVE_OPTS: --timer --jobs 8
NO_SVN_TESTS: 1
assorted-validations:
runs-on: windows-latest
needs: [minimal-sdk-artifact]
steps:
- name: download minimal-sdk artifact
uses: actions/download-artifact@v4
with:
name: minimal-sdk
path: ${{github.workspace}}
- name: uncompress minimal-sdk
shell: bash
run: |
mkdir -p minimal-sdk &&
tar -C minimal-sdk -xzf git-sdk-64-minimal.tar.gz &&
minimal-sdk/init.sh
- name: run some tests
shell: bash
env:
PATH: ${{github.workspace}}\minimal-sdk\mingw64\bin;${{github.workspace}}\minimal-sdk\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem
run: |
set -x
# cygpath works
test "$(cygpath -aw /)" = "${{github.workspace}}\minimal-sdk" || exit 1
# comes with GCC and can compile a DLL
test "$(type -p gcc)" = "/mingw64/bin/gcc" || exit 1
cat >dll.c <<-\EOF &&
__attribute__((dllexport)) int increment(int i)
{
return i + 1;
}
EOF
gcc -Wall -g -O2 -shared -o sample.dll dll.c || exit 1
ls -la
# stat works
test "stat is /usr/bin/stat" = "$(type stat)" || exit 1
stat /usr/bin/stat.exe || exit 1
# unzip works
test "unzip is /usr/bin/unzip" = "$(type unzip)" || exit 1
git init unzip-test &&
echo TEST >unzip-test/README &&
git -C unzip-test add -A &&
git -C unzip-test -c user.name=A -c [email protected] commit -m 'Testing, testing...' &&
git --git-dir=unzip-test/.git archive -o test.zip HEAD &&
unzip -v test.zip >unzip-test.out &&
cat unzip-test.out &&
test "grep is /usr/bin/grep" = "$(type grep)" || exit 1
grep README unzip-test.out