git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/4] travis-ci: introduce a $jobname variable for 'ci/*' scripts

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Dec 11, 2017, 23:34 UTC
Message-ID
<20171211233446.10596-3-szeder.dev@gmail.com>
In-Reply-To
<20171211233446.10596-1-szeder.dev@gmail.com>

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>
---
 .travis.yml                | 10 +++++-----
 ci/install-dependencies.sh |  6 +++---
 ci/lib-travisci.sh         |  9 +++++++--
 3 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 281f101f3..88435e11c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -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:
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 5bd06fe90..468788566 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -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
diff --git a/ci/lib-travisci.sh b/ci/lib-travisci.sh
index a0c8ae03f..b60e93797 100755
--- a/ci/lib-travisci.sh
+++ b/ci/lib-travisci.sh
@@ -27,8 +27,13 @@ set -ex
 
 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"
-- 
2.15.1.421.gc469ca1de
Previous: Johannes SchindelinNext: SZEDER Gábor
Message 11 of 44 in “travis-ci: fix running P4 and Git LFS tests in Linux build jobs”
  1. travis-ci: fix running P4 and Git LFS tests in Linux build jobsSZEDER Gábor, Nov 1, 2017
  2. 0/4 travis-ci: clean up setting environment variablesSZEDER Gábor, Dec 11, 2017
  3. 1/4 travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing outputSZEDER Gábor, Dec 11, 2017
  4. Lars SchneiderDec 12, 2017
  5. SZEDER GáborDec 12, 2017
  6. Lars SchneiderDec 13, 2017
  7. SZEDER GáborDec 14, 2017
  8. Johannes SchindelinDec 15, 2017
  9. SZEDER GáborDec 15, 2017
  10. Johannes SchindelinDec 15, 2017
  11. 2/4 travis-ci: introduce a $jobname variable for 'ci/*' scriptsSZEDER Gábor, Dec 11, 2017
  12. 3/4 travis-ci: move setting environment variables to 'ci/lib-travisci.sh'SZEDER Gábor, Dec 11, 2017
  13. 4/4 travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'SZEDER Gábor, Dec 11, 2017
  14. 0/8 Travis CI cleanupsSZEDER Gábor, Dec 16, 2017
  15. 1/8 travis-ci: use 'set -x' in select 'ci/*' scripts for extra tracingSZEDER Gábor, Dec 16, 2017
  16. 2/8 travis-ci: introduce a $jobname variable for 'ci/*' scriptsSZEDER Gábor, Dec 16, 2017
  17. 3/8 travis-ci: move setting environment variables to 'ci/lib-travisci.sh'SZEDER Gábor, Dec 16, 2017
  18. 4/8 travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'SZEDER Gábor, Dec 16, 2017
  19. 5/8 travis-ci: don't install default addon packages for the 32 bit Linux buildSZEDER Gábor, Dec 16, 2017
  20. 6/8 travis-ci: don't install 'language-pack-is' packageSZEDER Gábor, Dec 16, 2017
  21. Lars SchneiderDec 18, 2017
  22. SZEDER GáborDec 18, 2017
  23. Lars SchneiderDec 18, 2017
  24. Junio C HamanoDec 18, 2017
  25. SZEDER GáborDec 19, 2017
  26. 7/8 travis-ci: save prove state for the 32 bit Linux buildSZEDER Gábor, Dec 16, 2017
  27. 8/8 travis-ci: only print test failures if there are test results availableSZEDER Gábor, Dec 16, 2017
  28. Eric SunshineDec 16, 2017
  29. SZEDER GáborDec 16, 2017
  30. Eric SunshineDec 17, 2017
  31. Johannes SchindelinDec 16, 2017
  32. Lars SchneiderDec 18, 2017
  33. Lars SchneiderDec 18, 2017
  34. 0/4 Rest of the Travis CI fixesSZEDER Gábor, Dec 27, 2017
  35. 1/4 travis-ci: fine tune the use of 'set -x' in 'ci/*' scriptsSZEDER Gábor, Dec 27, 2017
  36. Lars SchneiderDec 27, 2017
  37. 2/4 travis-ci: don't install default addon packages for the 32 bit Linux buildSZEDER Gábor, Dec 27, 2017
  38. Lars SchneiderDec 27, 2017
  39. 3/4 travis-ci: save prove state for the 32 bit Linux buildSZEDER Gábor, Dec 27, 2017
  40. Lars SchneiderDec 27, 2017
  41. SZEDER GáborDec 27, 2017
  42. Lars SchneiderDec 28, 2017
  43. 4/4 travis-ci: only print test failures if there are test results availableSZEDER Gábor, Dec 27, 2017
  44. Lars SchneiderDec 27, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.