2017-09-10 22:44:28 +08:00
|
|
|
# Library of functions shared by all CI scripts
|
|
|
|
|
2017-09-10 22:44:29 +08:00
|
|
|
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) &&
|
2017-09-22 04:48:30 +08:00
|
|
|
test "$TAG" != "$TRAVIS_BRANCH"
|
2017-09-10 22:44:29 +08:00
|
|
|
then
|
|
|
|
echo "Tip of $TRAVIS_BRANCH is exactly at $TAG"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2017-09-10 22:44:28 +08:00
|
|
|
# Set 'exit on error' for all CI scripts to let the caller know that
|
|
|
|
# something went wrong
|
|
|
|
set -e
|
2017-09-10 22:44:29 +08:00
|
|
|
|
|
|
|
skip_branch_tip_with_tag
|
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
Linux build jobs on Travis CI skip the P4 and Git LFS tests since
commit 657343a60 (travis-ci: move Travis CI code into dedicated
scripts, 2017-09-10), claiming there are no P4 or Git LFS installed.
The reason is that P4 and Git LFS binaries are not installed to a
directory in the default $PATH, but their directories are prepended to
$PATH. This worked just fine before said commit, because $PATH was
set in a scriptlet embedded in our '.travis.yml', thus its new value
was visible during the rest of the build job. However, after these
embedded scriptlets were moved into dedicated scripts executed in
separate shell processes, any variable set in one of those scripts is
only visible in that single script but not in any of the others. In
this case, 'ci/install-dependencies.sh' downloads P4 and Git LFS and
modifies $PATH, but to no effect, because 'ci/run-tests.sh' only sees
Travis CI's default $PATH.
Move adjusting $PATH to 'ci/lib-travisci.sh', which is sourced in all
other 'ci/' scripts, so all those scripts will see the updated $PATH
value.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-01 19:55:35 +08:00
|
|
|
|
travis-ci: introduce a $jobname variable for 'ci/*' scripts
A couple of 'ci/*' scripts are shared between different build jobs:
'ci/lib-travisci.sh', being a common library, is sourced from almost
every script, while 'ci/install-dependencies.sh', 'ci/run-build.sh'
and 'ci/run-tests.sh' are shared between the "regular" GCC and Clang
Linux and OSX build jobs, and the latter two scripts are used in the
GETTEXT_POISON Linux build job as well.
Our builds could benefit from these shared scripts being able to
easily tell which build job they are taking part in. Now, it's
already quite easy to tell apart Linux vs OSX and GCC vs Clang build
jobs, but it gets trickier with all the additional Linux-based build
jobs included explicitly in the build matrix.
Unfortunately, Travis CI doesn't provide much help in this regard.
The closest we've got is the $TRAVIS_JOB_NUMBER variable, the value of
which is two dot-separated integers, where the second integer
indicates a particular build job. While it would be possible to use
that second number to identify the build job in our shared scripts, it
doesn't seem like a good idea to rely on that:
- Though the build job numbering sequence seems to be stable so far,
Travis CI's documentation doesn't explicitly states that it is
indeed stable and will remain so in the future. And even if it
were stable,
- if we were to remove or insert a build job in the middle, then the
job numbers of all subsequent build jobs would change accordingly.
So roll our own means of simple build job identification and introduce
the $jobname environment variable in our builds, setting it in the
environments of the explicitly included jobs in '.travis.yml', while
constructing one in 'ci/lib-travisci.sh' as the combination of the OS
and compiler name for the GCC and Clang Linux and OSX build jobs. Use
$jobname instead of $TRAVIS_OS_NAME in scripts taking different
actions based on the OS and build job (when installing P4 and Git LFS
dependencies and including them in $PATH). The following two patches
will also rely on $jobname.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-12-12 07:34:44 +08:00
|
|
|
if test -z "$jobname"
|
|
|
|
then
|
|
|
|
jobname="$TRAVIS_OS_NAME-$CC"
|
|
|
|
fi
|
|
|
|
|
|
|
|
case "$jobname" in
|
|
|
|
linux-clang|linux-gcc)
|
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
Linux build jobs on Travis CI skip the P4 and Git LFS tests since
commit 657343a60 (travis-ci: move Travis CI code into dedicated
scripts, 2017-09-10), claiming there are no P4 or Git LFS installed.
The reason is that P4 and Git LFS binaries are not installed to a
directory in the default $PATH, but their directories are prepended to
$PATH. This worked just fine before said commit, because $PATH was
set in a scriptlet embedded in our '.travis.yml', thus its new value
was visible during the rest of the build job. However, after these
embedded scriptlets were moved into dedicated scripts executed in
separate shell processes, any variable set in one of those scripts is
only visible in that single script but not in any of the others. In
this case, 'ci/install-dependencies.sh' downloads P4 and Git LFS and
modifies $PATH, but to no effect, because 'ci/run-tests.sh' only sees
Travis CI's default $PATH.
Move adjusting $PATH to 'ci/lib-travisci.sh', which is sourced in all
other 'ci/' scripts, so all those scripts will see the updated $PATH
value.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-01 19:55:35 +08:00
|
|
|
P4_PATH="$(pwd)/custom/p4"
|
|
|
|
GIT_LFS_PATH="$(pwd)/custom/git-lfs"
|
|
|
|
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
|
|
|
|
;;
|
|
|
|
esac
|