1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-11 18:16:29 +02: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>
This commit is contained in:
SZEDER Gábor 2017-12-12 00:34:44 +01:00 committed by Junio C Hamano
parent c2154953b8
commit bf427a9451
3 changed files with 15 additions and 10 deletions

View File

@ -39,12 +39,12 @@ env:
matrix:
include:
- env: GETTEXT_POISON=YesPlease
- env: jobname=GETTEXT_POISON GETTEXT_POSION=YesPlease
os: linux
compiler:
addons:
before_install:
- env: Windows
- env: jobname=Windows
os: linux
compiler:
addons:
@ -55,7 +55,7 @@ matrix:
test "$TRAVIS_REPO_SLUG" != "git/git" ||
ci/run-windows-build.sh $TRAVIS_BRANCH $(git rev-parse HEAD)
after_failure:
- env: Linux32
- env: jobname=Linux32
os: linux
compiler:
services:
@ -63,7 +63,7 @@ matrix:
before_install:
before_script:
script: ci/run-linux32-docker.sh
- env: Static Analysis
- env: jobname=StaticAnalysis
os: linux
compiler:
addons:
@ -74,7 +74,7 @@ matrix:
before_script:
script: ci/run-static-analysis.sh
after_failure:
- env: Documentation
- env: jobname=Documentation
os: linux
compiler:
addons:

View File

@ -8,8 +8,8 @@
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)
case "$jobname" in
linux-clang|linux-gcc)
export GIT_TEST_HTTPD=YesPlease
mkdir --parents "$P4_PATH"
@ -26,7 +26,7 @@ linux)
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
popd
;;
osx)
osx-clang|osx-gcc)
brew update --quiet
# Uncomment this if you want to run perf tests:
# brew install gnu-time

View File

@ -27,8 +27,13 @@ set -e
skip_branch_tip_with_tag
case "${TRAVIS_OS_NAME:-linux}" in
linux)
if test -z "$jobname"
then
jobname="$TRAVIS_OS_NAME-$CC"
fi
case "$jobname" in
linux-clang|linux-gcc)
P4_PATH="$(pwd)/custom/p4"
GIT_LFS_PATH="$(pwd)/custom/git-lfs"
export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"