1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-24 02:36:08 +02:00

ci/lib.sh: encapsulate Travis-specific things

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>
This commit is contained in:
Johannes Schindelin 2019-01-27 15:26:51 -08:00 committed by Junio C Hamano
parent c2160f2d19
commit b011fabd6e
4 changed files with 43 additions and 14 deletions

View File

@ -37,7 +37,8 @@ osx-clang|osx-gcc)
brew update --quiet brew update --quiet
# Uncomment this if you want to run perf tests: # Uncomment this if you want to run perf tests:
# brew install gnu-time # brew install gnu-time
brew install git-lfs gettext test -z "$BREW_INSTALL_PACKAGES" ||
brew install $BREW_INSTALL_PACKAGES
brew link --force gettext brew link --force gettext
brew install caskroom/cask/perforce brew install caskroom/cask/perforce
;; ;;

View File

@ -24,7 +24,7 @@ skip_branch_tip_with_tag () {
# job if we encounter the same tree again and can provide a useful info # job if we encounter the same tree again and can provide a useful info
# message. # message.
save_good_tree () { 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 # limit the file size
tail -1000 "$good_trees_file" >"$good_trees_file".tmp tail -1000 "$good_trees_file" >"$good_trees_file".tmp
mv "$good_trees_file".tmp "$good_trees_file" 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 # successfully before (e.g. because the branch got rebased, changing only
# the commit messages). # the commit messages).
skip_good_tree () { 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 then
# Haven't seen this tree yet, or no cached good trees file yet. # Haven't seen this tree yet, or no cached good trees file yet.
# Continue the build job. # Continue the build job.
@ -44,18 +44,18 @@ skip_good_tree () {
echo "$good_tree_info" | { echo "$good_tree_info" | {
read tree prev_good_commit prev_good_job_number prev_good_job_id 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 then
cat <<-EOF 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. 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'. To force a re-build delete the branch's cache and then hit 'Restart job'.
EOF EOF
else else
cat <<-EOF 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. 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'. To force a re-build delete the branch's cache and then hit 'Restart job'.
EOF EOF
fi fi
@ -80,11 +80,32 @@ check_unignored_build_artifacts ()
# and installing dependencies. # and installing dependencies.
set -ex set -ex
# When building a PR, TRAVIS_BRANCH refers to the *target* branch. Not what we if test true = "$TRAVIS"
# want here. We want the source branch instead. then
CI_BRANCH="${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" 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" good_trees_file="$cache_dir/good-trees"
mkdir -p "$cache_dir" mkdir -p "$cache_dir"
@ -94,13 +115,11 @@ skip_good_tree
if test -z "$jobname" if test -z "$jobname"
then then
jobname="$TRAVIS_OS_NAME-$CC" jobname="$CI_OS_NAME-$CC"
fi fi
export DEVELOPER=1 export DEVELOPER=1
export DEFAULT_TEST_TARGET=prove 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 export GIT_TEST_CLONE_2GB=YesPlease
if [ "$jobname" = linux-gcc ]; then if [ "$jobname" = linux-gcc ]; then
export CC=gcc-8 export CC=gcc-8

View File

@ -38,6 +38,14 @@ do
test_name="${TEST_EXIT%.exit}" test_name="${TEST_EXIT%.exit}"
test_name="${test_name##*/}" test_name="${test_name##*/}"
trash_dir="trash directory.$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" trash_tgz_b64="trash.$test_name.base64"
if [ -d "$trash_dir" ] if [ -d "$trash_dir" ]
then then

View File

@ -5,6 +5,7 @@
. ${0%/*}/lib.sh . ${0%/*}/lib.sh
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
gem install asciidoctor gem install asciidoctor
make check-builtins make check-builtins