Merge branch 'ls/travis-scriptify'
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
f05a23ae3b
88
.travis.yml
88
.travis.yml
@ -61,23 +61,8 @@ matrix:
|
|||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
before_install:
|
before_install:
|
||||||
- docker pull daald/ubuntu32:xenial
|
|
||||||
before_script:
|
before_script:
|
||||||
script:
|
script: ci/run-linux32-docker.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)
|
|
||||||
# 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
|
|
||||||
- env: Static Analysis
|
- env: Static Analysis
|
||||||
os: linux
|
os: linux
|
||||||
compiler:
|
compiler:
|
||||||
@ -86,9 +71,8 @@ matrix:
|
|||||||
packages:
|
packages:
|
||||||
- coccinelle
|
- coccinelle
|
||||||
before_install:
|
before_install:
|
||||||
script:
|
# "before_script" that builds Git is inherited from base job
|
||||||
# "before_script" that builds Git is inherited from base job
|
script: ci/run-static-analysis.sh
|
||||||
- make coccicheck
|
|
||||||
after_failure:
|
after_failure:
|
||||||
- env: Documentation
|
- env: Documentation
|
||||||
os: linux
|
os: linux
|
||||||
@ -99,70 +83,14 @@ matrix:
|
|||||||
- asciidoc
|
- asciidoc
|
||||||
- xmlto
|
- xmlto
|
||||||
before_install:
|
before_install:
|
||||||
before_script: gem install asciidoctor
|
before_script:
|
||||||
script: ci/test-documentation.sh
|
script: ci/test-documentation.sh
|
||||||
after_failure:
|
after_failure:
|
||||||
|
|
||||||
before_install:
|
before_install: ci/install-dependencies.sh
|
||||||
- >
|
before_script: ci/run-build.sh
|
||||||
case "${TRAVIS_OS_NAME:-linux}" in
|
script: ci/run-tests.sh
|
||||||
linux)
|
after_failure: ci/print-test-failures.sh
|
||||||
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;
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
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.
|
# supported) and a commit hash.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
. ${0%/*}/lib-travisci.sh
|
||||||
|
|
||||||
test $# -ne 2 && echo "Unexpected number of parameters" && exit 1
|
test $# -ne 2 && echo "Unexpected number of parameters" && exit 1
|
||||||
test -z "$GFW_CI_TOKEN" && echo "GFW_CI_TOKEN not defined" && exit
|
test -z "$GFW_CI_TOKEN" && echo "GFW_CI_TOKEN not defined" && exit
|
||||||
|
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
# Perform sanity checks on documentation and build it.
|
# Perform sanity checks on documentation and build it.
|
||||||
#
|
#
|
||||||
|
|
||||||
set -e
|
. ${0%/*}/lib-travisci.sh
|
||||||
|
|
||||||
|
gem install asciidoctor
|
||||||
|
|
||||||
make check-builtins
|
make check-builtins
|
||||||
make check-docs
|
make check-docs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user