Message ID | pull.619.v2.git.1602170976.gitgitgadget@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Do not skip tagged revisions in the GitHub workflow runs | expand |
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes: > * 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. Nice. Our tests and builds do not do anything differently depending on the refname we are on or the exact commit object name for that matter (other than using it in "git version" output), so "has this tree tested?" is good optimization strategy for this particular project.
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@gmx.de> ## 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@gmx.de> ## 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 +