From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
"Carlo Marcelo Arenas Belón" <carenas@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Victoria Dye" <vdye@github.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 03/10] CI: remove dead "tree skipping" code
Date: Thu, 14 Jul 2022 21:39:40 +0200 [thread overview]
Message-ID: <patch-03.10-10ea16766f1-20220714T193808Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-00.10-00000000000-20220714T193808Z-avarab@gmail.com>
Remove the code related to skipping CI runs if the tree was
successfully tested before. With the GitHub CI this is done with the
"ci-config" step, see e76eec35540 (ci: allow per-branch config for
GitHub Actions, 2020-05-07) and 7d78d5fc1a9 (ci: skip GitHub workflow
runs for already-tested commits/trees, 2020-10-08).
This code hasn't been used since 4a6e4b96026 (CI: remove Travis CI
support, 2021-11-23). At one point it was used for the now-removed
Azure Pipelines support. That support was removed in 6081d3898fe (ci:
retire the Azure Pipelines definition, 2020-04-11), but before in
50b206371d2 (travis: remove the hack to build the Windows job on Azure
Pipelines, 2019-02-28) the "save_good_tree" function had not been
called by the Azure Pipelines code.
Therefore even for those who'd like to resurrect the
azure-pipelines.yml for occasional ad-hoc use (see the thread(s)
starting at [1]) this change should be OK. This code was really only
used for the now-removed Travis CI.
This change also removes a subtle potential logic error introduced in
0e7696c64db (ci: disallow directional formatting, 2021-11-04). The
"ci/check-directional-formatting.bash" script would have been made to
run after the "save_good_tree" in invoked in
"ci/run-static-analysis.sh". So if e.g. the "make coccicheck" failed
we'd still mark the tree as good.
I.e. the addition of "ci/check-directional-formatting.bash" didn't
take into account that the various users of the "save_good_tree"
function in ci/*.sh made a hard assumption that they're the only
ci/*.sh script that's being run (and they use "set -e").
This is entirely academic since we weren't actually running this code,
but is something to be careful of if anyone ever needs to resurrect
parts of this.
Finally, the cache_dir="$HOME/none" added in a3f2eec862b (ci/lib:
allow running in GitHub Actions, 2020-04-08) for the GitHub CI can be
removed. It appears to have been added to appease the subsequent
'mkdir -p "$cache_dir"', which wasn't needed in GitHub CI.
1. https://lore.kernel.org/git/220609.86r13xsj00.gmgdl@evledraar.gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
ci/lib.sh | 91 ---------------------------------------
ci/run-build-and-tests.sh | 2 -
ci/run-static-analysis.sh | 2 -
ci/test-documentation.sh | 2 -
4 files changed, 97 deletions(-)
diff --git a/ci/lib.sh b/ci/lib.sh
index f32c588f6ad..fcb79c83087 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -52,75 +52,6 @@ else
begin_group "CI setup"
fi
-skip_branch_tip_with_tag () {
- # 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.
- #
- # When the build is triggered by a push to a tag, $CI_BRANCH will
- # have that tagname, e.g. v2.14.0. Let's see if $CI_BRANCH is
- # exactly at a tag, and if so, if it is different from $CI_BRANCH.
- # That way, we can tell if we are building the tip of a branch that
- # is tagged and we can skip the build because we won't be skipping a
- # build of a tag.
-
- if TAG=$(git describe --exact-match "$CI_BRANCH" 2>/dev/null) &&
- test "$TAG" != "$CI_BRANCH"
- then
- echo "$(tput setaf 2)Tip of $CI_BRANCH is exactly at $TAG$(tput sgr0)"
- exit 0
- fi
-}
-
-# Save some info about the current commit's tree, so we can skip the build
-# job if we encounter the same tree again and can provide a useful info
-# message.
-save_good_tree () {
- echo "$(git rev-parse $CI_COMMIT^{tree}) $CI_COMMIT $CI_JOB_NUMBER $CI_JOB_ID" >>"$good_trees_file"
- # limit the file size
- tail -1000 "$good_trees_file" >"$good_trees_file".tmp
- mv "$good_trees_file".tmp "$good_trees_file"
-}
-
-# Skip the build job if the same tree has already been built and tested
-# successfully before (e.g. because the branch got rebased, changing only
-# the commit messages).
-skip_good_tree () {
- if test true = "$GITHUB_ACTIONS"
- then
- return
- fi
-
- if ! good_tree_info="$(grep "^$(git rev-parse $CI_COMMIT^{tree}) " "$good_trees_file")"
- then
- # Haven't seen this tree yet, or no cached good trees file yet.
- # Continue the build job.
- return
- fi
-
- echo "$good_tree_info" | {
- read tree prev_good_commit prev_good_job_number prev_good_job_id
-
- if test "$CI_JOB_ID" = "$prev_good_job_id"
- then
- cat <<-EOF
- $(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
- This commit has already been built and tested successfully by this build job.
- To force a re-build delete the branch's cache and then hit 'Restart job'.
- EOF
- else
- cat <<-EOF
- $(tput setaf 2)Skipping build job for commit $CI_COMMIT.$(tput sgr0)
- This commit's tree has already been built and tested successfully in build job $prev_good_job_number for commit $prev_good_commit.
- The log of that build job is available at $SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$prev_good_job_id
- To force a re-build delete the branch's cache and then hit 'Restart job'.
- EOF
- fi
- }
-
- exit 0
-}
-
check_unignored_build_artifacts () {
! git ls-files --other --exclude-standard --error-unmatch \
-- ':/*' 2>/dev/null ||
@@ -144,16 +75,8 @@ if test -n "$SYSTEM_COLLECTIONURI" || test -n "$SYSTEM_TASKDEFINITIONSURI"
then
CI_TYPE=azure-pipelines
# We are running in Azure Pipelines
- CI_BRANCH="$BUILD_SOURCEBRANCH"
- CI_COMMIT="$BUILD_SOURCEVERSION"
- CI_JOB_ID="$BUILD_BUILDID"
- CI_JOB_NUMBER="$BUILD_BUILDNUMBER"
CC="${CC:-gcc}"
- # use a subdirectory of the cache dir (because the file share is shared
- # among *all* phases)
- cache_dir="$HOME/test-cache/$SYSTEM_PHASENAME"
-
export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
MAKEFLAGS="$MAKEFLAGS --jobs=10"
@@ -162,11 +85,7 @@ then
elif test true = "$GITHUB_ACTIONS"
then
CI_TYPE=github-actions
- CI_BRANCH="$GITHUB_REF"
- CI_COMMIT="$GITHUB_SHA"
- CI_JOB_ID="$GITHUB_RUN_ID"
CC="${CC_PACKAGE:-${CC:-gcc}}"
- DONT_SKIP_TAGS=t
handle_failed_tests () {
mkdir -p t/failed-test-artifacts
echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV
@@ -189,8 +108,6 @@ then
return 1
}
- cache_dir="$HOME/none"
-
export GIT_PROVE_OPTS="--timer --jobs 10"
export GIT_TEST_OPTS="--verbose-log -x --github-workflow-markup"
MAKEFLAGS="$MAKEFLAGS --jobs=10"
@@ -202,14 +119,6 @@ else
exit 1
fi
-good_trees_file="$cache_dir/good-trees"
-
-mkdir -p "$cache_dir"
-
-test -n "${DONT_SKIP_TAGS-}" ||
-skip_branch_tip_with_tag
-skip_good_tree
-
if test -z "$jobname"
then
jobname="$CI_OS_NAME-$CC"
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 9a5032e6a77..1a89a4967bf 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -47,5 +47,3 @@ then
handle_failed_tests
fi
check_unignored_build_artifacts
-
-save_good_tree
diff --git a/ci/run-static-analysis.sh b/ci/run-static-analysis.sh
index 0d51e5ce0e7..faae31f0078 100755
--- a/ci/run-static-analysis.sh
+++ b/ci/run-static-analysis.sh
@@ -30,5 +30,3 @@ make hdr-check ||
exit 1
make check-pot
-
-save_good_tree
diff --git a/ci/test-documentation.sh b/ci/test-documentation.sh
index de41888430a..9e0652c30dd 100755
--- a/ci/test-documentation.sh
+++ b/ci/test-documentation.sh
@@ -41,5 +41,3 @@ grep '<meta name="generator" content="Asciidoctor ' Documentation/git.html
rm -f stdout.log stderr.log stderr.raw
check_unignored_build_artifacts
-
-save_good_tree
--
2.37.1.996.g651fc6e809f
next prev parent reply other threads:[~2022-07-14 19:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-14 19:39 [PATCH 00/10] ci: make it easy to run locally, part 1 Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 01/10] CI: run "set -ex" early in ci/lib.sh Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 02/10] CI: remove more dead Travis CI support Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` Ævar Arnfjörð Bjarmason [this message]
2022-07-14 19:39 ` [PATCH 04/10] CI: make "$jobname" explicit, remove fallback Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 05/10] CI/lib.sh: stop adding leading whitespace to $MAKEFLAGS Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 06/10] CI: consistently use "export" in ci/lib.sh Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 07/10] CI: export variables via a wrapper Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 08/10] CI: don't have "git grep" invoke a pager in tree content check Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 09/10] CI: have "static-analysis" run a "make ci-static-analysis" target Ævar Arnfjörð Bjarmason
2022-07-14 19:39 ` [PATCH 10/10] CI: have "static-analysis" run "check-builtins", not "documentation" Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=patch-03.10-10ea16766f1-20220714T193808Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=carenas@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=szeder.dev@gmail.com \
--cc=vdye@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).