CI: use "$runs_on_pool", not "$jobname" to select packages & config

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> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Nov 23, 2021 at 17:29 UTC 707d2f2fe8601c1f425be1233a72bac872c0b4b9
3 files changed +29 -28
.github/workflows/main.yml
+4
@@ -227,12 +227,14 @@ jobs:
227 pool: ubuntu-latest
228 - jobname: linux-gcc
229 cc: gcc
230 + cc_package: gcc-8
231 pool: ubuntu-latest
232 - jobname: osx-clang
233 cc: clang
234 pool: macos-latest
235 - jobname: osx-gcc
236 cc: gcc
237 + cc_package: gcc-9
238 pool: macos-latest
239 - jobname: linux-gcc-default
240 cc: gcc
@@ -242,7 +244,9 @@ jobs:
244 pool: ubuntu-latest
245 env:
246 CC: ${{matrix.vector.cc}}
247 + CC_PACKAGE: ${{matrix.vector.cc_package}}
248 jobname: ${{matrix.vector.jobname}}
249 + runs_on_pool: ${{matrix.vector.pool}}
250 runs-on: ${{matrix.vector.pool}}
251 steps:
252 - uses: actions/checkout@v2
ci/install-dependencies.sh
+14 -18
@@ -11,17 +11,11 @@ UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
11 tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
12 libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
13
14 -case "$jobname" in
15 -linux-clang|linux-gcc|linux-leaks)
14 +case "$runs_on_pool" in
15 +ubuntu-latest)
16 sudo apt-get -q update
17 sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
18 - $UBUNTU_COMMON_PKGS
19 - case "$jobname" in
20 - linux-gcc)
21 - sudo apt-get -q -y install gcc-8
22 - ;;
23 - esac
24 -
18 + $UBUNTU_COMMON_PKGS $CC_PACKAGE
19 mkdir --parents "$P4_PATH"
20 pushd "$P4_PATH"
21 wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
@@ -36,7 +30,7 @@ linux-clang|linux-gcc|linux-leaks)
30 cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
31 popd
32 ;;
39 -osx-clang|osx-gcc)
33 +macos-latest)
34 export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
35 # Uncomment this if you want to run perf tests:
36 # brew install gnu-time
@@ -50,15 +44,17 @@ osx-clang|osx-gcc)
44 brew install --cask --no-quarantine perforce
45 } ||
46 brew install homebrew/cask/perforce
53 - case "$jobname" in
54 - osx-gcc)
55 - brew install gcc@9
56 - # Just in case the image is updated to contain gcc@9
57 - # pre-installed but not linked.
58 - brew link gcc@9
59 - ;;
60 - esac
47 +
48 + if test -n "$CC_PACKAGE"
49 + then
50 + BREW_PACKAGE=${CC_PACKAGE/-/@}
51 + brew install "$BREW_PACKAGE"
52 + brew link "$BREW_PACKAGE"
53 + fi
54 ;;
55 +esac
56 +
57 +case "$jobname" in
58 StaticAnalysis)
59 sudo apt-get -q update
60 sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
ci/lib.sh
+11 -10
@@ -156,11 +156,15 @@ export DEFAULT_TEST_TARGET=prove
156 export GIT_TEST_CLONE_2GB=true
157 export SKIP_DASHED_BUILT_INS=YesPlease
158
159 -case "$jobname" in
160 -linux-clang|linux-gcc|linux-leaks)
159 +case "$runs_on_pool" in
160 +ubuntu-latest)
161 + if test "$jobname" = "linux-gcc-default"
162 + then
163 + break
164 + fi
165 +
166 if [ "$jobname" = linux-gcc ]
167 then
163 - export CC=gcc-8
168 MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python3"
169 else
170 MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=/usr/bin/python2"
@@ -180,17 +184,17 @@ linux-clang|linux-gcc|linux-leaks)
184 GIT_LFS_PATH="$HOME/custom/git-lfs"
185 export PATH="$GIT_LFS_PATH:$P4_PATH:$PATH"
186 ;;
183 -osx-clang|osx-gcc)
187 +macos-latest)
188 if [ "$jobname" = osx-gcc ]
189 then
186 - export CC=gcc-9
190 MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
191 else
192 MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
193 fi
194 ;;
192 -linux-gcc-default)
193 - ;;
195 +esac
196 +
197 +case "$jobname" in
198 linux32)
199 CC=gcc
200 ;;
@@ -200,9 +204,6 @@ linux-musl)
204 MAKEFLAGS="$MAKEFLAGS NO_REGEX=Yes ICONV_OMITS_BOM=Yes"
205 MAKEFLAGS="$MAKEFLAGS GIT_TEST_UTF8_LOCALE=C.UTF-8"
206 ;;
203 -esac
204 -
205 -case "$jobname" in
207 linux-leaks)
208 export SANITIZE=leak
209 export GIT_TEST_PASSING_SANITIZE_LEAK=true