This is the second iteration of 'sg/travis-skip-identical-test',
addressing the comments of Lars and Jonathan:
- Colorize the "Tip of $TRAVIS_BRANCH is exactly at $TAG" message
in the new patch 1/3.
- Create the cache directory at the beginning of the build process
(patch 2/3).
- Limit the the cached good trees file size to 1000 records, to
prevent it from growing too large for git/git's forever living
integration branches (patch 3/3).
- Colorize the first line of the "skip build job because this tree has
been tested". Green it is (3/3).
- Removed stray whitespace (3/3).
- Updated an in-code comment, to make clear which code path deals with
a non-existing good trees file (3/3).
SZEDER Gábor (3):
travis-ci: print the "tip of branch is exactly at tag" message in
color
travis-ci: create the cache directory early in the build process
travis-ci: record and skip successfully built trees
ci/lib-travisci.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++++-
ci/run-linux32-docker.sh | 2 ++
ci/run-static-analysis.sh | 2 ++
ci/run-tests.sh | 3 ++-
ci/run-windows-build.sh | 2 ++
ci/test-documentation.sh | 2 ++
6 files changed, 60 insertions(+), 2 deletions(-)
--
2.16.0.rc0.67.g3a46dbca7
diff --git a/ci/lib-travisci.sh b/ci/lib-travisci.sh
index 05e73123f..bade71617 100755
--- a/ci/lib-travisci.sh
+++ b/ci/lib-travisci.sh
@@ -16,7 +16,7 @@ skip_branch_tip_with_tag () {
if TAG=$(git describe --exact-match "$TRAVIS_BRANCH" 2>/dev/null) &&
test "$TAG" != "$TRAVIS_BRANCH"
then
- echo "Tip of $TRAVIS_BRANCH is exactly at $TAG"
+ echo "$(tput setaf 2)Tip of $TRAVIS_BRANCH is exactly at
$TAG$(tput sgr0)"
exit 0
fi
}
@@ -28,6 +28,9 @@ good_trees_file="$HOME/travis-cache/good-trees"
# message.
save_good_tree () {
echo "$(git rev-parse $TRAVIS_COMMIT^{tree}) $TRAVIS_COMMIT
$TRAVIS_JOB_NUMBER $TRAVIS_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
@@ -36,23 +39,24 @@ save_good_tree () {
skip_good_tree () {
if ! good_tree_info="$(grep "^$(git rev-parse $TRAVIS_COMMIT^{tree}) "
"$good_trees_file")"
then
- # haven't seen this tree yet; continue the build job
+ # 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 "$TRAVIS_JOB_ID" = "$prev_good_job_id"
+ if test "$TRAVIS_JOB_ID" = "$prev_good_job_id"
then
cat <<-EOF
- Skipping build job for commit $TRAVIS_COMMIT.
+ $(tput setaf 2)Skipping build job for commit
$TRAVIS_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
- Skipping build job for commit $TRAVIS_COMMIT.
+ $(tput setaf 2)Skipping build job for commit
$TRAVIS_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
https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$prev_good_job_id
To force a re-build delete the branch's cache and then
hit 'Restart job'.
@@ -69,6 +73,8 @@ skip_good_tree () {
# and installing dependencies.
set -ex
+mkdir -p "$HOME/travis-cache"
+
skip_branch_tip_with_tag
skip_good_tree