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
+