Subject: Re: [PATCH 8/8] ci: modification of main.yml to use cmake for vs-build job

From: Danh Doan <[email-masked]>
Date: Sat, 25 Apr 2020 00:45:44 +0700

On 2020-04-24 04:01:37+0000, Sibi Siddharthan via GitGitGadget <[email-masked]> wrote:
> From: Sibi Siddharthan <[email-masked]>
> 
> This patch modifies .github/workflows/main.yml to use CMake for
> Visual Studio 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.
> 
> Signed-off-by: Sibi Siddharthan <[email-masked]>
> ---
>  .github/workflows/main.yml | 43 ++++++++++++++++++++++----------------
>  1 file changed, 25 insertions(+), 18 deletions(-)
> 
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index fd4df939b50..94f9a385225 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -80,13 +80,6 @@ jobs:
>      - name: download git-sdk-64-minimal
>        shell: bash
>        run: a=git-sdk-64-minimal && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
> -    - name: generate Visual Studio solution
> -      shell: powershell
> -      run: |
> -        & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
> -          make NDEBUG=1 DEVELOPER=1 vcxproj
> -        "@
> -        if (!$?) { exit(1) }
>      - name: download vcpkg artifacts
>        shell: powershell
>        run: |
> @@ -98,6 +91,13 @@ jobs:
>          Remove-Item compat.zip
>      - name: add msbuild to PATH
>        uses: microsoft/[email-masked]
> +    - name: generate Visual Studio solution
> +      shell: powershell
> +      run: |
> +        & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
> +          cmake . -DCMAKE_PREFIX_PATH=./compat/vcbuild/vcpkg/installed/x64-windows -DMSGFMT_EXE=./git-sdk-64-minimal/mingw64/bin/msgfmt.exe -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
> +        "@
> +        if (!$?) { exit(1) }

If you intended to modified some steps to provide a better script for
that step, I believe you should change in that step.

If the order of those steps need to be changed, please clarify your
reasoning!

>      - name: MSBuild
>        run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
>      - name: bundle artifact tar
> @@ -125,9 +125,9 @@ jobs:
>          nr: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>      steps:
>      - uses: actions/checkout@v1
> -    - name: download git-64-portable
> +    - name: download git-sdk-64-minimal
>        shell: bash
> -      run: a=git-64-portable && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
> +      run: a=git-sdk-64-minimal && mkdir -p $a && curl -# https://wingit.blob.core.windows.net/ci-artifacts/$a.tar.xz | tar -C $a -xJf -
>      - name: download build artifacts
>        uses: actions/download-artifact@v1
>        with:
> @@ -136,23 +136,30 @@ jobs:
>      - name: extract build artifacts
>        shell: bash
>        run: tar xf artifacts.tar.gz
> -    - name: test (parallel)
> +    - name: test

So the test couldn't be run in parallel anymore?
It's a regression!
And we don't need the matrix anymore!!!!!

I wonder if Dscho's effort is wasted, he tried very hard to make
those tests run in parallel.
He even tried to re-order the matrix in GfW project to let longest
test run first!

>        shell: powershell
>        env:
>          MSYSTEM: MINGW64
>          NO_SVN_TESTS: 1
>          GIT_TEST_SKIP_REBASE_P: 1
>        run: |
> -        & git-64-portable\git-cmd.exe --command=usr\bin\bash.exe -lc @"
> -          # Let Git ignore the SDK and the test-cache
> -          printf '%s\n' /git-64-portable/ /test-cache/ >>.git/info/exclude
> +        & .\git-sdk-64-minimal\usr\bin\bash.exe -lc @"
> +          # Let Git ignore the SDK
> +          printf '%s\n' /git-sdk-64-minimal/ >>.git/info/exclude
>  
> -          cd t &&
> -          PATH=\"`$PWD/helper:`$PATH\" &&
> -          test-tool.exe run-command testsuite --jobs=10 -V -x --write-junit-xml \
> -                  `$(test-tool.exe path-utils slice-tests \
> -                          ${{matrix.nr}} 10 t[0-9]*.sh)
> +          ci/run-test-slice.sh ${{matrix.nr}} 10
>          "@
> +    - name: ci/print-test-failures.sh
> +      if: failure()
> +      shell: powershell
> +      run: |
> +        & .\git-sdk-64-minimal\usr\bin\bash.exe -lc ci/print-test-failures.sh

What is changed?

-- 
Danh