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

[PATCH v3 4/5] CI: use "$runs_on_pool", not "$jobname" to select packages & config

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 20, 2021, 12:10 UTC
Message-ID
<patch-v3-4.5-54913e775c1-20211120T115414Z-avarab@gmail.com>
In-Reply-To
<cover-v3-0.5-00000000000-20211120T115414Z-avarab@gmail.com>

Change the setup hooks for the CI to use "$runs_on_pool" for the "$regular" job. Now we won't need as much boilerplate when adding new jobs to the "regular" matrix, see 956d2e4639b (tests: add a test mode for SANITIZE=leak, run it in CI, 2021-09-23) for the last such commit.

I.e. now instead of needing to enumerate each jobname when we select packages we can install things depending on the pool we're running in.

That we didn't do this dates back to the now gone dependency on Travis CI, but even if we add a new CI target in the future this'll be easier to port over, since we can probably treat "ubuntu-latest" as a stand-in for some recent Linux that can run "apt" commands.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 .github/workflows/main.yml |  4 ++++
 ci/install-dependencies.sh | 32 ++++++++++++++------------------
 ci/lib.sh                  | 21 +++++++++++----------
 3 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 91b565f75bb..d402402a18b 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -227,12 +227,14 @@ jobs:
             pool: ubuntu-latest
           - jobname: linux-gcc
             cc: gcc
+            cc_package: gcc-8
             pool: ubuntu-latest
           - jobname: osx-clang
             cc: clang
             pool: macos-latest
           - jobname: osx-gcc
             cc: gcc
+            cc_package: gcc-9
             pool: macos-latest
           - jobname: linux-gcc-default
             cc: gcc
@@ -242,7 +244,9 @@ jobs:
             pool: ubuntu-latest
     env:
       CC: ${{matrix.vector.cc}}
+      CC_PACKAGE: ${{matrix.vector.cc_package}}
       jobname: ${{matrix.vector.jobname}}
+      runs_on_pool: ${{matrix.vector.pool}}
     runs-on: ${{matrix.vector.pool}}
     steps:
     - uses: actions/checkout@v2
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 92e11c7198e..ca1eaa49c14 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
  tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
  libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
 
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
 	sudo apt-get -q update
 	sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
-		$UBUNTU_COMMON_PKGS
-	case "$jobname" in
-	linux-gcc)
-		sudo apt-get -q -y install gcc-8
-		;;
-	esac
-
+		$UBUNTU_COMMON_PKGS $CC_PACKAGE
 	mkdir --parents "$P4_PATH"
 	pushd "$P4_PATH"
 		wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
 		cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
 	popd
 	;;
-osx-clang|osx-gcc)
+macos-latest)
 	export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
 	# Uncomment this if you want to run perf tests:
 	# brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
 		brew install --cask --no-quarantine perforce
 	} ||
 	brew install homebrew/cask/perforce
-	case "$jobname" in
-	osx-gcc)
-		brew install gcc@9
-		# Just in case the image is updated to contain gcc@9
-		# pre-installed but not linked.
-		brew link gcc@9
-		;;
-	esac
+
+	if test -n "$CC_PACKAGE"
+	then
+		BREW_PACKAGE=${CC_PACKAGE/-/@}
+		brew install "$BREW_PACKAGE"
+		brew link "$BREW_PACKAGE"
+	fi
 	;;
+esac
+
+case "$jobname" in
 StaticAnalysis)
 	sudo apt-get -q update
 	sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
diff --git a/ci/lib.sh b/ci/lib.sh
index 0b3b0144882..cbc2f8f1caa 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
 export GIT_TEST_CLONE_2GB=true
 export SKIP_DASHED_BUILT_INS=YesPlease
 
-case "$jobname" in
-linux-clang|linux-gcc|linux-leaks)
+case "$runs_on_pool" in
+ubuntu-latest)
+	if test "$jobname" = "linux-gcc-default"
+	then
+		break
+	fi
+
 	if [ "$jobname" = linux-gcc ]
 	then
-		export CC=gcc-8
 		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
 	else
 		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
 	GIT_LFS_PATH="$HOME/custom/git-lfs"
 	export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
 	;;
-osx-clang|osx-gcc)
+macos-latest)
 	if [ "$jobname" = osx-gcc ]
 	then
-		export CC=gcc-9
 		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
 	else
 		MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
 	fi
 	;;
-linux-gcc-default)
-	;;
+esac
+
+case "$jobname" in
 linux32)
 	CC=gcc
 	;;
