git/ci
Jeff King 21c82dcd62 ci: allow branch selection through "vars"
When we added config to skip CI for certain branches in e76eec3554 (ci:
allow per-branch config for GitHub Actions, 2020-05-07), there wasn't
any way to avoid spinning up a VM just to check the config. From the
developer's perspective this isn't too bad, as the "skipped" branches
complete successfully after running the config job (the workflow result
is "success" instead of "skipped", but that is a minor lie).

But we are still wasting time and GitHub's CPU to spin up a VM just to
check the result of a short shell script. At the time there wasn't any
way to avoid this. But they've since introduced repo-level variables
that should let us do the same thing:

  https://github.blog/2023-01-10-introducing-required-workflows-and-configuration-variables-to-github-actions/#configuration-variables

This is more efficient, and as a bonus is probably less confusing to
configure (the existing system requires sticking your config on a magic
ref).

See the included docs for how to configure it.

The code itself is pretty simple: it checks the variable and skips the
config job if appropriate (and everything else depends on the config job
already). There are two slight inaccuracies here:

  - we don't insist on branches, so this likewise applies to tag names
    or other refs. I think in practice this is OK, and keeping the code
    (and docs) short is more important than trying to be more exact. We
    are targeting developers of git.git and their limited workflows.

  - the match is done as a substring (so if you want to run CI for
    "foobar", then branch "foo" will accidentally match). Again, this
    should be OK in practice, as anybody who uses this is likely to only
    specify a handful of well-known names. If we want to be more exact,
    we can have the code check for adjoining spaces. Or even move to a
    more general CI_CONFIG variable formatted as JSON. I went with this
    scheme for the sake of simplicity.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2023-08-30 15:56:09 -07:00
..
config ci: allow branch selection through "vars" 2023-08-30 15:56:09 -07:00
util travis-ci: include the trash directories of failed tests in the trace log 2018-08-01 09:59:36 -07:00
check-directional-formatting.bash ci: disallow directional formatting 2021-11-04 10:13:10 -07:00
install-dependencies.sh Merge branch 'ab/ci-use-macos-12' 2022-12-10 14:01:06 +09:00
install-docker-dependencies.sh CI: rename the "Linux32" job to lower-case "linux32" 2021-11-23 16:51:53 -08:00
lib.sh Makefile: use sha1collisiondetection by default on OSX and Darwin 2022-12-16 06:06:56 +09:00
make-test-artifacts.sh ci(github): use grouping also in the `win-build` job 2022-06-13 09:58:41 -07:00
mount-fileshare.sh Add a build definition for Azure DevOps 2019-01-29 09:26:46 -08:00
print-test-failures.sh CI: remove Travis CI support 2021-11-23 16:51:53 -08:00
run-build-and-tests.sh add: remove "add.interactive.useBuiltin" & Perl "git add--interactive" 2023-02-06 15:03:34 -08:00
run-docker-build.sh CI: rename the "Linux32" job to lower-case "linux32" 2021-11-23 16:51:53 -08:00
run-docker.sh CI: rename the "Linux32" job to lower-case "linux32" 2021-11-23 16:51:53 -08:00
run-static-analysis.sh i18n CI: stop allowing non-ASCII source messages in po/git.pot 2022-05-26 10:30:28 -07:00
run-test-slice.sh ci/run-build-and-tests: add some structure to the GitHub workflow output 2022-05-21 16:25:56 -07:00
test-documentation.sh ci: ignore rubygems warning in the "Documentation" job 2020-02-10 09:52:27 -08:00