зеркало из https://github.com/microsoft/git.git
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:
Родитель
c2160f2d19
Коммит
b011fabd6e
|
@ -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
|
||||
;;
|
||||
|
|
45
ci/lib.sh
45
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
. ${0%/*}/lib.sh
|
||||
|
||||
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
|
||||
gem install asciidoctor
|
||||
|
||||
make check-builtins
|
||||
|
|
Загрузка…
Ссылка в новой задаче