Subject: [PATCH v3 0/7] ci: speed-up the Windows parts of our GitHub workflow

From: "Johannes Schindelin via GitGitGadget" <[email-masked]>
Date: Sun, 04 Jul 2021 22:55:07 +0000

This patch series upgrades to newer versions of a couple GitHub Actions we
use, and also streamlines the Windows jobs using the relatively new
setup-git-for-windows-sdk Action
[https://github.com/marketplace/actions/setup-git-for-windows-sdk] (Git for
Windows is running with this Action for a while now, getting all the kinks
out).

This patch series should also address the problem where seen was pushed so
rapidly that the windows-test jobs failed because they no longer checked out
the identical revision as the windows-build job.

Changes since v2:

 * Made the handwaving make [...] NO_GETTEXT comment in the commit message
   of the patch "artifacts-tar: respect NO_GETTEXT" more explicit, by
   setting NO_GETTEXT to a bogus value as required by make.
 * Added an explicit NO_GETTEXT=YesPlease to the make artifacts-tar
   invocation in the vs-build job, as well as an explanation in the
   corresponding commit message why this explicit mention is technically not
   required.

Changes since v1:

 * Added a patch to fix make NO_GETTEXT=Yep artifacts-tar (not to include
   .mo files), as suggested by Matthias Aßauer in the GitGitGadget PR, which
   should fix the CI failure in seen that Junio pointed out. The bug was
   unhidden by mr/cmake fixing the CMake build (which ignored NO_GETTEXT
   before).

Dennis Ameling (1):
  ci(vs-build): build with NO_GETTEXT

Johannes Schindelin (6):
  ci: use the new GitHub Action to download git-sdk-64-minimal
  ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
  ci: upgrade to using actions/{up,down}load-artifacts v2
  ci(windows): transfer also the Git-tracked files to the test jobs
  artifacts-tar: respect NO_GETTEXT
  ci: accelerate the checkout

 .github/workflows/main.yml | 157 +++++++++++--------------------------
 Makefile                   |   5 +-
 2 files changed, 50 insertions(+), 112 deletions(-)

base-commit: ebf3c04b262aa27fbb97f8a0156c2347fecafafb
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-878%2Fdscho%2Fuse-setup-git-for-windows-sdk-action-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-878/dscho/use-setup-git-for-windows-sdk-action-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/878

Range-diff vs v2:

 1:  2e4db688deb = 1:  2e4db688deb ci: use the new GitHub Action to download git-sdk-64-minimal
 2:  6b12fe2284c = 2:  6b12fe2284c ci (vs-build): use `cmd` to copy the DLLs, not `powershell`
 3:  c256bbf4b1c = 3:  c256bbf4b1c ci: upgrade to using actions/{up,down}load-artifacts v2
 4:  59dc44428fb = 4:  59dc44428fb ci(windows): transfer also the Git-tracked files to the test jobs
 5:  c31d2e7f44a ! 5:  64f7b1f4e23 artifacts-tar: respect NO_GETTEXT
     @@ Commit message
          artifacts-tar: respect NO_GETTEXT
      
          We obviously do not want to bundle `.mo` files during `make
     -    artifacts-tar NO_GETTEXT`, but that was the case.
     +    artifacts-tar NO_GETTEXT=Yep`, but that was the case.
      
          To fix that, go a step beyond just fixing the symptom, and simply
          define the lists of `.po` and `.mo` files as empty if `NO_GETTEXT` is
 6:  8bab4c17b8a ! 6:  2c4cd9dd1c8 ci(vs-build): build with NO_GETTEXT
     @@ Commit message
          We already build Git for Windows with `NO_GETTEXT` when compiling with
          GCC. Let's do the same with Visual C, too.
      
     +    Note that we do not technically _need_ to pass `NO_GETTEXT` explicitly
     +    in that `make artifacts-tar` invocation because we do this while `MSVC`
     +    is set (which will set `uname_S := Windows`, which in turn will set
     +    `NO_GETTEXT = YesPlease`). But it is definitely nicer to be explicit
     +    here.
     +
          Signed-off-by: Dennis Ameling <[email-masked]>
     +    Helped-by: Matthias Aßhauer <[email-masked]>
          Signed-off-by: Johannes Schindelin <[email-masked]>
      
       ## .github/workflows/main.yml ##
     @@ .github/workflows/main.yml: jobs:
           - name: MSBuild
             run: msbuild git.sln -property:Configuration=Release -property:Platform=x64 -maxCpuCount:4 -property:PlatformToolset=v142
           - name: bundle artifact tar
     +@@ .github/workflows/main.yml: jobs:
     +         VCPKG_ROOT: ${{github.workspace}}\compat\vcbuild\vcpkg
     +       run: |
     +         mkdir -p artifacts &&
     +-        eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts 2>&1 | grep ^tar)"
     ++        eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
     +     - name: zip up tracked files
     +       run: git archive -o artifacts/tracked.tar.gz HEAD
     +     - name: upload tracked files and build artifacts
 7:  88a44863cd0 = 7:  db54bf9a779 ci: accelerate the checkout

-- 
gitgitgadget