@@ -200,9 +204,6 @@ linux-musl)
 	MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
 	MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
 	;;
-esac
-
-case "$jobname" in
 linux-leaks)
 	export SANITIZE=leak
 	export GIT_TEST_PASSING_SANITIZE_LEAK=true
-- 
2.34.0.818.g0f23a581583
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 30 of 38 in “CI: use shorter names for CI jobs, less truncation”
  1. 0/2 CI: use shorter names for CI jobs, less truncationÆvar Arnfjörð Bjarmason, Nov 19, 2021
  2. 1/2 CI: use shorter names that fit in UX tooltipsÆvar Arnfjörð Bjarmason, Nov 19, 2021
  3. Johannes SchindelinNov 19, 2021
  4. Ævar Arnfjörð BjarmasonNov 19, 2021
  5. Victoria DyeNov 19, 2021
  6. Ævar Arnfjörð BjarmasonNov 19, 2021
  7. Victoria DyeNov 19, 2021
  8. Ævar Arnfjörð BjarmasonNov 20, 2021
  9. Junio C HamanoNov 19, 2021
  10. 2/2 CI: rename the "Linux32" job to lower-case "linux32"Ævar Arnfjörð Bjarmason, Nov 19, 2021
  11. Jeff KingNov 19, 2021
  12. Jeff KingNov 19, 2021
  13. Junio C HamanoNov 19, 2021
  14. Ævar Arnfjörð BjarmasonNov 19, 2021
  15. 0/6 CI: Remove Travis CI, shorten names for GH tooltips, split jobsÆvar Arnfjörð Bjarmason, Nov 20, 2021
  16. 1/6 CI: remove Travis CI supportÆvar Arnfjörð Bjarmason, Nov 20, 2021
  17. 2/6 CI: use shorter names that fit in UX tooltipsÆvar Arnfjörð Bjarmason, Nov 20, 2021
  18. Victoria DyeNov 20, 2021
  19. 3/6 CI: rename the "Linux32" job to lower-case "linux32"Ævar Arnfjörð Bjarmason, Nov 20, 2021
  20. 4/6 CI: use "$runs_on_pool", not "$jobname" to select packages & configÆvar Arnfjörð Bjarmason, Nov 20, 2021
  21. 5/6 CI: don't run "make test" twice in one jobÆvar Arnfjörð Bjarmason, Nov 20, 2021
  22. 6/6 CI: run "documentation" via run-build-and-test.shÆvar Arnfjörð Bjarmason, Nov 20, 2021
  23. Johannes SchindelinNov 20, 2021
  24. Ævar Arnfjörð BjarmasonNov 20, 2021
  25. 0/5 CI: Remove Travis CI, shorten names for GH tooltips, split jobsÆvar Arnfjörð Bjarmason, Nov 20, 2021
  26. 1/5 CI: remove Travis CI supportÆvar Arnfjörð Bjarmason, Nov 20, 2021
  27. 2/5 CI: use shorter names that fit in UX tooltipsÆvar Arnfjörð Bjarmason, Nov 20, 2021
  28. Victoria DyeNov 20, 2021
  29. 5/5 CI: don't run "make test" twice in one jobÆvar Arnfjörð Bjarmason, Nov 20, 2021
  30. 4/5 CI: use "$runs_on_pool", not "$jobname" to select packages & configÆvar Arnfjörð Bjarmason, Nov 20, 2021
  31. Junio C HamanoNov 21, 2021
  32. 3/5 CI: rename the "Linux32" job to lower-case "linux32"Ævar Arnfjörð Bjarmason, Nov 20, 2021
  33. 0/5 CI: Remove Travis CI, shorten names for GH tooltips, split jobsÆvar Arnfjörð Bjarmason, Nov 23, 2021
  34. 1/5 CI: remove Travis CI supportÆvar Arnfjörð Bjarmason, Nov 23, 2021
  35. 2/5 CI: use shorter names that fit in UX tooltipsÆvar Arnfjörð Bjarmason, Nov 23, 2021
  36. 4/5 CI: use "$runs_on_pool", not "$jobname" to select packages & configÆvar Arnfjörð Bjarmason, Nov 23, 2021
  37. 3/5 CI: rename the "Linux32" job to lower-case "linux32"Ævar Arnfjörð Bjarmason, Nov 23, 2021
  38. 5/5 CI: don't run "make test" twice in one jobÆvar Arnfjörð Bjarmason, Nov 23, 2021

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.