Whenever a GitGitGadget Pull Request is sent to the Git mailing list, a tag is pushed to gitgitgadget/git to commemorate that iteration. The push event caused for that triggers the CI/PR workflow, and reveals a pretty old bug where the windows-build steps are skipped for tagged revisions, but the windows-test steps are not (and will therefore fail). That means, of course, that every GitGitGadget PR is marked with a failed test once it is submitted. This patch series is designed to address this issue, and is based on am/ci-wsfix (the initial round was based on dd/ci-swap-azure-pipelines-with-github-actions but would now cause merge conflicts). Changes since v1: * Rather than returning early from skip_branch_tip_with_tag(), we now skip the function call altogether when run in a GitHub workflow. * The intention of the tag skipping was replicated by introducing another check in ci-config: is there a successful workflow run for the same commit (or at least for the same tree)? If yes, skip, referring to that successful run. Johannes Schindelin (2): ci: skip GitHub workflow runs for already-tested commits/trees ci: do not skip tagged revisions in GitHub workflows .github/workflows/main.yml | 39 +++++++++++++++++++++++++++++++++++++- ci/lib.sh | 2 ++ 2 files changed, 40 insertions(+), 1 deletion(-) base-commit: 055747cd75c0904cc8122e5c12bd45e9f4743c30 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-619%2Fdscho%2Fgithub-workflows-and-tags-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-619/dscho/github-workflows-and-tags-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/619 Range-diff vs v1: -: ---------- > 1: 914868d558 ci: skip GitHub workflow runs for already-tested commits/trees 1: d9823f82ee ! 2: 931a2b8482 ci: fix GitHub workflow when on a tagged revision @@ Metadata Author: Johannes Schindelin <Johannes.Schindelin@xxxxxx> ## Commit message ## - ci: fix GitHub workflow when on a tagged revision + ci: do not skip tagged revisions in GitHub workflows When `master` is tagged, and then both `master` and the tag are pushed, Travis CI will happily build both. That is a waste of energy, which is why we skip the build for `master` in that case. - However, our GitHub workflow does not trigger on tags, therefore, this - logic results in a missing build for that revision. + Our GitHub workflow is also triggered by tags. However, the run would + fail because the `windows-test` jobs are _not_ skipped on tags, but the + `windows-build` job _is skipped (and therefore fails to upload the + build artifacts needed by the test jobs). - Even worse: the run would _fail_ because we would skip the Windows - build, there are no artifacts to publish, and therefore no artifacts to - download in the Windows test jobs. + In addition, we just added logic to our GitHub workflow that will skip + runs altogether if there is already a successful run for the same commit + or at least for the same tree. - Let's just change the GitHub workflow to skip the logic to skip - revisions that are tagged. + Let's just change the GitHub workflow to no longer specifically skip + tagged revisions. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> ## ci/lib.sh ## -@@ - # Library of functions shared by all CI scripts - - skip_branch_tip_with_tag () { -+ test -z "$DONT_SKIP_TAGS" || return 0 - # Sometimes, a branch is pushed at the same time the tag that points - # at the same commit as the tip of the branch is pushed, and building - # both at the same time is a waste. @@ ci/lib.sh: then + CI_REPO_SLUG="$GITHUB_REPOSITORY" + CI_JOB_ID="$GITHUB_RUN_ID" CC="${CC:-gcc}" ++ DONT_SKIP_TAGS=t cache_dir="$HOME/none" -+ DONT_SKIP_TAGS=t - export GIT_PROVE_OPTS="--timer --jobs 10" - export GIT_TEST_OPTS="--verbose-log -x" +@@ ci/lib.sh: good_trees_file="$cache_dir/good-trees" + + mkdir -p "$cache_dir" + ++test -n "${DONT_SKIP_TAGS-}" || + skip_branch_tip_with_tag + skip_good_tree + -- gitgitgadget