Merge branch 'ls/travis-scriptify' into maint
The scripts to drive TravisCI has been reorganized and then an optimization to avoid spending cycles on a branch whose tip is tagged has been implemented. * ls/travis-scriptify: travis-ci: fix "skip_branch_tip_with_tag()" string comparison travis: dedent a few scripts that are indented overly deeply travis-ci: skip a branch build if equal tag is present travis-ci: move Travis CI code into dedicated scripts
This commit is contained in:
commit
a37b73e9bb
88
.travis.yml
88
.travis.yml
@ -61,23 +61,8 @@ matrix:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
- docker pull daald/ubuntu32:xenial
|
||||
before_script:
|
||||
script:
|
||||
- >
|
||||
docker run
|
||||
--interactive
|
||||
--env DEVELOPER
|
||||
--env DEFAULT_TEST_TARGET
|
||||
--env GIT_PROVE_OPTS
|
||||
--env GIT_TEST_OPTS
|
||||
--env GIT_TEST_CLONE_2GB
|
||||
--volume "${PWD}:/usr/src/git"
|
||||
daald/ubuntu32:xenial
|
||||
/usr/src/git/ci/run-linux32-build.sh $(id -u $USER)
|
||||
# Use the following command to debug the docker build locally:
|
||||
# $ docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash daald/ubuntu32:xenial
|
||||
# root@container:/# /usr/src/git/ci/run-linux32-build.sh
|
||||
script: ci/run-linux32-docker.sh
|
||||
- env: Static Analysis
|
||||
os: linux
|
||||
compiler:
|
||||
@ -86,9 +71,8 @@ matrix:
|
||||
packages:
|
||||
- coccinelle
|
||||
before_install:
|
||||
script:
|
||||
# "before_script" that builds Git is inherited from base job
|
||||
- make coccicheck
|
||||
# "before_script" that builds Git is inherited from base job
|
||||
script: ci/run-static-analysis.sh
|
||||
after_failure:
|
||||
- env: Documentation
|
||||
os: linux
|
||||
@ -99,70 +83,14 @@ matrix:
|
||||
- asciidoc
|
||||
- xmlto
|
||||
before_install:
|
||||
before_script: gem install asciidoctor
|
||||
before_script:
|
||||
script: ci/test-documentation.sh
|
||||
after_failure:
|
||||
|
||||
before_install:
|
||||
- >
|
||||
case "${TRAVIS_OS_NAME:-linux}" in
|
||||
linux)
|
||||
export GIT_TEST_HTTPD=YesPlease
|
||||
|
||||
mkdir --parents custom/p4
|
||||
pushd custom/p4
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4d
|
||||
wget --quiet http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION/bin.linux26x86_64/p4
|
||||
chmod u+x p4d
|
||||
chmod u+x p4
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
mkdir --parents custom/git-lfs
|
||||
pushd custom/git-lfs
|
||||
wget --quiet https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz
|
||||
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
||||
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
;;
|
||||
osx)
|
||||
brew update --quiet
|
||||
# Uncomment this if you want to run perf tests:
|
||||
# brew install gnu-time
|
||||
brew install git-lfs gettext
|
||||
brew link --force gettext
|
||||
brew install caskroom/cask/perforce
|
||||
;;
|
||||
esac;
|
||||
echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)";
|
||||
p4d -V | grep Rev.;
|
||||
echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)";
|
||||
p4 -V | grep Rev.;
|
||||
echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)";
|
||||
git-lfs version;
|
||||
|
||||
before_script: make --jobs=2
|
||||
|
||||
script:
|
||||
- >
|
||||
mkdir -p $HOME/travis-cache;
|
||||
ln -s $HOME/travis-cache/.prove t/.prove;
|
||||
make --quiet test;
|
||||
|
||||
after_failure:
|
||||
- >
|
||||
: '<-- Click here to see detailed test output! ';
|
||||
for TEST_EXIT in t/test-results/*.exit;
|
||||
do
|
||||
if [ "$(cat "$TEST_EXIT")" != "0" ];
|
||||
then
|
||||
TEST_OUT="${TEST_EXIT%exit}out";
|
||||
echo "------------------------------------------------------------------------";
|
||||
echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)";
|
||||
echo "------------------------------------------------------------------------";
|
||||
cat "${TEST_OUT}";
|
||||
fi;
|
||||
done;
|
||||
before_install: ci/install-dependencies.sh
|
||||
before_script: ci/run-build.sh
|
||||
script: ci/run-tests.sh
|
||||
after_failure: ci/print-test-failures.sh
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
|
46
ci/install-dependencies.sh
Executable file
46
ci/install-dependencies.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Install dependencies required to build and test Git on Linux and macOS
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
P4WHENCE=http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION
|
||||
LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
|
||||
|
||||
case "${TRAVIS_OS_NAME:-linux}" in
|
||||
linux)
|
||||
export GIT_TEST_HTTPD=YesPlease
|
||||
|
||||
mkdir --parents custom/p4
|
||||
pushd custom/p4
|
||||
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
|
||||
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4"
|
||||
chmod u+x p4d
|
||||
chmod u+x p4
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
mkdir --parents custom/git-lfs
|
||||
pushd custom/git-lfs
|
||||
wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
||||
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
||||
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
||||
export PATH="$(pwd):$PATH"
|
||||
popd
|
||||
;;
|
||||
osx)
|
||||
brew update --quiet
|
||||
# Uncomment this if you want to run perf tests:
|
||||
# brew install gnu-time
|
||||
brew install git-lfs gettext
|
||||
brew link --force gettext
|
||||
brew install caskroom/cask/perforce
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)"
|
||||
p4d -V | grep Rev.
|
||||
echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
|
||||
p4 -V | grep Rev.
|
||||
echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)"
|
||||
git-lfs version
|
28
ci/lib-travisci.sh
Executable file
28
ci/lib-travisci.sh
Executable file
@ -0,0 +1,28 @@
|
||||
# Library of functions shared by all CI scripts
|
||||
|
||||
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.
|
||||
#
|
||||
# Travis gives a tagname e.g. v2.14.0 in $TRAVIS_BRANCH when
|
||||
# the build is triggered by a push to a tag. Let's see if
|
||||
# $TRAVIS_BRANCH is exactly at a tag, and if so, if it is
|
||||
# different from $TRAVIS_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 "$TRAVIS_BRANCH" 2>/dev/null) &&
|
||||
test "$TAG" != "$TRAVIS_BRANCH"
|
||||
then
|
||||
echo "Tip of $TRAVIS_BRANCH is exactly at $TAG"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Set 'exit on error' for all CI scripts to let the caller know that
|
||||
# something went wrong
|
||||
set -e
|
||||
|
||||
skip_branch_tip_with_tag
|
18
ci/print-test-failures.sh
Executable file
18
ci/print-test-failures.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Print output of failing tests
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
for TEST_EXIT in t/test-results/*.exit
|
||||
do
|
||||
if [ "$(cat "$TEST_EXIT")" != "0" ]
|
||||
then
|
||||
TEST_OUT="${TEST_EXIT%exit}out"
|
||||
echo "------------------------------------------------------------------------"
|
||||
echo "$(tput setaf 1)${TEST_OUT}...$(tput sgr0)"
|
||||
echo "------------------------------------------------------------------------"
|
||||
cat "${TEST_OUT}"
|
||||
fi
|
||||
done
|
8
ci/run-build.sh
Executable file
8
ci/run-build.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Build Git
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
make --jobs=2
|
23
ci/run-linux32-docker.sh
Executable file
23
ci/run-linux32-docker.sh
Executable file
@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Download and run Docker image to build and test 32-bit Git
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
docker pull daald/ubuntu32:xenial
|
||||
|
||||
# Use the following command to debug the docker build locally:
|
||||
# $ docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash daald/ubuntu32:xenial
|
||||
# root@container:/# /usr/src/git/ci/run-linux32-build.sh
|
||||
|
||||
docker run \
|
||||
--interactive \
|
||||
--env DEVELOPER \
|
||||
--env DEFAULT_TEST_TARGET \
|
||||
--env GIT_PROVE_OPTS \
|
||||
--env GIT_TEST_OPTS \
|
||||
--env GIT_TEST_CLONE_2GB \
|
||||
--volume "${PWD}:/usr/src/git" \
|
||||
daald/ubuntu32:xenial \
|
||||
/usr/src/git/ci/run-linux32-build.sh $(id -u $USER)
|
8
ci/run-static-analysis.sh
Executable file
8
ci/run-static-analysis.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Perform various static code analysis checks
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
make coccicheck
|
10
ci/run-tests.sh
Executable file
10
ci/run-tests.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Test Git
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
mkdir -p $HOME/travis-cache
|
||||
ln -s $HOME/travis-cache/.prove t/.prove
|
||||
make --quiet test
|
@ -6,6 +6,8 @@
|
||||
# supported) and a commit hash.
|
||||
#
|
||||
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
test $# -ne 2 && echo "Unexpected number of parameters" && exit 1
|
||||
test -z "$GFW_CI_TOKEN" && echo "GFW_CI_TOKEN not defined" && exit
|
||||
|
||||
|
@ -3,7 +3,9 @@
|
||||
# Perform sanity checks on documentation and build it.
|
||||
#
|
||||
|
||||
set -e
|
||||
. ${0%/*}/lib-travisci.sh
|
||||
|
||||
gem install asciidoctor
|
||||
|
||||
make check-builtins
|
||||
make check-docs
|
||||
|
Loading…
Reference in New Issue
Block a user