ci/lib.sh: encapsulate Travis-specific things
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sun, 27 Jan 2019 23:26:51 +0000 (15:26 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Jan 2019 18:34:28 +0000 (10:34 -0800)
The upcoming patches will allow building git.git via Azure Pipelines
(i.e. Azure DevOps' Continuous Integration), where variable names and
URLs look a bit different than in Travis CI.

Also, the configurations of the available agents are different. For
example, Travis' and Azure Pipelines' macOS agents are set up
differently, so that on Travis, we have to install the git-lfs and
gettext Homebrew packages, and on Azure Pipelines we do not need to.
Likewise, Azure Pipelines' Ubuntu agents already have asciidoctor
installed.

Finally, on Azure Pipelines the natural way is not to base64-encode tar
files of the trash directories of failed tests, but to publish build
artifacts instead. Therefore, that code to log those base64-encoded tar
files is guarded to be Travis-specific.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ci/install-dependencies.sh
ci/lib.sh
ci/print-test-failures.sh
ci/test-documentation.sh
index fe6514415277c2433229a9af55a1d90c66490880..bcdcc715924c53bbcf1418b7ddeee426c94468b8 100755 (executable)
@@ -37,7 +37,8 @@ osx-clang|osx-gcc)
        brew update --quiet
        # Uncomment this if you want to run perf tests:
        # brew install gnu-time
-       brew install git-lfs gettext
+       test -z "$BREW_INSTALL_PACKAGES" ||
+       brew install $BREW_INSTALL_PACKAGES
        brew link --force gettext
        brew install caskroom/cask/perforce
        ;;
index 9c6ddeb374b6adead28ca92d3fac5acee233e448..3f286d86a63eeb32c5590e3426e25e430d68b165 100755 (executable)
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -24,7 +24,7 @@ skip_branch_tip_with_tag () {
 # job if we encounter the same tree again and can provide a useful info
 # message.
 save_good_tree () {
-       echo "$(git rev-parse $TRAVIS_COMMIT^{tree}) $TRAVIS_COMMIT $TRAVIS_JOB_NUMBER $TRAVIS_JOB_ID" >>"$good_trees_file"
+       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"
@@ -34,7 +34,7 @@ save_good_tree () {
 # successfully before (e.g. because the branch got rebased, changing only
 # the commit messages).
 skip_good_tree () {
-       if ! good_tree_info="$(grep "^$(git rev-parse $TRAVIS_COMMIT^{tree}) " "$good_trees_file")"
+       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.
@@ -44,18 +44,18 @@ skip_good_tree () {
        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 "$CI_JOB_ID" = "$prev_good_job_id"
                then
                        cat <<-EOF
-                       $(tput setaf 2)Skipping build job for commit $TRAVIS_COMMIT.$(tput sgr0)
+                       $(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 $TRAVIS_COMMIT.$(tput sgr0)
+                       $(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 https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$prev_good_job_id
+                       The log of that build job is available at $(url_for_job_id $prev_good_job_id)
                        To force a re-build delete the branch's cache and then hit 'Restart job'.
                        EOF
                fi
@@ -80,11 +80,32 @@ check_unignored_build_artifacts ()
 # and installing dependencies.
 set -ex
 
-# When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not what we
-# want here. We want the source branch instead.
-CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
+if test true = "$TRAVIS"
+then
+       CI_TYPE=travis
+       # When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not
+       # what we want here. We want the source branch instead.
+       CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}"
+       CI_COMMIT="$TRAVIS_COMMIT"
+       CI_JOB_ID="$TRAVIS_JOB_ID"
+       CI_JOB_NUMBER="$TRAVIS_JOB_NUMBER"
+       CI_OS_NAME="$TRAVIS_OS_NAME"
+       CI_REPO_SLUG="$TRAVIS_REPO_SLUG"
+
+       cache_dir="$HOME/travis-cache"
+
+       url_for_job_id () {
+               echo "https://travis-ci.org/$CI_REPO_SLUG/jobs/$1"
+       }
+
+       BREW_INSTALL_PACKAGES="git-lfs gettext"
+       export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
+       export GIT_TEST_OPTS="--verbose-log -x --immediate"
+else
+       echo "Could not identify CI type" >&2
+       exit 1
+fi
 
-cache_dir="$HOME/travis-cache"
 good_trees_file="$cache_dir/good-trees"
 
 mkdir -p "$cache_dir"
@@ -94,13 +115,11 @@ skip_good_tree
 
 if test -z "$jobname"
 then
-       jobname="$TRAVIS_OS_NAME-$CC"
+       jobname="$CI_OS_NAME-$CC"
 fi
 
 export DEVELOPER=1
 export DEFAULT_TEST_TARGET=prove
-export GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save"
-export GIT_TEST_OPTS="--verbose-log -x --immediate"
 export GIT_TEST_CLONE_2GB=YesPlease
 if [ "$jobname" = linux-gcc ]; then
        export CC=gcc-8
index 7aef39a2fd249f26f0bb43b7495659478cb04356..cf321b474df32a25946e38425fc552702f2f0ace 100755 (executable)
@@ -38,6 +38,14 @@ do
                test_name="${TEST_EXIT%.exit}"
                test_name="${test_name##*/}"
                trash_dir="trash directory.$test_name"
+               case "$CI_TYPE" in
+               travis)
+                       ;;
+               *)
+                       echo "Unhandled CI type: $CI_TYPE" >&2
+                       exit 1
+                       ;;
+               esac
                trash_tgz_b64="trash.$test_name.base64"
                if [ -d "$trash_dir" ]
                then
index d3cdbac73f8b3dc179d003cb9f79049540f70f20..7d0beb28327633505e0f52bde88c8430bacd9673 100755 (executable)
@@ -5,6 +5,7 @@
 
 . ${0%/*}/lib.sh
 
+test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
 gem install asciidoctor
 
 make check-builtins