@matheusbsbs / matheus-bagliano / commits / 4c2c38e800
Fork 0

ci: modification of main.yml to use cmake for vs-build job

Teach .github/workflows/main.yml to use CMake for VS builds. Modified the vs-test step to match windows-test step. This speeds up the vs-test. Calling git-cmd from powershell and then calling git-bash to perform the tests slows things down(factor of about 6). So git-bash is directly called from powershell to perform the tests using prove. NOTE: Since GitHub keeps the same directory for each job (with respect to path) absolute paths are used in the bin-wrapper scripts. GitHub has switched to CMake 3.17.1 which changed the behaviour of FindCURL module. An extra definition (-DCURL_NO_CURL_CMAKE=ON) has been added to revert to the old behaviour. In the configuration phase CMake looks for the required libraries for building git (eg zlib,libiconv). So we extract the libraries before we configure. To check for ICONV_OMITS_BOM libiconv.dll needs to be in the working directory of script or path. So we copy the dlls before we configure. Signed-off-by: Sibi Siddharthan <sibisiddharthan.github@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sibi Siddharthan committed Jun 26, 2020 at 16:11 UTC 4c2c38e800f38bceb1039af2c2ac7b1082fd2e0b
1 file changed +24 -15
.github/workflows/main.yml
+24 -15
@@ -145,13 +145,6 @@ jobs:
145 ## Unzip and remove the artifact
146 unzip artifacts.zip
147 rm artifacts.zip
148 - - name: generate Visual Studio solution
149 - shell: powershell
150 - run: |
151 - & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
152 - make NDEBUG=1 DEVELOPER=1 vcxproj
153 - "@
154 - if (!$?) { exit(1) }
148 - name: download vcpkg artifacts
149 shell: powershell
150 run: |
@@ -163,6 +156,17 @@ jobs:
156 Remove-Item compat.zip
157 - name: add msbuild to PATH
158 uses: microsoft/setup-msbuild@v1.0.0
159 + - name: copy dlls to root
160 + shell: powershell
161 + run: |
162 + & compat\vcbuild\vcpkg_copy_dlls.bat release
163 + if (!$?) { exit(1) }
164 + - name: generate Visual Studio solution
165 + shell: bash
166 + run: |
167 + cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
168 + -DIconv_LIBRARY=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/lib/libiconv.lib -DIconv_INCLUDE_DIR=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows/include \
169 + -DMSGFMT_EXE=`pwd`/git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
170 - name: MSBuild
171 run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
172 - name: bundle artifact tar
@@ -171,8 +175,6 @@ jobs:
175 MSVC: 1
176 VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
177 run: |
174 - & compat\vcbuild\vcpkg_copy_dlls.bat release
175 - if (!$?) { exit(1) }
178 & git-sdk-64-minimal\usr\bin\bash.exe -lc @"
179 mkdir -p artifacts &&
180 eval \"`$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)\"
@@ -203,7 +205,7 @@ jobs:
205 - name: extract build artifacts
206 shell: bash
207 run: tar xf artifacts.tar.gz
206 - - name: test (parallel)
208 + - name: test
209 shell: powershell
210 env:
211 MSYSTEM: MINGW64
@@ -214,12 +216,19 @@ jobs:
216 # Let Git ignore the SDK and the test-cache
217 printf '%s\n' /git-sdk-64-minimal/ /test-cache/ >>.git/info/exclude
218
217 - cd t &&
218 - PATH=\"`$PWD/helper:`$PATH\" &&
219 - test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
220 - `$(test-tool.exe path-utils slice-tests \
221 - ${{matrix.nr}} 10 t[0-9]*.sh)
219 + ci/run-test-slice.sh ${{matrix.nr}} 10
220 "@
221 + - name: ci/print-test-failures.sh
222 + if: failure()
223 + shell: powershell
224 + run: |
225 + & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh
226 + - name: Upload failed tests' directories
227 + if: failure() && env.FAILED_TEST_ARTIFACTS != ''
228 + uses: actions/upload-artifact@v1
229 + with:
230 + name: failed-tests-windows
231 + path: ${{env.FAILED_TEST_ARTIFACTS}}
232 regular:
233 needs: ci-config
234 if: needs.ci-config.outputs.enabled == 'yes'