Subject: ab/ci-setup-simplify + ab/ci-github-workflow-markup (was: What's cooking in git.git (Mar 2022, #07; Wed, 30))

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Thu, 31 Mar 2022 11:57:21 +0200

On Wed, Mar 30 2022, Junio C Hamano wrote:

> * ab/ci-github-workflow-markup (2022-03-27) 7 commits
>  - ci: call `finalize_test_case_output` a little later
>  - ci: use `--github-workflow-markup` in the GitHub workflow
>  - ci: optionally mark up output in the GitHub workflow
>  - test(junit): avoid line feeds in XML attributes
>  - tests: refactor --write-junit-xml code
>  - ci: make it easier to find failed tests' logs in the GitHub workflow
>  - Merge branch 'ab/ci-setup-simplify' into ab/ci-github-workflow-markup
>  (this branch uses ab/ci-setup-simplify.)
>
>  Build a moral equivalent of js/ci-github-workflow-markup on top of
>  ab/ci-setup-simplify.
>
>  Waiting for discussion to settle.
>  source: <[email-masked]>
>
> * ab/ci-setup-simplify (2022-03-27) 25 commits
>  - CI: don't use "set -x" in "ci/lib.sh" output
>  - CI: set PYTHON_PATH setting for osx-{clang,gcc} into "$jobname" case
>  - CI: set CC in MAKEFLAGS directly, don't add it to the environment
>  - CI: add more variables to MAKEFLAGS, except under vs-build
>  - CI: narrow down variable definitions in --build and --test
>  - CI: only invoke ci/lib.sh as "steps" in main.yml
>  - CI: pre-select test slice in Windows & VS tests
>  - ci/run-test-slice.sh: replace shelling out with "echo"
>  - CI: move "env" definitions into ci/lib.sh
>  - CI: combine ci/install{,-docker}-dependencies.sh
>  - CI: split up and reduce "ci/test-documentation.sh"
>  - CI: invoke "make artifacts-tar" directly in windows-build
>  - CI: check ignored unignored build artifacts in "win[+VS] build" too
>  - CI: remove "run-build-and-tests.sh", run "make [test]" directly
>  - CI: export variables via a wrapper
>  - CI: consistently use "export" in ci/lib.sh
>  - CI: move p4 and git-lfs variables to ci/install-dependencies.sh
>  - CI: have "static-analysis" run "check-builtins", not "documentation"
>  - CI: have "static-analysis" run a "make ci-static-analysis" target
>  - CI: don't have "git grep" invoke a pager in tree content check
>  - CI: remove unused Azure ci/* code
>  - CI: remove dead "tree skipping" code
>  - CI: remove more dead Travis CI support
>  - CI: make "$jobname" explicit, remove fallback
>  - CI: run "set -ex" early in ci/lib.sh
>  (this branch is used by ab/ci-github-workflow-markup.)
>
>  Drive more actions done in CI via the Makefile instead of shell
>  commands sprinkled in .github/workflows/main.yml
>
>  Waiting for discussion to settle.
>  source: <[email-masked]>

For these two topics: I think that the discussion to settle was around
the performance/UX of the smaller topic on top.

For my larger "base" cleanup topic I think that RFC re-roll on top
clearly shows that whatever the larger UX changes to CI will look like
that they clearly don't semantically conflict with unrolling the "make"
invocations to the CI "step" level, and actually make things there much
simpler as well.

And, on top of master the diffstat looks really good in itself (and
e.g. ci/lib.sh is *much* smaller & more easily understood):

    21 files changed, 346 insertions(+), 577 deletions(-)

So I was hoping that the "base" topic could be merged down sooner than
later, particularly as aside from two lines of changes to Makefile &
shared.mak the changes are all in ci/* and .github/*, or in the case of
~30 lines of top-level Makefile changes to two new targets that are
exclusively called by the CI:

    git diff --stat -p origin/master...gitster/ab/ci-setup-simplify -- ':!ci/' ':!.github/'

And unlike changing code that will run on various computers we don't
have access to, the only target for these (the GitHub CI) is already
running the changes, and because the nature of these changes is that
they're going to badly textually conflict with pretty much anything else
done in the ci/ directory (e.g. addition of new targets, changes to
flags etc.).

Thanks!